귀염둥이의 메모

[OS] Process 본문

CS/운영체제

[OS] Process

겸둥이xz 2021. 7. 7. 15:16
반응형
Process is a program in execution

 

프로세의 문맥(context)

  • CPU 수행 상태를 나타내는 하드웨어 문맥
    • Program Counter
    •  각종 Register
  • 프로세스의 주소 공간
    • code, data, stack
  • 프로세스 관련 커널 자료구조
    • PCB(Process Control Block)
    • Kernel stack

Time sharing, Multi Tasking을 위해 문맥을 파악한다. (현재 시점의 정확한 상태를 파악하기 위해 문맥을 살핀다!)

 

프로세스의 상태(Process State)

프로세스는 상태(state)가 변경되며 수행된다.
  • Running : CPU를 잡고 instruction을 수행중인 상태
  • Ready : CPU를 기다리는 상태 (메모리 등 다른 조건을 모두 만족하고)
  • Blocked(wait, sleep) : CPU를 주어도 당장 instruction을 수행할 수 없는 상태 
    • Process 자신이 요청한 event가 즉시 만족되지 않아 이를 기다리는 상태
    • 자신이 요청한 event가 만족되면 Ready로 바뀜
    • ex) 디스크에서 file을 읽어오는 경우
  • Suspended(stopped) : 외부적인 이유로 프로세스의 수행이 정지된 상태
    • 프로세스는 통째로 디스크에 swap out 된다
    • 외부에서 resume 하면 active
    • ex) 시스템이 여러 이유로 프로세스를 잠시 중단 (메모리에 너무 많은 프로세스가 올라와 있을 때)
  • New : 프로세스가 생성중인 상태
  • Terminated : 수행(execution)이 끝난 상태

 

PCB(Process Control Block)

운영체제가 각 프로세스를 관리하기 위해 프로세스 마다 유지하는 정보

 

다음의 구성요소를 가진다(구조체로 유지)

  • (1) OS가 관리상 사용하는 정보
    • Process state, Process ID
    • Scheduling information, priority
  • (2) CPU 수행 관련 하드웨어 값
    • Program coutner, Registers
  • (3) 메모리 관련
    • Code, Data, Stack의 위치 정보
  • (4) 파일 관련
    • Open file descriptors...

 

 

 

문맥 교환(Context Switch)

CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정

CPU가 다른 프로세스에게 넘어갈 때 운영체제는 다음을 수행

  1. CPU를 내어주는 프로세스A의 상태를 프로세스A의 PCB에 저장
  2. CPU를 새롭게 얻는 프로세스B의 상태를 프로세스B의 PCB에서 읽어옴

 

System call이나 interrupt 발생시 반드시 context switch가 일어나는 것은 아님!!

(1)의 경우에도 CPU 수행 정보 등 context의 일부를 PCB에 save 해야 하지만 문맥교환을 하는 (2)의 경우 그 부담이 훨씬 크다

 

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

  • Job queue : 현재 시스템 내에 있는 모든 프로세스의 집합
  • Ready queue : 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합
  • Device queue : I/O device의 처리를 기다리는 프로세스의 집합

Job queue의 예시

 

스케줄러(Scheduler)

  • Long-term Scheduler (장기 스케줄러 or Job scheduler)
    • 시작 프로세스 중 어떤 것들을 Ready queue로 보낼지 결정
    • 프로세스에 memory 및 각종 자원을 주는 문제
    • degree of Multiprogramming을 제어 -> memory에 올라가 있는 process의 수 제어
    • Time sharing system에는 보통 장기 스케줄러가 없음 (현대의 운영체제는 장기 스케줄러가 없음)
  • Short-term Scheduler (단기 스케줄러 or CPU scheduler)
    • 어떤 프로세스를 다음번에 Running 시킬지 결정
    • 프로세스에 CPU를 주는 문제
    • 충분히 빨라야 함 (millisecond 단위)
  • Medium-term Scheduler (중기 스케줄러 or Swapper) 
    • 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄
    • 프로세스에서 memory를 빼앗는 문제
    • degree of Multiprogramming을 제어

*Multiprogramming : 메모리에 여러 프로그램이 동시에 올라가는 경우


쓰레드(Thread)

A thread(or lightweight process) is a basic unit of CPU utilization

Thread의 구성

  • program counter
  • register set
  • stack space

Thread 가 동료 thread와 공유하는 부분(=task)

  • code section
  • data section
  • OS resources

CPU 수행과 관련된 정보는 쓰레드마다 별도로 가지게 된다.

 

 

Benefits of Threads

  • Responsiveness
  • Resource Sharing
  • Economy
  • Utilization of MP Architectures (CPU가 여러개 있을 때 얻을 수 있느 장점)  *MP : Multi Programming
    • 각각 쓰레드가 서로 다른 CPU에서 병렬적으로 처리할 수 있다
  • 다중 쓰레드로 구성된 task 구조에서는 하나의 서버 쓰레드가 blocked(wating) 상태인 동안에도 동일한 task 내의 다른 쓰레가 running되어 빠른 처리를 할 수 있다
  • 동일한 일을 수행하는 다중 쓰레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있다
  • 쓰레드를 사용하면 병렬성을 높일 수 있다

 

Implementation of Threads

  • Kernel Threads : 쓰레드가 여러개가 있다는 사실을 운영체제가 알고있다.
  • User Threads : 프로세스안에 쓰레드가 여러개 있다는 사실을 OS는 모르고 유저 프로그램이 library의 지원을 받아 관리
  • Real-time Threads
반응형

'CS > 운영체제' 카테고리의 다른 글

[OS] Process Synchronization  (0) 2021.07.14
[OS] CPU Scheduling  (0) 2021.07.11
[OS] Process Management  (0) 2021.07.09
[OS] System Structure & Program Execution  (2) 2021.06.28
[OS] Introduction to Operating Systems  (0) 2021.06.27
Comments