IT recording...

[OS] 3. 프로세스 스케줄링 - (2) 본문

Operating System

[OS] 3. 프로세스 스케줄링 - (2)

I-one 2022. 4. 24. 01:32

[이화여자대학교 반효경 교수님의 강의를 듣고 정리한 글입니다.]

운영체제

운영체제 운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각 www.kocw.net


[그림과 함께 편하게 보려면 여기로]

https://adorable-aspen-d23.notion.site/OS-3-2-dacf99e3481a4aef98df6c2f450549a8

 

[OS] 3. 프로세스 스케줄링 - (2)

1. 프로세스 스케줄링

adorable-aspen-d23.notion.site

1. 프로세스 스케줄링

1. 프로세스 문맥 (context)

1. Context Swtiching (문맥교환)

  • CPU 스케줄링 시, CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
  • Block 상태가 되는 프로세스의 정보를 커널의 PCB에 저장해둔다.
  • 프로세스를 다시 실행할 때 정확한 문맥에서 실행하기 위함
  • cf) System call이나 interrupt 발생 시 다른 프로세스로 cpu가 넘어가지 않는다면 문맥교환이 일어나지는 않는다. (CPU제어권이 넘어가는 상황에서 문맥교환 발생)
  • Cotext : 현재 시점에 프로그램이 무슨 일을 하고 있는지를 알려주는 것
    • 현재 기계어의 어디까지 실행했고, 메모리에 어떤 내용을 담고 있는가(code, data, stack), cpu레지스터(PC등)에 어떤 값을 담아놓았는가(CPU얼마나 썼는지)

2. Context switching의 Cost

  • Cost
    • Cache 초기화
    • Memory Mapping 초기화
    • 메모리 접근을 위해 Kernel은 항상 실행되어야 한다.
    • ⇒ 잦은 문맥교환은 성능 저하를 가져온다.
  • 시간할당량과의 관계 (Timer)
    • 시간 할당량이 작음
      • 인터럽트, 문맥교환 증가 → 오버헤드 증가
      • 여러 개의 프로세스가 동시에 수행되는 느낌
    • 시간 할댱량이 커짐
      • 인터럽트, 문맥교환 감소 → 오버헤드 감소
      • 여러 개의 프로세스가 동시에 수행되는 느낌 XX
  • Process VS Thread 문맥교환
    • Thread는 stack을 제외한 모든 메모리를 공유하기 때문에 문맥 교환 cost가 process보다 훨씬 적다.

2. PCB(Process Controll Block)

: 운영체제 커널이 프로세스들을 관리하기 위해 프로세스 당 유지하는 정보

  • 구성
    • OS가 관리상 사용하는 정보
      • Process State(Ready, Running, Blocked...), Process Id, Scheduling information, Priority(큐에서 어떤 것을 우선으로 CPU줄 것인가)
    • CPU 수행 관련 하드웨어 값
      • PC, CPU Registers(accumulator, index register, stack pointers, general purpose 등)
    • 메모리 관련
      • code, data(ready queue정보들), stack의 위치 정보
    • 그외
      • Owner(계정정보), 기억장치 관리 정보, 입출력 정보, 파일 관련 정보
  • 프로세스가 생성되면 해당 PCB가 생성되고, 프로세스 완료 시 제거된다.

3. 프로세스 상태 (proces state)

  • Running
    • CPU제어권을 가지고 프로그램을 실행시키고 있는 상태
    • CPU를 반납하는 경우
      • 끝나서 반납 (→ terminated)
      • 타이머 끝 (→ ready)
      • I/O나 event (→ waiting)
  • Ready
    • 메모리(물리적 주소)에 프로그램의 모든 정보를 올려두고 CPU만 오매불망 기다리는 상태
  • Blocked
    • I/O 작업 등으로 인해서 CPU제어권을 잠시 빼앗긴 상태
    • → 자신이 요청한 event가 만족되면 → Ready 상태로 변한다.
  • Suspended(stopped)
    • 외부적인 이유로 프로세스의 수행이 정지된 상태 (SWAP)
    • ex) 사용자가 프로그램을 일시정지 시킨 경우, 시스템이 여러 이유로 프로세스를 잠시 중단시킴(메모리에 너무 많은 프로세스가 올라와 있을 때)
    • → 외부에서 resume해줘야 → Ready 상태로 변한다.
  • New : 프로세스가 생성중인 상태
  • Terminated : 프로세스가 끝나고 정리하고 있는 상태

4. 프로세스 관리 큐 (Queue)

1. Job Queue

  • 현재 시스템 내에 있는 모든 프로세스들의 집합
    • 메모리에 올라가지 않은 프로그램까지 모두

2. Ready Queue

  • Ready 상태인 프로세스들의 집합
    • 현재 메모리 내에 있으면서 CPU를 기다리고 있는 프로세스의 집합

3. Device Queue

  • I/O device의 처리를 기다리는 프로세스의 집합

5. 스케줄러

1. Long-Term Scheduler (장기 스케줄러)

  • new → ready 큐로 어떤 프로세스를 옮길지 결정
  • 어떤 자원을 사용할 것인가? (프로세스에 메모리를 주는 문제)
  • degree of Multiprogramming을 제어
    • 메모리에 몇 개의 프로그램을 올릴래?
    • time sharing system(시분할)은 몽땅 다 올려버리므로 보통 장기 스케줄러가 없음

2. Short-Term Scheduler (단기 스케줄러, CPU 스케줄러)

  • ready → running 큐로 어떤 프로세스를 옮길지 결정
  • 어떤 프로세스에 CPU를 줄 것인가?
  • 충분히 빨라야 함

3. Medium-Term Scheduler (중기 스케줄러, Swapper)

  • 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아내는 것
  • degree of Multiprogramming을 제어
    • 메모리에서 어떤 프로세스를 쫒아낼래?

'Operating System' 카테고리의 다른 글

[OS] 6. CPU 스케줄링  (0) 2022.04.24
[OS] 5. 쓰레드  (0) 2022.04.24
[OS] 4. 프로세스 시스템콜, 협력 - (3)  (0) 2022.04.24
[OS] 2. 프로세스란? - (1)  (0) 2022.04.24
[OS] 1. 운영체제  (0) 2022.04.24
Comments