본문 바로가기
  • GDG on campus Ewha Tech Blog
4-1기 스터디/CS 기초

[CS 기초 스터디] 2주차 회의록

by seoyoee 2022. 11. 18.

정규 회의록

일시 : 2022.10.11 18:30
범위 : 운영체제 3~5강
강의 : 반효경 교수님 운영체제 강의
활동 : github에 올린 내용 정리본 읽고 공부한 내용에 대해 발표 및 질의응답
정리 : https://github.com/GDSC-Ewha-4th/Study-CS.git


3강 프로세스 관리

프로세스

  • Process is a program in execution
  • 운영체제의 자원을 할당 받는 작업의 단위
  • 프로세스 = 프로그램 + PCB

프로세스의 문맥

  • 프로세스가 현재 어떤 상태에서 수행되고 있는지 규명하기 위한 정보
  • HW 문맥(PC, registers), 주소 공간(code, data, stack), 관련 커널 자료구조(PCB, Kernel stack)

프로세스의 상태

  • Running, Blocked, Ready, Suspended

PCB(Process Control Block)

  • OS가 관리하는 정보, CPU 수행 관련 HW값, 메모리 관련 정보, 파일 관련 정보

문맥 교환

  • CPU를 차지하는 프로세스가 바뀔 때, 이전 프로세스의 PCB를 저장 & 다음 프로세스의 PCB를 불러옴
  • 사용자 프로세스가 시스템콜을 호출해 커널모드로 들어가는 것은 문맥교환이라고 하지 않음

큐의 종류

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

스케줄러

  • 장기 스케줄러
    • 프로세스에 메모리를 주는 문제를 다룸
    • 처음 프로세스가 실행될 때 메모리에 올라오도록 허락하는 역할
    • 요즘은 일단 메모리에 올라오도록 모두 허락해줌 -> 장기 스케줄러 쓰임 X
    • -> 중기 스케줄러가 degree of multiprogramming을 제어
  • 중기 스케줄러
    • 프로세스를 메모리에서 디스크로 쫓아내는 문제를 다룸
    • degree of multiprogramming을 제어
  • 단기 스케줄러
    • 다음에 Running시킬 프로세스를 결정
    • 매우 빠른 단위로 실행 (ms) - timer interrupt마다 수행

쓰레드

  • A thread(or lightweight process) is a basic unit of CPU utilization
  • = 어떠한 프로그램 (특히 프로세스) 내에서 실행되는 흐름의 단위
  • 쓰레드마다 자신의 PC, register, 주소 공간 중 stack 영역을 가짐
  • 주소 공간의 나머지 영역(code, data)과 PCB의 나머지 영역은 쓰레드끼리 공유

프로세스의 생성 (시스템콜)

  • fork: 부모를 그대로 복사(PID 제외), 주소 공간 할당
  • exec: fork 다음에 이어서 사용, 새로운 프로그램을 덮어씌움

프로세스 종료 (시스템콜)

  • exit: 프로세스의 종료를 운영체제에게 알림 (스스로 종료하는 경우)
  • abort: 프로세스를 강제로 종료 (부모가 자식 프로세스를 종료시킴)

프로세스 간의 협력

  • 프로세스는 원칙적으로 각자의 주소공간을 가지고 수행되기 때문에 서로 영향을 주지 않음
  • 하지만 message passing, shared memory 방법으로 협력 가능

4강 CPU 스케줄링

프로세스의 분류 (CPU burst time)

  • CPU bound job: CPU를 오래 필요로 하는 프로세스
  • IO bound job: CPU를 짧게 필요로 하는 프로세스 (사용자와의 interaction 위주)

CPU Scheduler & Dispatcher

  • CPU Scheduler: Ready 상태의 프로세스 중 CPU를 할당할 프로세스를 선택
  • Dispatcher: CPU의 제어권을 CPU Scheduler가 고른 프로세스에게 넘겨줌

CPU 스케줄링이 필요한 경우

  • Running -> Blocked
    • ex - I/O를 요청하는 시스템콜의 경우 -> 스스로 CPU를 포기하고 I/O 디바이스의 큐로 이동
    • nonpreemptive (자진 반납)
  • Running -> Ready
    • ex - timer interrupt
    • preemptive (강제)
  • Blocked -> Ready
    • ex - I/O 수행 후 인터럽트
    • preemptive (강제)
  • Terminated
    • 프로세스가 종료
    • nonpreemptive (자진 반납)

CPU 스케줄링 성능의 척도

  • CPU utilization(이용률): CPU가 최대한 바쁘게 사용됨
  • Throughput(처리량): 시간당 완료된 프로세스의 개수
  • Turnaround time(소요 시간): CPU를 기다린 시간 + 사용한 시간
  • Waiting time(대기 시간): CPU Ready 큐에서 대기한 시간의 합
  • Response time(응답 시간): 프로세스가 대기한 이후 최초로 CPU를 얻기까지 걸린 시간

CPU 스케줄링 알고리즘

  • FCFS
  • SJF
  • Priority 스케줄링
  • RR(Round Robin)
  • Multilevel Queue
  • Multilevel Feedback Queue
  • Multiple Processor 스케줄링
  • Real time 스케줄링
  • Thread 스케줄링

CPU 스케줄링 알고리즘 평가

  • Queueing models: 확률 분포로 주어지는 arrival rate(job의 도착율) & service rate(CPU의 처리율)을 통해 계산
  • Implementation & Measurement: 직접 구현하여 실제 작업에 도입해 결과 비교
  • Simulation: 모의 프로그램을 작성 후 신빙성 있는 trace를 인풋으로 하여 결과 비교

댓글