CH3 : Process

김마사키·2022년 4월 10일
0

OS

목록 보기
2/4

프로세스의 개념

Process = 실행(execution) 중인 Program

Process의 문맥(context)

  1. PC, register : CPU의 수행 상태를 나타내는 HW 문맥
  2. code, data, stack : 프로세스의 주소 공간
  3. PCB(Process Control Block), Kernal Stack : 프로세스 관련 커널 자료 구조

Process State 프로세스의 상태 (1)

Process는 상태가 변경되며 수행된다

  1. Running
    = CPU를 잡고 instruction을 수행중인 상태
    PC, register가 process A의 context 로 채워짐

  2. Ready
    = CPU를 기다리는 상태
    memory 등 다른 조건은 모두 만족

  3. Blocked = Wait = Sleep
    Process 자신이 요청한 event가 즉시 만족되지 않아 이를 기다리는 상태 (I/O)

  4. Suspended(Stopped)

    .

  5. New
    = Process가 생성 중인 상태

  6. Terminated
    = 수행(execution)이 끝나고 정리할게 남아있는 상태

Queue라는 것은 OS kernal data 영역에 자료구조로 queue를 만들어두고,
process의 상태를 바꿔가면서 ready 상태에 있는 process에게 CPU를 주는 것으로 운영

프로세스 상태도 (1)

PCB (Process Control Block)

PCB

  • OS가 각 Process를 관리하기 위해 Process 당 유지하는 정보
  • 구조체 형식

(1) OS가 관리상 사용하는 정보

  • Process state, Process ID
  • scheduling information priority

(2) CPU 수행 관련 HW 값

  • PC, registers
    (process가 다시 CPU로 들어갈 때 필요)

(3) 메모리 관련

  • code, data, stack의 위치 정보
    ( DRAM의 어느 부분에 나의 code, data, stack이 있는지 )

(4) 파일 관련

  • open file descriptions..
    ( fopen: 열려있는 file들을 미리 저장, write는 1개의 process에서만 작동하게 다른 process와의 충돌을 방지 )

Context Switch 문맥 교환

Context Switch = CPU를 한 process 에서 다른 process로 넘겨주는 과정

1. CPU를 내어주는 process의 상태를 process PCB에 저장

2. CPU를 새롭게 얻는 process의 상태를 PCB에서 읽어옴

Q. System call, Interrupt 발생 시 반드시 context switch가 일어난다 (X)

Q. timer interrupt or I/O 요청 system call 발생 시 반드시 context switch가 일어난다 (O)

Cache memory flush = context switch시, cache memory 전부 지워야 한다

프로세스를 스케줄링하기 위한 큐

프로세스들은 각 큐를 오가며 수행된다

Job queue
= 현재 system 내에 있는 모든 process의 집합 (리스트)

Ready queue
= 현재 memory 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 process의 집합

device queue
= I/O device 처리를 기다리는 process의 집합

Queue에 줄세우는 것 : OS가 process를 관리하는 PCB를 linked list (pointer)로 구현

Scheduler 스케줄러

  1. Long-term scheduler = job scheduler = 장기 스케줄러

    • 시작 프로세스 중 어떤 것을 ready queue로 보낼지 결정 (NEW -> ready)
    • degree of multiprogramming 을 제어
    • 최근 time sharing system에는 장기 스케줄러 X
  2. Short-term scheduler = CPU scheduler = 단기 스케줄러

    • 어떤 process를 다음 번에 running 시킬지 결정 (priority에 따라서 처리)
    • process에 CPU를 주는 문제
    • millisecond 단위 (빠르다)
  3. Medium-term scheduler = Swapper = 중기 스케줄러

    • 여유 공간 마련을 위해 process를 통재로 mem -> disk 로 쫓아냄
      ( memory 에 program이 적정량 있어야 한다 )
    • process에서 memory 를 빼앗는 문제
    • degree of multiprogramming을 제어 (최근에는 swapper로만)

Process State 프로세스의 상태 (2)

Process는 상태가 변경되며 수행된다

  1. Running
    = CPU를 잡고 instruction을 수행중인 상태
    PC, register가 process A의 context 로 채워짐
  2. Ready
    = CPU를 기다리는 상태
    memory 등 다른 조건은 모두 만족
  3. Blocked = Wait = Sleep
    Process 자신이 요청한 event가 즉시 만족되지 않아 이를 기다리는 상태 (I/O)
  4. Suspended(Stopped)
    • 외부적인 이유로 process의 수행이 정지된 상태
    • process 는 통째로 disk로 swap out 된다
      e.g
      - 사용자의 break key (ctrl+Z) <= 사람
      - system이 여러 이유로 process를 잠시 중단 시킴 <= 중기 스케쥴러
      (메모리에 너무 많은 process가 올라와 있을 때)
  5. New
    = Process가 생성 중인 상태
  6. Terminated
    = 수행(execution)이 끝나고 정리할게 남아있는 상태

Blocked V.S. Suspended

Blocked : 자신이 요청한 event가 만족되면 -> Ready
Suspended : 외부에서 resume 해주어야 -> Active

프로세스 상태도 (2)

Thread

Process 내부에 CPU 수행단위가 여러 개 있는 경우

  • Thread 의 구성

    • PC (program counter)
    • register set
    • stack space
  • task = hread 가 동료 Thread와 공유하는 부분

    • code section
    • data section
    • OS resources
  • heavyweight process = 하나의 thread를 가지고 있는 task. (전통적인 개념)
  • lightweight process = 여러개의 thread를 가지고 있는 task.

Thread V.S. Process

Thread

Benefits of Threads

  1. Responsiveness 응답성, 반응성
    eg) multi-threaded Web

  2. Resource Sharing 자원 공유
    process의 binary code, data, resource를 공유

  3. Economy 경제성
    새로운 process를 만드는 것보다, thread를 만드는 것이 비용이 훨씬 적게 든다
    overhead도 적다

  4. Ultilization of MP artitectures
    GPU, parallel 병렬성을 높일 수 있다

Implemetation of Threads

  1. Kernal Threads
    : Kernal이 process가 multi-threads 인 것을 안다
    thread switch (like context switch)를 지원

  2. User Threads
    : library를 통해서 구현
    user program이 thread를 스스로 관리 kernal은 process가 1개의 thread라고 알고 있다

  3. Real-time threads

0개의 댓글

관련 채용 정보