본문 바로가기

스레드

(2)
04. Process Management (2/2), 05. CPU Scheduling (1/3) 1. 자원의 공유: 자식이 부모를 그대로 copy하기 때문에 메모리 낭비가 될 수 있음 -> 몇몇 OS에서는 일단 copy하지 않고 공유하고 있음-> 내용이 달라질 때까지 기다림 (Copy-on-Write, COW) 2. fork() 시스템 콜: fork() 수행 시 반환값으로 id를 반환함, fork() 수행한 시점에서 시작함 (Program Counter까지 복사됐기 때문에) 가. id가 0일 경우, 자식나. id가 0이 아닐 경우, 부모 3. exec() 시스템 콜-> execlp(): 인자로 넘겨진 새로운 프로그램을 실행 (일반적으로 자식에게 새로운 프로그램을 덮어씌울 때 사용) 4. wait() 시스템 콜: 호출한 부모는 sleep 상태(block 상태)로 만들고, 자식이 종료할 때까지 기다림 ..
03. Process (2/3), (3/3) 1. Thread: CPU를 이용하는 기본 단위-> 같은 작업을 하는 새로운 프로세스를 만들 경우, 프로세스를 만들기 위한 여러 가지 것들이 중복을 필요하는 문제가 발생-> Thead를 활용하면 Thread에 필요한 부분만 추가로 만들면 됨가. 구성 1) 공유하지 않는 부분(thread 생성 때마다 독립적으로 생기는 부분) 가) program counter나) register set다) stack space2) 공유하는 부분가) code section나) data section다) OS resource나. 특징 1) 다중 스레드로 구성하면 한 스레드가 blocked(wait) 상태일 동안 다른 스레드가 running 상태가 되어 빠르게 처리할 수 있음2) 동일한 일을 수행할 때, 다중 스레드가 협력하여 ..