프로세스 생성과 소멸

운영체제

2020. 5. 5. 19:45

1. 프로세스는 프로세스에 의해서 만들어진다

  • 부모 프로세스 (Parent Process) : 다른 프로세스를 생성한 프로세스
  • 자식 프로세스 (Child Process) : 다른 프로세스에 의해 생성된 프로세스
  • 형제 프로세스 (Sibling Process) : 부모가 동일한 프로세스들간의 관계
  • 프로세스 트리 (Process Tree) : 부모 - 자식 관계를 트리형태로 나타낼 수 있음

 

2. 프로세스의 생성 순서

[그림] 리눅스 프로세스 트리

  • OS : 부팅 후 OS가 메모리에 올라오고 Init(UNIX 기준 이름)이라는 최초의 프로세스를 생성함
  • Init : Init이 생성된 이후에 스스로 다양한 프로세스를 생성한다.
  • 그 이후 : Init의 자식 프로세스들이 또 자신들의 자식프로세스를 생성한다.

 

3. PID (Process Identifier)

  • 프로세스의 주민등록번호와 같음 (Process ID)
  • 주로 Unsigned Integer으로 가지며 생성된 순서대로 0부터 n까지의 번호를 가짐
  • 자연스럽게 최초의 프로세스인 Init은 0번 프로세스가 됨.
  • 42억개를 넘을일은 없지만 만약 넘어가면 종료된 프로세스로 인해 빈 번호를 받음
  • 프로세스 아이디는 절대 중복되어서는 안됨 (한 프로세스가 종료되었다고해서 당겨지지 않음)
  • 주민등록번호를 생각하면 쉬움. 앞사람이 죽었다고 내 주민등록번호가 당겨지지는 않음
  • cf. PPID : Parent Process ID의 약자로 부모의 PID를 의미한다

 

4. Creation System Call (fork, exec)

  • fork() : 새로운 프로세스를 만들어내는 System Call임 (포크처럼 생겨서 fork임)
  • exec() : 만들어진 프로세스에 디스크에 있는 실행파일을 복사함
  • 이외에도 많은 시스템 콜이 있지만 유닉스 시스템 프로그래밍 과목에서 더 배울 것임

 

5. 작업관리자를 켜보자

[그림] 윈도우즈 작업관리자

  • 작업관리자를 보면 지금 우리의 컴퓨터에 어떤 프로세스들이 있는지 볼수 있다
  • System Idle Process (시스템 유휴 프로세스)가 Windows에서는 Init 프로세스에 해당한다 (PID = 0)
  • 이름, PID, Status(프로세스 상태, New, Ready, Running, Waiting, Terminated 등)을 확인 할 수 있고
  • User name은 프로세스 주인 (시스템/유저), CPU는 사용한 CPU시간, Memory는 할당된 메모리등을 나태냄

 

[그림] 리눅스 우분투 프로세스 관리자

  • 위 그림은 리눅스 우분투 운영체제에서 ps (Process Status)를 호출했을 때 나타나는 화면이다.
  • UID는 유저아이디 (0 : System, 1000 : User), PID는 프로세스 아이디, PPID는 부모 아이디 등을 나타냄
  • PRI는 우선순위 (Priority)를 나타내고, Time은 사용한 CPU time을 나타내는 등 모습이 보인다.

 

6. Termination System Call

  • exit() : 해당 프로세스가 종료되고, 가졌던 모든 자원(메모리, 파일, IO등)을 OS에게 반환함
  • 모든 자원이 OS에게 반환되었기 때문에 프로세스가 종료되고 나서 OS가 다시 메모리 공간을
  • 다른 프로세스에게 할당해줄 수 있고, 정당한 요청인 경우 파일도 다른 프로세스에게 할당해줌

 

7. Reference

 

운영체제

운영체제의 정의 및 역할 등에 대해 알아보고, 운영체제의 주요 요소들, 즉 프로세스 관리, 주기억장치 관리, 파일 시스템 등에 대해 공부한다.

www.kocw.net