운영체제 - Process Management

송은석·2022년 10월 9일
0

KOCW 사이트를 이용하여 듣게 된 반효경 교수님의 운영체제 강의 내용을 간단히 정리하여 포스팅합니다.


Ctrl + Shift + Esc

윈도우에서 ctrl + shift + esc 를 누르면 작업 관리자가 뜨고, 프로세스 항목에서 실행되고 있는 프로세스들을 볼 수 있다. 이 때, 아래 크롬 애플리케이션이 여러 항목으로 나뉘어 각자의 메모리를 가지고 분리되어 있는 것을 볼 수 있다. 이는 처음의 크롬 프로세스에서 여러 개의 프로세스가 생성된 것이며, 이를 부모 프로세스에서 자식 프로세스가 생성되었다고 표현할 수 있다.



"복제"를 통한 자식 프로세스 생성

부모 프로세스는 "복제"를 통해 자식 프로세스를 생성할 수 있다. 이 때 운영체제가 이 복제를 수행하는데, forkexec의 2가지 방식으로 수행한다.

먼저 fork는 해당 명령어가 수행된 시점의 부모 프로세스의 컨텍스트들을 모두 복제하여 자식 프로세스를 만듦으로, 부모 프로세스와 같은 흐름을 가진 자식 프로세스를 만들도록 한다. 따라서 코드 상으로 보았을 때도 자식 프로세스는 fork 명령이 수행된 바로 다음의 코드로 부터 프로세스를 시작하게 된다.
두번째로는 exec를 통한 방식이 있다. 이는 fork가 부모 프로세스의 흐름을 동일하게 따라간 것과는 달리 새로운 프로세스를 생성한 것이다. 부모 프로세스와의 연결이 완전히 끊긴 새로운 프로세스를 만든 것이므로 한 번 실행 시 부모 프로세스에 다시 연결될 수 없다.


shell을 통해 보는 wait

부모와 자식 프로세스가 있을 때, 부모 프로세스를 sleep 시킨 후에 자식 프로세스가 task를 완료시킨 후 부모 프로세스를 다시 깨우는 식의 동작이 수행될 수 있다. 이는 wait를 통해 수행될 수 있다.
간단한 예로, shell 창에서 어떤 프로그램을 켰을 때 프로그램이 실행되고 종료된 후에 다시 쉘의 커맨드 창이 작동하는 것을 그 예로 들 수 있다.

위 사진과 같이 echo를 실행시킬 때 shell은 잠시 sleep이 되었다가, echo가 종료되고 난 뒤 다시 깨어나 작동하게 된다.



협력하는 프로세스

원칙상 프로세스는 독립적인 주소 공간을 가지게 되므로 협력할 수 없지만, 특정 매커니즘을 통하여 협력할 수 있다. 이처럼 프로세스 간 협력하는 매커니즘을 IPC(Interprocess Communication) 라고 한다. IPC의 2가지 방식을 살펴본다.

1) Message Passing

  • 메시지를 전달하는 방법으로, 커널에 메시지를 전달하여 이를 다른 프로세스가 받아볼 수 있도록 하는 것이다. 통신하려는 프로세스를 명시하여 전달하는 Direct Communication과 mailbox나 port를 통해 간접적으로 전달하는 Indirect Communication이 있다.

2) Shared Memory

  • 메모리 주소 공간을 공유하는 방법으로, 공유하는 프로세스 간의 높은 신뢰 관계가 요구 된다. 메모리가 공유되도록 메모리를 매핑시키는 방식이다.



참고

강의 | 운영체제(2014, 이화여대), 반효경
profile
Done is better than perfect🔥

0개의 댓글