Computer Science/OS

    뮤텍스(Mutex), 세마포어(Semaphore)

    뮤텍스(Mutex), 세마포어(Semaphore)

    이전 프로세스 동기화 에서 프로세스 혹은 스레드가 공유 리소스에 동시에 접근하는 경우 공유 리소스에 대한 데이터 불일치 문제가 발생하고, 동기화를 통해 공유 리소스에 대한 데이터 일관성을 유지할 수 있는 것을 확인했다. 그리고, 이런 공유 리소스에 접근하기 위해 프로세스끼리 경쟁하는 것을 경쟁 상태(Race Condition), 공유 리소스에 접근하며 실제 동기화 문제가 발생하는 영역을 임계 영역( Critical Section)이라 했다. 마지막으로 임계 영역 문제를 해결하기 위해선 반드시 3가지 조건이 충족되어야 한다고 했다. Mutual Exclusion (상호 배제) : 임계 영역에는 반드시 하나의 프로세스만 실행되어야 한다. Progress (진행) : 임계 영역이 비어있는 상태라면 대기하고 있..

    프로세스 동기화 (Process Synchonization)

    프로세스 동기화 (Process Synchonization)

    프로세스 동기화 영화 좌석을 예매할 때 하나의 좌석에 동시에 여러 사람이 접근할 수도 있다. 이 때, 좌석에 대해 동기화 문제가 해결되지 않는다면, 한 좌석을 여러사람이 예매하는 문제가 발생할 것이다. 프로세스 동기화는 여러 개의 프로세스(스레드)가 컴퓨터 내의 공유된 리소스에 접근하는 경우에 데이터의 일관성을 유지하기 위한 방식을 의미한다. 경쟁 상태 (Race Condition)과 임계 영역(Critical Section) 은행을 예시로 생각해보자. 은행에서 하나의 계좌에는 입금과 출금을 할 수 있다. 만약 동시에 하나의 계좌에서 입금과 출금이 동시에 이뤄진다면 어떻게 될까 ? 현재 Zayson의 통장에는 잔고가 1000원 남아있다. Process A가 1000원을 입금했다. 동시에 Process B..

    동기와 비동기, 블로킹과 논블로킹

    동기와 비동기, 블로킹과 논블로킹

    동기와 비동기, 블로킹과 논블로킹을 처음 접할 때는 서로가 비슷하다고 생각한다. 결론부터 말하면 동기와 비동기, 블로킹과 논블로킹은 바라보는 관점 자체가 다르다. 동기와 비동기가 바라보는 관점은 결과값을 기다리는 지 여부이다. 결과값의 기다림 : 함수 호출자와 피호출자가 있을 때 함수 호출자가 피호출자가 주는 결과를 전달 받기 전까지 기다리는 것을 의미한다. 블로킹과 논블로킹의 관점은 제어권의 여부이다. 제어권 : 코드를 실행하는 권리와 비슷하다. 제어권을 가진 함수는 자신의 코드를 실행할 수 있다. 동기 (Synchronous) 동기의 키포인트는 결과값을 기다린다는 것이다. 따라서, 호출자는 피호출자가 로직을 처리하고 결과값을 전달해줄 때 까지 기다린다. 비동기 (Asynchronous) 비동기의 키포..

    프로세스, 스레드

    프로세스, 스레드

    프로세스 (Process) 프로그램은 실행중이지 않은 정적인 상태의 코드 파일이다. 운영체제는 프로그램을 실행 시키고 메모리에 올리는데 이를 프로세스라고 한다. 즉, 프로세스는 메모리에서 실행중인 프로그램의 작업이다. 프로세스는 프로그램이 메모리에 올라갈 때 독립된 메모리 영역을 할당(Code, Data, Heap, Stack) 받고 PCB라는 프로세스를 정보를 담는 블록을 받는다. 메모리 Code : 프로그램의 명령을 구성하는 코드 자체 메모리 영역 Data : static과 같은 정적 변수, 전역 변수, 배열 등을 갖는 영역 Heap : new 키워드 같은 동적으로 할당 되는 메모리 영역 Stack : 지역 변수, 파라미터, 리턴 값을 관리하는 메모리 영역 스레드 (Thread) 스레드는 프로세스의 ..