정규 회의록
일시 : 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를 인풋으로 하여 결과 비교
'4-1기 스터디 > CS 기초' 카테고리의 다른 글
[CS 기초 스터디] 6주차 회의록 (0) | 2023.01.05 |
---|---|
[CS 기초 스터디] 5주차 회의록 (1) | 2023.01.05 |
[CS 기초 스터디] 4주차 회의록 (0) | 2022.12.10 |
[CS 기초 스터디] 3주차 회의록 (0) | 2022.12.10 |
[CS 기초 스터디] 1주차 회의록 (0) | 2022.11.07 |
댓글