Process Concept

윤성민·2021년 5월 27일
0
  • 프로세스는 실행중인 프로그램.
    • 운영체제 입장에서는 작업의 단위
    • 프로세스가 실행되기 위해선 자원이 필요하다.
      • CPU time
      • memory
      • files
      • I/O device
  • 프로세스는 메모리 영역에서 multiple section으로 분리된다.
    • Text section - 실행가능한 코드.
    • Data section - 전역 변수.
    • Heap section - 프로그램이 동작하는 동안 동적으로 할당되는 메모리
    • Stack section - 함수를 호출할 때 사용하는 임시 데이터 저장소.


  • 프로세스의 생명 주기

    • New : 프로세스가 생성된 상태.
    • Running: cpu가 프로세스를 수행하는 상태.
    • Waiting: 이벤트가 발생하여 프로세스가 기다리는 상태. (I/O 완료까지 대기하는)
    • Ready : 프로세스가 할당되기를 기다리고 있는 상태.
    • Terminated: 프로세스가 종료되는 상태.
  • PCB(Process Control Block) or TCB (Task Control Block)

    • 각 프로세스는 PCB에 의해 표현된다.
  • PCB는 특정 프로세스와 연관된 많은 정보를 포함한다.

    • Process state : new/ready/waiting 등 프로세스의 상태.
    • Program counter : 프로그램의 주소값 정보.
    • CPU register
    • CPU-scheduling information
    • Memory-management information
    • Accounting information
    • I/O status information

  • 프로세스는 single thread의 실행을 수행하는 프로그램.
  • single thread는 하나의 작업만 수행할 수 있다.
  • 최신 운영 체제에서 프로세스의 개념을 확장함
    • 프로세스에서 여러 개의 실행 스레드를 가질 수 있도록 허용
    • 따라서 한 번에 두 개 이상의 작업을 수행한다.
  • thread는 프로세스의 경량화된 버전이다.
    • 프로세스를 여러개 돌리는 것보다 thread를 다중으로 돌리는 게 낫다.
    • 최근엔 병렬처리를 multi-thread로 처리한다.

Process Scheduling

  • multiprogramming의 목적은

    • process를 항상 실행하여 CPU 사용률을 극대화 하는 것.
  • time sharing의 목적은

    • CPU에 할당되는 프로세스를 자주 변경하면서 유저가 동시에 실행되는 것처럼 느낄 수 있게 한다.
  • Scheduling Queues:

    • 프로세스들은 시스템에 진입할 때, ready queue에 들어가 있다.
    • 프로세스들은 특정 이벤트가 발생하면 wait queue로 들어간다.
    • 이러한 queue들은 일반적으로 PCB의 linked list로 구현되어 있다.

  • Queueing Diagram

    • 프로세스 스케쥴링의 표현 방법

  • Context Switch
    • PCB안에 프로세스의 context가 저장되어 있다.
    • interrupt가 발생하면,
      • 실행되고 있는 프로세스의 context를 저장한다.(program counter)
      • 후에 프로세스가 재개되면 context를 복구할 수 있다.
    • context switch는
      • CPU 코어를 다른 프로세스로 전환한다.
      • 현재 프로세스의 상태 저장을 수행한다.
      • 다른 프로세스의 상태를 복원한다.

  • 운영체제는 다음에 대한 메커니즘을 제공해야 한다.
    • 프로세스 생성
    • 프로세스 종료
  • 프로세스는 새로운 프로세스를 생성할 수 있다.
    • 생성하는 프로세스 : parent process
    • 생성된 프로세스 : child process

프로세스에 대한 작업

  • 프로세스 실행에서 발생할 수 있는 두가지 상태
    • 상위 프로세스와 하위 프로세스가 동시에 계속 실행된다.
    • 상위 프로세스가 하위 프로세스가 종료될 때까지 기다린다.
  • 주소공간에서 발생할 수 있는 두 가지 상태
    • 상위 프로세스를 복제해서(새로운 PCB에) 하위 프로세스를 생성한다.
    • 새로운 프로그램을 불러와 하위 프로세스를 생성한다.

  • 프로세스 종료
    • 마지막 코드(return)가 실행되면 프로세스가 종료된다.
    • exit() system call : (OS에서 삭제하도록 요청한다.)
    • OS는 모든 리소스를 할당 해제하고 회수한다.
    • 할당된 메모리, 파일 열기, I/O 버퍼
  • Zombi and Orphan
    • 좀비 프로세스 : 프로세스가 종료되었지만, 부모 프로세스가 wait() system call을 하지 않은 프로세스.
      • 커널은 프로세스가 종료되었더라도 최소한의 정보(프로세스 ID, 프로세스 종료 상태) 등을 가지고 있게 된다. 이러한 정보들이 zombie 프로세스이다. wait() system call을 통해 좀비 프로세스의 종료 상태를 회수 할 수 있다.
    • 고아 프로세스 : 부모 프로세스가 자식 프로세스보다 먼저 종료하게 되면, 자식 프로세스의 부모를 잃는 상황이 발생한다. 이를 고아 프로세스라고 부른다.
      • 부모의 프로세스가 종료될 때, 커널은 이 프로세스가 누구의 부모 프로세스인지 확인 후, 부모 프로세스 ID를 1(init 프로세스)로 변경한다.
      • init 프로세스는 부팅 과정 중 생성되는 최초의 프로세스이며, 시스템이 종료될 때까지 살아있는 프로세스이다.
      • 고아 프로세스가 작업을 종료하면 init 프로세스가 wait을 호출하여 좀비프로세스를 방지한다.
profile
기록은 기억보다 강하다.

0개의 댓글