[OS] 02. Process

nick·2024년 3월 13일

OS

목록 보기
2/4

해당 내용은 아주대학교 '김상훈' 교수님의
'운영체제' 수업을 바탕으로 작성되었습니다.

[목차]
1. Process란?
2. Program → Process
3. 프로세스의 5가지 상태
4. Process Hierarchy
5. Process Creation - fork()
6. Replace Process Image - exec()
7. Process Termination
8. Process 구현


1. Process란?

  • 실행 프로그램의 instance
  • 각 프로세스는 고유한 ID가 있다 (PID)

2. Program → Process

address space

  • disk에 저장된 Program의 code와 data는 main memory로 가져와야 실행할 수 있다
  • 각 프로세스는 고유한 address space가 주어진다
  • 프로세스는 이 address space의 주소만 접근할 수 있다.

PC

  • Program Counter의 줄임말
  • 프로그램에서 어느 명령어가 실행 중인지 가리키는 register

SP

  • Stack Pointer의 줄임말
  • 함수의 변수와 리턴 주소를 저장하는 스택을 관리하는 register

3. 프로세스의 5가지 상태

process state

  • new : process가 새로 생긴 상태
  • ready : processor에게 할당되기를 기다리는 상태
  • running : instruction이 실행되고 있는 상태
  • blocked : 특정 event가 일어나기를 기다리는 상태
  • exited : 실행이 끝난 상태

4. Process Hierarchy

  • 한 프로세스가 또다른 프로세스를 생성할 수 있다.

  • parent와 child의 관계가 형성되어 결국 프로세스 간의 관계를 tree 구조처럼 나타낼 수 있다


5. Process Creation - fork()

  • 새로운 프로세스를 만들 때 현재 프로세스를 cloning해서 만든다

  • 결국 child process는 parent의 address space를 duplicate 한다
    - (사실 내용을 전부 복사하지 않고 memory를 share하는 방식으로 mapping만 복사한다)

  • fork() 함수를 통해 현재 프로세스에서 새로운 프로세스를 만들 수 있다

  • 다음은 fork() 함수의 리턴 값이다.

    • fork() 실패시 parent process에게 -1 을 return

    • 새로 생긴 child process는 0을 return 받는다

    • parent process는 새로 생성된 child process의 PID를 return 받는다

      parentchild's PID
      child0
      fail-1

6. Replace Process Image - exec()

  • 현재 프로세스의 image를 새로운 process image로 Replace

  • exec() 계열 함수들을 통해 replace

  • exec() 하고나면 기존 address space는 모두 사라지고 새롭게 다시 시작


7. Process Termination

  • process가 죽으면 PIDstatus information을 return한다

  • 이 return 값을 parent가 wait() 함수를 통해 받아줘야 된다

  • parent process에서 wait() 함수는 child process의 return 값을 받기 전까지 계속 blocked 상태에 있다
    - 만약 child process가 죽었지만 아무도 wait() 함수로 return 값을 회수하지 않으면 이 process는 Zombie process가 된다
    - 만약 parent가 wait() 함수를 호출하지 않고 child 보다 먼저 죽는 경우, tree 구조이기에 parent process가 먼저 죽으면 tree 연결이 끊기게 된다. 이렇게 남겨진 child process들을 Orphan process라고 한다.

Orphan process 해결 방법 2가지

  1. Cascading termination
    • parent가 죽으면 딸려 있는 children 모두 terminate ( network에서 주로 사용 )
  2. Reparenting
    • orphan process들을 모두 Init process로 입양 보낸다
    • Init process로 입양 보내는 이유 : Init process는 초기 process로, 주기적으로 wait() 함수를 호출해주기 때문이다.

8. Process 구현

PCB

pcb

  • Process Control Block의 줄임말
  • process와 관련된 정보를 저장하는 자료구조
  • OS는 PCB를 활용해 process를 스케줄링하거나 관리한다

self quiz 링크
https://overjoyed-goldfish-618.notion.site/f81e3c203cff4bfcb5841da8e9bfbc02?pvs=4

profile
티스토리로 이전 : https://andantej99.tistory.com/

0개의 댓글