ecsimsw
Process / Thread 본문
Process creation / termination
- 프로세스는 프로세스에 의해 생성된다.
- 운영체제가 init (PID =1) 프로세스를 만들어두고, 그 프로세스가 자식의 자식을 낳아 트리를 형성한다.
** 모든 프로세스는 고유의 ID (PID)를 갖는다.
fork : 새로운 프로세스 생성
exec : 메모리 공간을 새로운 프로그램으로 교체
exit : 프로세스 종료
Zombie process / Orphan process
Orphan process : 부모 프로세스와 자식 프로세스는 항상 짝을 이뤄야한다. 부모 프로세스가 자식 프로세스보다 먼저 소멸할 경우 자식은 부모를 잃고 orphan process가 된다.
- orphan phan process는 kernel에 의해 init 프로세스를 부모 프로세스로 갖게 된다. 즉 종료되는 프로세스가 생길 경우 해당 프로세스의 자식 프로세스가 있다면 이 자식 프로세스의 PPID (부모 프로세스 ID)를 1로 바꾼다.
Zombie process : 프로세스는 종료 시 부모 프로세스에 종료 정보를 보내고, 부모는 프로세스 테이블에서 해당 프로세스를 지워야한다. 이때, 자식 프로세스가 자원을 이미 반납했지만 부모에게는 정보가 전달되지 않아 프로세스 테이블에만 남아있는 프로세스가 있을 수 있다. 이것을 zombie process라고 한다.
- zombie process는 부모 프로세스가 wait 과 같은 자식 프로세스의 상태를 확인하는 시스템 콜을 통해 처리한다.
Thread
- 현대식 컴퓨터에는 Context 단위가 프로세스가 아닌 스레드 단위로 이뤄진다. 스레드는 프로세스 내에서 실행되는 세부 작업 단위로, 한 프로세스 내에서 여러 스레드가 파생된다.
- 한 프로세스 내에서 파생된 스레드는 Code와 Data 공간을 공유한다. 프로세스 자체에서 다루고 있는 File, I/O devices를 공유하고, switching에 필요한 자원, stact 영역, pc / sp/ register 값은 공유하지 않는다.
'Computer Science > Operating system' 카테고리의 다른 글
Semaphore (0) | 2019.10.02 |
---|---|
Process Synchronization (0) | 2019.09.26 |
Cpu scheduling (0) | 2019.09.24 |
Process Management / job queue (0) | 2019.09.23 |
Interrupt (0) | 2019.09.23 |