OS_05_1 Processes

saewoohan·2023년 7월 28일
0

OS

목록 보기
4/19
post-thumbnail

OS_05_1 Processes

1. Process Concepts

1) Process Definition

  • Process는 실행되는 program이다.
  • process의 구성요소
    • Address Space → process가 사용하는 메모리 공간
      • Code (instructions)
      • Data (Global variables)
      • Stack (Subroutine parameters, return address, temporary varialbes)
    • Current activity
      • PC와 processor의 register들

2) PCB (Process Control Block)

  • PCB는 각 process에 대한 정보를 담고 있다.
    • Process state
    • Program counter
    • CPU registers
    • CPU scheduling information
    • Memory-management information
    • Accounting information
    • I/O status information

struct 구조로 구현되어 있다.

3) Process State

  • process가 실행되면, process의 state는 변화한다.
    • new → process가 만들어지고 있는 상태
    • running → instructions들이 실행되고 있는 상태
    • waiting → process가 발생한 event를 기다리고 있는 상태 (I/O completion, signal reception)
    • ready → process가 CPU 할당되는 것을 기다리고 있다.
    • terminated : process가 종료된 상태.

  • ready 상태 → 언제든지 CPU가 주어지면 실행 가능하다.
  • ready 상태가 7개고 waiting 상태가 3개라면 다음 스케줄 후 process는 ready 6개 running 1개 waiting 3개.

2. Process Scheduling

process → unit of scheduling (스케줄링의 대상!)

1) CPU scheduling for processes

  • 목적
    • multitasking을 위해 OS는 memory에 loaded되어 있는 여러개의 Process중에 실행 시킬 process를 골라야 한다. (CPU 개수 보다 process가 많으면 선택해야 함.)
  • Basic scheduling operation (해당 순서를 반복)
    • run the process for a while
    • wait until an interrupt happpens or the process yields CPU
    • stop it and save its state
    • choose another process to run next
    • load the state of chosen process

2) Scheduling and Dispatching

  • policy와 mechanism의 분리
    • scheduling policy → 다음에 실행할 process를 선택
    • Dispatching mechanism → 선택한 process로 switch

3) Context Switching

  • dispatcher가 다른 process로 switch할 때,
    • system은 반드시 old process의 상태를 저장하고, 새로운 process의 저장된 state를 불러와야 한다.
  • Process context (process state)
    • system context → 열려있는 파일의 memory management, accounting, I/O status 같은 정보이다. (변하지 않음)
    • memory context → code, data, stack, heap 부분의 메모리 내용이다. (변하지 않음)
    • processor context → processor의 registers (변함) → PCB에 저장한다.

  • Context-switching은 overhead이다.
    • system은 context switching중에 의미있는 work를 할 수 없다.
  • 하드웨어 따라 시간이 달라진다.
    • 컨텍스트 전환은 단순히 현재 레지스터 세트의 포인터를 변경하는 것으로 이루어진다.

4) Different Types of Scheduling Queues

  • Job queue (for process bookkeeping)

    • system에 존재하는 모든 process를 넣어두는 queue
  • Ready queue (for CPU scheduling)

    • main memory에 존재하면서 execute를 ready, waiting하고 있는 모든 process들의 집합
    • Linked list 방식으로 구현 되어 있다.
    • ready queue의 header는 처음과 마지막 PCB를 pointing하고 있다.
  • Device queue (for I/O scheduling)

    • I/O device를 위해 기다리고 있는 process들의 집합
  • process들은 queue사이를 옮겨다닌다.

Ready Queue와 I/O Device Queue

  • 프로세스를 대신하는 PCB에 linked list로 연결되어 있는 구조이다.

0개의 댓글