일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 윤성우
- IPC
- 열혈
- direct communication
- interprocess communication
- 데이터구조
- 큐
- indirect communication
- DS
- process
- Queue
- 프로토콜 체계
- linked list
- 데이타구조
- tcp
- 스케듈링
- stack
- 스택
- socket
- OS
- 자료구조
- 운영체제
- Operating System
- C
- 링크드리스트
- Process scheduling
- Data Structure
- 프로세스
- System Structures
- operating
- Today
- Total
미래와 연결될 첫걸음
Operations on Processes #3.3 본문
대부분 system에서는 Process가 동시에 실행되고 있잖아요?
근데 우리는 잘 모르고 있는 사이 process는 만들어지고 또 지워지기도 합니다. process 만들어지고 없어지는 mechanism이 있는데요.
이 장에서는 process가 만들어지는 것과 종료되는 것을 한 번 보려고 합니다!(UNIX와 Windows sytem기반입니다.)
실습은 나중에 다시 올리겠습니다.
● Process Creation
Process 실행 과정에는 Process가 만들어지기도 한다고 했는데, 새롭게 만들어지는 new process를 children process라고 하고, 기존에 있던 process를 parent process라고 합니다. 이 new process가 또 새로운 process를 만들 수도 있겠죠? 이런 식으로 process는 tree형태를 가지고 있습니다. 대부분 OS(UNIX, Linux 등)은 process에 고유의 pid(process identifier)를 줍니다. 이는 순서를 나타내고 어떤 process에 접근 할 때에도 사용됩니다.
( ★그림에 대한 보충 설명★
이 그림은 Linux 기반 tree of processes라서 다른 OS에서는 다를 수 있습니다.
init process : pid = 1 일 것을 볼 수가 있는데요. init process의 pid는 항상 '1'입니다. system이 부팅되면서 만들어 질 수 있습니다.
init process 밑에 'kthreadd' process와 'sshd' process를 볼 수 있는데요. kthreadd 는 kernel 관련 process를 만듭니다. 'khelper'와 'pdflush'가 있네요! sshd 는 ssh(secure shell)를 사용하는 system과 Clinets를 연결해주는 역활을 합니다.
login은 clients가 system에 로그온하도록 해주는 역활을 합니다. 그 아래 new process로는 'ps'와 'emacs'가 있네요! )
New process(child process)가 만들어지게 되면, 이 process도 어떠한 실행을 하기 위해 CPU time, 이나 memory 등 resources가 필요할 것입니다. 이러한 resources 가질 수 있도록 OS가 도와주거나, parent process의 resource들 일부를 가지고 있을 수도 있습니다.
New process가 만들어지면, 2가지 모습으로 실행이 진행됩니다.
1. Parent process와 child process가 동시에 실행을 진행합니다.
2. Parent process는 child process가 종료될 때까지 기다렸다가 이후에 parent process를 실행합니다.
또, New process가 만들어지면, 2가지 모습으로 new process에 resource가 생기게 되는데요.
1. New Process(child process)는 parent process가 복제(duplicate)된 data와 program 등이 생깁니다.
2. New Process에 새로운 Program이 load됩니다.
이에 대한 실습 다음에 해보도록 하겠습니다.
● Process termination
어떤 한 process는 자기 할 일이 다 끝이 났을 때 또는, OS가 system call을 사용하여 강제로 process를 지울 때 종료됩니다.
종료 될 때에는, status value을 return하면서 종료됩니다.(호랑이가 죽으면서 가죽을 남기는 것처럼... ㅎㅎ;;)
Process가 종료 될 때, 좀 특이한 상황이 있는데요.
child process가 종료될 때를 살펴봅시다. child process가 언제 종료가 되는냐?
1. Child process가 할당된 resoures의 사용을 초과 할 때
2. Child process에 할당된 task가 더 이상 필요하지 않을 때
3. Parent process는 종료되었는데, child process가 종료되지 않아서 OS가 알아서 종료시킬 때
이러한 상황일 때, 위에서 언급했듯이 child process는 parent process에게 status value를 넘기고 종료됩니다.
3번 상황에 잠시 주목할 건데요, Parent process는 종료되었는데, child process가 종료되지 않는 경우가 종종 있습니다.
이러한 child process를 zimbie process라고 합니다. 이 process를 종료시킬 방법이 없는거에요... 좀비처럼. 그래서 OS가 이 좀비를 종료시켜줍니다.
'Infra > OS' 카테고리의 다른 글
#2.3 System Structures - System Calls (0) | 2022.01.12 |
---|---|
#2.1 System Structures - OS services (0) | 2022.01.10 |
Interprocess Communication(IPC) #3.4 Message-Passing 1 (0) | 2019.07.01 |
Interprocess Communication(IPC) #3.4 Shared Memory (0) | 2019.06.29 |
Interprocess Communication(IPC) #3.4 (1) | 2019.06.29 |