우보천리 개발

[OS] 프로세스 생성과 협력 개요 본문

Computer Science/운영체제

[OS] 프로세스 생성과 협력 개요

밥은답 2023. 5. 15. 17:21
반응형

프로세스의 생성

프로세스는 실행 중에 생성 호출을 이용해서 새로운 프로세스를 생성하는데 부모-자식 관계를 유지하며 생성이된다.

생성된 프로세스는 자식 프로세스, 생성한 프로세스는 부모 프로세스이다.

프로세스에서의 생성은 우선 부모 프로세스를 복제한다. 

fork() 시스템 콜을 통해서 새로운 복제된 프로세스를 생성한다.

 

복제된 프로세스는 부모 프로세스의 자원을 공유할 수 있고 또는 자신만의 자원을 사용할 수 있다.

부모 프로세스는 자식 프로세스와 동시에 실행 될 수 있고 

두번째로는 자식 프로세스의 종료를 기다린 이후 실행 될 수 있다.( wait())

 

fork 함수를 사용한 이후 exec() 를 실행하면 자식 프로세스를 부모와 다른 별도의 프로그램 프로세스 주소 공간으로 덮어쓴다.

 

부모 프로세스는 fork() 의 반환값을 양수를 반환하지만, 자식 프로세스는 fork()의 반환값이 0이다.

 

fork()의 경우 자식 프로세스는 fork 함수 이후의 라인부터 실행하지만 fork() 이후 exec()를 했다면 새로운 프로세스의 main 함수부터

실행하게 된다.

 

프로세스의 종료

프로세스가 함수의 마지막 명령어를 실행하면 프로세스를 종료 요청을 한다. 또는 exit()를 만나면 종료를 요청한다

프로세스가 종료 될 때, 자식 프로세스 부터 종료를 하고 부모 프로세스가 종료된다. 그렇기 때문에 부모 프로세스는 

wait()을 통해서 자식 프로세스가 종료 될 때 까지 기다리고, 이후 종료된다.

 

자식 프로세스는 종료되면서 자신의 자원과 식별자를 부모에게 반납하기 때문에 부모 프로세스는 어떤 자식 프로세스가 종료 되었는지

알 수 있다.

 

부모 프로세스는 자식 프로세스가 할당 이상의 자원을 사용하거나, 자식 프로세스가 할 일이 더이상 없을 때 자식 프로세스를 종료 시킨다.

보통 부모 프로세스를 종료하면 자식 프로세스 또한 필요하지 않게 되며 운영체제에서는 자식 프로세스도 종료하고, 이를 연속 종료라고 함

 

프로세스 제거

프로세스 제거는 프로세스가 사용한 자원을 시스템에게 반환하고 완전히 파괴되는 것이다.

부모 프로세스가 제거디ㅗ면 자식 프로세스도 파괴된다.

 

프로세스 중단과 재시작

프로세서는 I/O 보다 빠르기 때문에 유휴시간이 발생하기 마련이다.

그렇기 때문에 프로세스의 중단을 사용하며 여러개의 프로세스를 번갈아가며 실행하며 유휴시간을 해결 할 수 있다.

중단된 프로세스에서 중단된 원인을 제거하겨 다시 시작하는 것은 재시작이라고 한다.

 

프로세스간 협력

프로세스 간의 협력을 Inter Process Comunication (IPC) 라고 한다

프로세스는 서로 직접적으로 통신을 하지 못하기 때문에 Message Passing 또는 Shared Memory를 통해서 

메시지를 교환한다.

 

Message Passing에서는 공유변수를 사용하지 않고 커널을 통해서 메시지를 전달한다

Shared Memory는 일부 주소를 공유하는 방식이다.

 

 

 

 

반응형

'Computer Science > 운영체제' 카테고리의 다른 글

[OS] DeadLock  (0) 2023.05.25
[OS] 스케줄링 알고리즘  (0) 2023.05.17
[OS] 프로세스 스케줄링  (0) 2023.05.16
[OS] Thread, Multi-Process, Multi-Thread  (1) 2023.05.13
[OS] 프로세스와 문맥교환  (0) 2023.04.24
Comments