프로세스 관리
2024. 1. 15. 15:16ㆍCS/운영체제
프로세스 관리
- 운영체제가 프로세스를 전부 생성하는 것이 아니라!
- 시스템이 부팅된 후 최초의 프로세스만 직접 생성하고 그 다음부터는 이미 존재하는 프로세스가 다른 프로세스를 복제-생성하게 된다. 이때 프로세스를 생성한 프로세스를 부모프로세스, 부모프로세스에 의해 생성된 프로세스는 자식 프로세스라고 한다.
- 결과적으로 프로세스는 트리를 형성한다.
- 현실세계와 다르게 자식프로세스가 먼저 죽고, 부모프로세스는 그 이후에 죽는 구조이다.
프로세스 생성과 종료
- 부모프로세스는 fork() 시스템콜을 통해 자식프로세스를 생성한다.
- fork() 시스템 콜 : fork() 시스템 콜을 통해 생성된 자식 프로세스는 부모프로세스를 복제하기때문에 부모와 동일한 형태를 가진다.
- (단, PID값은 서로 다름!)
- fork() 시스템 콜 : fork() 시스템 콜을 통해 생성된 자식 프로세스는 부모프로세스를 복제하기때문에 부모와 동일한 형태를 가진다.
- 이후, 자식프로세스가 exec() 시스템콜을 호출하면, 생성한 프로세스의 메모리 공간을 새로운 프로그램으로 대체할 수 있다.
- 부모프로세스와 자식프로세스는 Concurrently(동시에) 실행된다.
- 부모프로세스는 wait()를 호출하여 자식이 exit()될때까지 기다린다.
- 자식프로세스는 exit()를 호출할때, 반환된 자식프로세스의 Status는 wait() 시스템콜의 파라미터로 전달된다.
프로세스 종료
- 자발적 종료
- 프로세스는 exit()를 통해 운영체제에게 알려준다.
- 자식 프로세스는 부모에게 output data를 전송한다.
- 또한 프로세스는 종료와 함께 각종 자원을 운영체제에게 반납한다.
- 강제적 종료
- 자식이 할당 자원의 한계치를 넘어서거나, 자식에게 할당된 테스크가 더 이상 필요하지 않는 경우에는
- 부모프로세스가 자식프로세스를 abort()를 통해 강제종료를 진행하게 된다.
추가 알아야할 시스템콜
- wait() 시스템콜
- 자식 프로세스가 종료될때까지 부모프로세스가 기다리며,
- 자식프로세스가 종료되면, 부모프로세스에게 종료상태를 알린다.
- 참고블로그
'CS > 운영체제' 카테고리의 다른 글
프로그램, 프로세스, 프로세스 주소공간, 스레드 (0) | 2024.01.17 |
---|---|
좀비프로세스와 고아프로세스 (0) | 2024.01.15 |
동기식 I/O와 비동기식 I/O의 공통점과 차이점 (1) | 2024.01.11 |
DMA(Direct Memory Access) (0) | 2024.01.11 |
폴링이 뭐야? 인터럽트와 비교되는 개념이라는데? (1) | 2024.01.11 |