DeadLock 둘 이상의 thread가 각기 다른 thread가 점유하고 있는 자원을 서로 기다릴 때, 무한 대기에 빠지는 상황을 말한다. deadlock이 발생하는 조건은 상호 배제(mutual exclusion), 점유 대기(hold-and-wait), 비선점(no preemption), 순환 대기(circular wait)이다. 이 4가지 조건이 동시에 성립할 때 발생할 수 있다. deadlock 문제를 해결하는 방법에는 무시, 예방, 회피, 탐지-회복의 4가지 방법이 있다. Deadlock이 발생하는 조건 상호 배제(mutal exclusion) 동시에 한 thread만 자원을 점유할 수 있는 상황이다. 다른 thread가 자원을 사용하려면 자원이 방출될 때까지 기다려야 한다. 점유 대기(hol..
PCB와 TCB PCB(Process Control Block) Process는 자신에 관한 정보를 하나의 데이터 구조에 저장하여 관리한다. 이를 PCB라고 부른다. TCB(Thread Control Block) 하나의 Thread를 관리하는데 필요한 정보를 담고 있는 구조체이다. 프로세스의 상태를 관리하는 PCB보다 적은 양의 정보가 담겨있다. Context 프로세스의 경우 현재 프로세스가 중단 되었을 때, 중단된 시점 부터 다시 프로세스를 실행하기 위한 정보를 말한다. 이는 PCB라는 구조체에 저장된다. Scheduling 스케줄링은 "자원"에 "작업"을 할당하는 행위이다. 자원은 프로세서, 네트워크 연결, 외부 장치 등을 의미하고, 작업은 thread, process 혹은 data flows를 의미..
동기화 문제 동기화 문제란 서로 다른 process/thread가 동일한 자원에 동시에 접근하여 엉뚱한 값을 읽거나 수정하는 문제이다. 한 순간에 하나의 process/thread만 해당 자원에 접근하고 조작할 수 있도록 보장해야 한다. 다시 말해서 process/thread들이 동기화되도록 할 필요가 있다. 임계 영역 둘 이상의 process/thread가 동시에 동일한 자원에 접근하도록 하는 프로그램 코드 부분을 의미한다. 임계 구역의 원자성을 보장하기 위해 임계구역으로 진입 허가를 요청하는 부분을 entry section이라고 하고, 임계 영역이 끝나고나면 exit section으로 퇴출하게 된다. 대표적인 동기화 방법으로 Mutex와 Semaphore가 있다. Mutex mutal exclusio..
process는 각자 자신만의 독립적인 주소공간을 가져, 다른 process가 이 주소공간을 참조하는 것을 허용하지 않는다. 그렇기 때문에 다른 process와 데이터를 주고받을 수 없다. 이를 해결하기 위해 운영체제는 IPC 기법을 통해 process들 간에 통신을 가능하게 해준다. IPC(Inter-Process Communication) process간 통신(IPC)에는 기본적으로 공유메모리(shared memory)와 메시지 전달(message passing)의 두 가지 모델이 있다. 공유메모리(shared memory) process들이 주소 공간의 일부를 공유한다. 공유한 메모리 영역에 읽기/쓰기를 통해서 통신을 수행한다. process가 공유 메모리 할당을 kernel에 요청하면 kernel..
멀티 프로세스와 멀티 스레드는 모두 한 어플리케이션에 대한 처리방식이다. 멀티 프로세스 운영체제에서 하나의 응용 프로그램에 대해 동시에 여러 개의 프로세스를 실행할 수 있게 하는 기술을 말한다. 보통 하나의 프로그램 실행에 대해 하나의 프로세스가 메모리에 생성되지만, 부가적인 기능을 위해 여러개의 프로세스르 생성하는 것이다. ✖️ 멀티 프로세스는 하나의 프로그램에서 여러 개의 프로세스를 실행하는 것을 의미하고, 멀티 프로세서는 여러 개의 CPU 코어가 하나의 시스템에서 동시에 실행되는 것을 의미한다. 멀티 스레드 하나의 프로세스 안에 안에 여러개의 스레드가 있는 것을 말한다. 하나의 프로그램에서 두가지 이상의 동작을 동시에 처리하도록 하는 행위가 가능해진다. 멀티 프로세스 vs 멀티 스레드 multi t..
프로세스 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 특징 운영체제로부터 독립된 메모리 영역을 할당받는다. 다른 프로세스의 자원에 접근하지 않음! 프로세스들은 독립적이기 때문에 통신하기 위해 IPC를 사용해야 한다. 프로세스는 최소 1개의 쓰레드(메인 쓰레드)를 가지고 있다. 문제점 프로세스 생성에 큰 오버헤드가 있다. (프로세스를 생성할 때 많은 시간이 소요됨) 프로세스 컨텍스트 스위칭의 비효율성, 오버헤드가 큼 프로세스 사이에 통신이 어렵다는 점 (IPC 사용해야 함) 쓰레드 프로세스 내에서 할당받은 자원을 이용해 동작하는 실행 단위 출현 목적 프로세스보다 크기가 작은 실행 단위 필요 프로세스의 생성 및 소멸에 따른 오버헤드 감소 빠른 컨텍스트 스위칭 프로세스들의 통신 시간, 방법 어려움 해소 ..