728x90
Process 의 생성
- 부모 프로세스가 자식 프로세스를 생성한다.
- 프로세스들은 트리 구조 형성하게 된다.
- 프로세스는 자원을 필요로 한다. 자원은 운영체제로부터 받으며, 부모 프로세스와 자식 프로세스가 일반적으로 공유하지 않는다. 프로세스들끼리는 별개의 프로세스이므로 자원을 위해 경쟁을 하게 되는 것이 일반적이기 때문이다.
- 수행
- 부모와 자식이 공존하며 수행하는 모델
- 자식이 종료될 때가지 부모가 기다리는 모델 - 주소 공간
- 자식은 부모의 공간을 복사한다. : process의 문맥 (주소공간인 코드 데이터 스택, PC)을 그대로 복사한다.
- 마치 과제할 때 기존에 레포트 템플릿이 있으면 복사하고 일부 수정해서 쓰는 것처럼, 효율적일 것이다.
- 자식은 그 공간에 새로운 프로그램을 올린다. - UNIX 예시
- fork() 시스템 콜이 새로운 프로세스를 생성한다.
- fork 다음에 이어지는 exec() 시스템 콜을 통해 새로운 프로그램을 메모리에 올림 - 자원의 공유
- 부모와 자식이 모든 자원을 공유하는 모델
- 일부를 공유하는 모델
- 전혀 공유하지 않는 모델
- 부모와 자식의 내용이 완전히 똑같다면, 공유할 수 있을 것이다 그렇지만 각자 실행하면서 stack 에 쌓이는 함수의 실행 순서가 달라지는 등, 문맥이 달라질 수 있다. 이런 경우 각자 자원을 사용할 필요가 있다. write 가 발생했을 때 (내용이 바뀔 때) copy하겠다는 뜻 (Copy-on-Write 기법)
프로세스 종료
- 프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려준다. (exit() 시스템 콜)
- 자식프로세스는 부모프로세스에게 output data를 보낸다. - 부모 프로세스가 자식의 수행을 강제 종료시키는 경우 (abort)
- 자식이 할당할 수 있는 자원의 한계치를 넘어서는 경우
- 자식에게 할당된 태스크가 더이상 필요하지 않은 경우
- 부모가 종료 exit 하는 경우, 운영체제는 자식 프로세스들이 더 이상 수행되도록 두지 않는다.
728x90
'Computer Science > 운영체제' 카테고리의 다른 글
[운영체제] 9 (2) Process Management (0) | 2023.06.25 |
---|---|
[운영체제] 9. 시스템 콜의 종류 - fork() , exec(), wait(), exit() (0) | 2023.06.25 |
[운영체제] 7. Process 3 - Thread의 장점 2 (0) | 2023.06.18 |
[운영체제] 6. Process (2) - Thread와 Thread의 장점 (0) | 2023.06.18 |
[OS] 운영체제 6 Process Synchronization & Race Condition (0) | 2023.05.28 |