공부
-
싱글톤패턴(singleton pattern)공부 2016. 6. 26. 23:02
싱글톤패턴이란?먼저 Singleton 패턴의 용도는 하나의 프로그램 내에서 하나의 인스턴스만을 생성해야만 하는 상황에서 쓰인다. 예를 들어 환경설정을 관리하는 클래스나 Connection Pool, Thread Pool과 같이 풀(Pool) 형태로 관리되는 클래스의 경우 프로그램 내에서 단 하나의 인스턴스로 관리되는 것이 일반적이며, 이 때 Singleton 패턴을 적용하는 것이 일반적인 경우라고 볼 수 있다. public class Singleton { private static Singleton singleton = new Singleton(); protected Singleton() { System.out.println("Maked Singleton"); } public static Singleto..
-
Page Replace Algorithm공부/OS 2016. 6. 26. 13:07
Page Replace Algorithm이란?Virtual memory system에서 페이지 부재(page fault)가 발생했을때 주기억장치(메모리)의 모든 페이지 프레임이 사용중이라면 어느 페이지 프레임을 교체할 지 결정하는 알고리즘FIFO(First In First Out)페이지 교체 시, 메모리에 올라온지 가장 오래된 페이지를 내쫓는다.장 점: 가장 간단한 페이지 교체 알고리즘 단 점:가장 오래된 페이지가 초기화 모듈이라면 성능이 저하될 수 있음Belady의 모순(Belady's anomaly)프로세스에게 프레임을 더 주었는데 오히려 페이지 부재율이 더 증가하는 현상OPT(Optimal)앞으로 가장 오랜 동안 사용되지 않을 페이지를 찾아 교체한다 장 점: 모든 알고리즘보다 낮은 페이지 부재율 B..
-
가상 메모리 (virtual memory)공부/OS 2016. 6. 26. 13:00
프로세스와 가상 메모리모든 프로세스는 자신만의 가상 주소 공간을 가지고 있다. 32비트/64비트 프로세스는 각 비트수에 맞게 최대 4GB/16GB의 주소 공간을 가진다.모든 프로세스들은 자신만의 주소 공간을 가지기 때문에, 특정 프로세스 내에서 쓰레드가 수행될 때 해당 쓰레드는 프로세스가 소유하고 있는 메모리에 대해서만 접근이 가능하다. 다른 프로세스에 의해 소유된 메모리는 숨겨져 있으며, 접근이 불가능하다.따라서, A 프로세스가 0x12345678 주소에 무엇인가를 저장하였지만, B 프로세스 역시 0x12345678 주소에 무엇인가를 저장할 수 있으며, 이 주소들은 완전히 독립되어 있는 것이다.즉, 가상 메모리는 프로세스의 logical memory와 physical memory를 분리하기 위해 생겨난..
-
데드락(Deadlock)공부/OS 2016. 6. 25. 22:34
데드락이란?프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태예를 들어 P1과 P2가 리소스 A,B 둘 다를 얻어야 한다고 가정한다. t1(첫 번째 시간)에 P1이 리소스 A를 얻고 P2가 리소스 B를 얻었다면 t2(다음 시간)때 P1은 리소스 B를, P2는 리소스 A를 기다리게 된다. 하지만 서로 원하는 리소스가 상대방에게 할당되어 있기 때문에 이 두 프로세스는 무한정 기다리게 되는데 이러한 상태을 DeadLock상태라고 한다.데드락 발생 조건데드락은 아래 네 가지 조건이 동시에 성립 할 때 발생한다. 즉, 아래의 네 가지 조건 중 하나라도 성립하지 않도록 만든다면 데드락을 해결할 수 있다.상호 배제 (Mutual exclusion)자원은 한 번에 한 프로세스만이 사용할 수 있어야 한다점유 대기..
-
스핀 락(Spin lock), 크리티컬 섹션(Critical section), 세마포어(Semaphore), 뮤텍스(Mutex)공부/OS 2016. 6. 25. 22:33
스핀 락Spin Lock 은 이름이 뜻하는대로, 만약 다른 스레드가 lock을 소유하고 있다면 그 lock이 반환될 때까지 계속 확인하며 기다리는 것이다. "조금만 기다리면 바로 쓸 수 있는데 굳이 컨텍스트 스위칭으로 부하를 줄 필요가 있나?" 라는 컨셉으로 개발된 것으로 크리티컬 섹션에 진입이 불가능할때 컨텍스트 스위칭을 하지 않고 잠시 루프를 돌면서 재시도 하는 것을 말합니다. Lock-Unlcok 과정이 아주 짧아서 락하는 경우가 드문 경우(즉; 적절하게 크리티컬 섹션을 사용한 경우) 유용하다. Spin Lock 은 다음과 같은 특성을 갖는다.Lock을 얻을 수 없다면, 계속해서 Lock을 확인하며 얻을 때까지 기다린다. 이른바 바쁘게 기다리는 busy wating이다.바쁘게 기다린다는 것은 무한 ..
-
OS공부/OS 2016. 6. 25. 22:32
OS란?컴퓨터의 하드웨어와 소프트웨어를 제어하며, 사용자가 컴퓨터를 쓸 수 있게 만들어주는 프로그램OS의 목표어플리케이션을 위한 기본 실행 환경을 제공해 사용자의 프로그램을 정확하게 실행컴퓨터 시스템을 편리하고 효율적이고 안전하게 사용할 수 있게 만듬OS의 관점resouce allocator - 컴퓨터 시스템의 자원(소프트웨어, 하드웨어)를 할당해주고 이것들을 효율적으로 관리control program - 사용자 프로그램 실행과 I/o 장치 실행을 통제한다.kernel - 컴퓨터 운영체계의 가장 중요한 핵심으로서 운영체계의 다른 모든 부분에 여러 가지 기본적인 서비스를 제공한다.멀티 프로세스/ 멀티 테스킹 : 여러 작업은 동 시간에 메인메모리 안에서 유지되고 이러한 프로세스들은 cpu time, I/o ..
-
공인 IP, 사설 IP, 고정 IP, 유동 IP공부 2016. 6. 23. 19:52
1. IP 주소란?먼저 IP 주소가 무엇인지를 알아보자. IP 주소란 위키백과에 다음과 같이 정의되어 있다.IP 주소(Internet Protocol address, 표준어: 인터넷규약주소)는 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호이다. 네트워크에 연결된 장치가 라우터이든 일반 서버이든, 모든 기계는 이 특수한 번호를 가지고 있어야 한다. 이 번호를 이용하여 발신자를 대신하여 메시지가 전송되고 수신자를 향하여 예정된 목적지로 전달된다. IP 주소를 줄여서 IP라고 부르기도 하나 IP는 인터넷 규약 자체를 가리키는 말이기 때문에 엄밀하게는 구별해야 한다.요약하자면 IP 주소란 인터넷에 접속하기 위해 컴퓨터나 스마트폰 등에 부여하는 고유한 주소라고 정의할 수 있..
-
쓰레드(thread)와 프로세스(process)공부 2016. 6. 23. 19:43
Thread란하나의 프로그램내에서 여러 개의 실행 흐름을 두기 위한 모델하나의 프로세서(실행 중인 프로그램)에서 각 독립적인 일의 단위인 스레드(Thread)로 여러 작업을 처리할 수 있다. 즉 하나의 프로세서에서 병렬적으로 여러 개 작업을 처리하기 위해서는 각 작업을 스레드화하여 멀티스레딩이 가능하게 해야 한다.Process란간단하게 말하면 실행중인 프로그램.프로세스는 사용 중인 파일, 데이터, 프로세서의 상태, 메모리 영역 주소 공간, 스레드 정보, 전역 데이터가 저장된 메모리 부분 등 수 많은 자원을 포함하는 개념. 종종 스케쥴링의 대상이 되는 작업이라고 불리기도 함쓰레드와 프로세스의 차이점프로세스는 완벽히 독립적이기 때문에 메모리 영역(Code, Data, Heap, Stack)을 다른 프로세스와..
-
비동기(Async)통신과 동기(Sync)통신공부 2016. 6. 23. 19:26
동기(Sync)동기식 전손은 한 문자 다누이가 아닌 미리 정해진 수 만큼의 문자열을 한 묶음으로 만들어서 일시에 전송하는 방법. 해당 방법에서 데이터와는 별도로 송신 측과 수신 측이 하나의 기준 클럭으로 동기신호를 맞춰 동작함수신측에서는 클럭에 의해 비트를 구별하게 되므로, 동기식 전송을 위해선 데이터와 클럭을 위한 2회선이 필요.송신측에서 2진 데이터들을 정상적인 속도로 내보내면 수신측에서는 클럭의 한사이클 간격으로 데이터를 인식 동기식 전송은 비동기식에 비해 전송효율이 높음수식측에서 비트를 계산해야 하고 문자를 조립하는 별도의 기억장치가 필요해 비동기보다 가격이 높음송신측에서 전송된 데이터를 수식측에서 정확히 수신하기 위해 보내는 측과 받는 측의 각 비트가 동일한 타이밍이 취해져야 하는데, 이때 송수..
-
Kubernetes공부/쿠버네티스&헬름 2015. 11. 14. 21:15
구글에서 공개한 리눅스 컨테이너 관리 시스템.클러스터가 구성된 coreos-docker의 컨테이너들을 집합 개념으로 관리하며 집합이 죽었을 때의 백업, 집합을 관리하는 service를 운영 Kubernetes의 구조 POD: 컨테이너들의 집합- 같은 주소, 컨테이너 2개: A또는 B의 포트를 노출 -> 해당포트로 연결- 호스트가 다르고, 포트가 여러 개 필요하다면? Overlay network로 해결! Overlay network란 물리 네트워크 위에 가상 컴퓨터 네트워크 -기존의 데이터 센터 네트워크 망이 어떻게 구성되어 있던지 Network을 넘어 구성하겠다는 것vxlan이란 L2 Network 확장성을 의미한다. VLAN 기반 네트워크 보다 더욱 많은 Layer 2 Segment 를 구성한다. VL..