1. Process란?
- 프로세스는 실행된 프로그램의 인스턴스로써 각각은 PID로 구분한다
# Address space
1) Code : 프로그램의 Code가 저장되고 PC register가 가리킴으로써 순차적으로 코드가 실행됨
2) Data : 전역변수가 저장
3) Stack : Temporary data(params, local vars, return address 등)이 저장, SP register가 가리킴
4) Heap : Dynamic하게 할당되는 공간, 예를 들어 malloc으로 할당되는 공간
2. Process State Transition
* scheduler : ready state인 프로세스를 고르는 Module
* process hierarchy
- 프로세스는 또 다른 프로세스를 생성할 수 있다
- 즉, 트리 형태로 이루어지게 되며 시작 프로세스(Init Process)는 OS가 만들어 놓는다
3. 프로세스 생성
- fork() : 현재 프로세스를 똑같이 복사하여 새로운 프로세스를 만든다
* 자식 프로세스는 부모의 address space를 복제받는다
* 부모 프로세스는 대부분의 resource와 privilege를 상속한다
- return
1) 생성 성공 시, 부모에게는 자식의 PID, 자식은 0
2) 생성 실패 시, 부모에게는 -1, 자식은 errno
- fork()시 child는 fork() 다음 instruction부터 실행
4. Replace Process Image
- exec() family : 현재 실행되고 있는 프로세스의 address space를 날리고(?) 요청한 프로그램으로 재시작
ex) 탐색기에서 롤 실행
> 탐색기라는 프로세스에서 롤을 클릭하면, 탐색기 프로세스를 복제한 뒤
> 새로 만들어진 탐색기 프로세스에서 exec()를 사용하여 롤 프로그램으로 replace
5. Process termination
1) 종류
- exit() : 스스로 죽
- abort(), kill() : 다른 process를 죽
- wait() : 자식 프로세스가 끝날 때까지 기다렸다가 반환값을 받고 종료함
2) 프로세스
- Zombie 프로세스 : terminate되었지만 부모가 wait()를 호출하지 않았을 때
해당 프로세스의 실행 결과는 alive 상태로 남음
- Orphan 프로세스 : 실행 중에 부모가 죽은 프로세스
* Orphan 프로세스가 생기지 않게 하기 위해 OS는...
Cascading termination | 부모 프로세스가 죽으면 자식 프로세스를 모두 죽임 |
Reparenting | 다른 프로세스의 자식 프로세스로 만들어줌 (다양한 방식이 있지만 보통 Init 프로세스의 자식으로) |
'CS > OS' 카테고리의 다른 글
[OS] CPU, Processor, Core, Process, Thread 그리고 관계 정리 (0) | 2020.11.04 |
---|---|
[OS] 5. Thread (0) | 2020.11.03 |
[OS] 4. 프로세스(2) (0) | 2020.11.02 |
[OS] 2. 시스템 구조 (0) | 2020.10.28 |
[OS] 1. 개요 (0) | 2020.10.28 |