연습 문제
1. 프로그램이 프로세스가 되려면 운영체제로부터 무엇을 받는지?
- 프로세스 제어 블록(Process Control Block)
2. 프로세스의 상태 중 CPU를 할당받기 위해 기다리는 상태
- 준비 상태(Ready Status)
3. 프로세스의 상태 중 입출력 작업을 하기 위해 이동하는 상태
- 대기 상태(Blocking Status)
4. CPU 스케줄러가 준비 상태에 있는 프로세스 중 하나를 골라 CPU를 할당하는 작업
- 실행 상태(Runnung Status)
5. 유닉스에서 Ctrl+Z 를 눌러 프로세스가 중단되면 프로세스는 어떤 상태로 바뀌는지?
- 휴식 상태(Pause Status)
6. 실행 상태에서 하나의 프로세스가 나가고 새로운 프로세스가 들어오는 상황
- 문맥 교환(Context Switching)
- 두 프로세스 간의 제어 블록 내용이 변경 됨.
- 기존 프로세스 작업을 저장 후 실행 되는 프로세스의 제어 블록의 내용을 가지고 CPU가 세팅함
- 프로세스 간 제어 블록을 교환하는 작업
7. 실행 중인 프로세스로부터 새로운 프로세스를 복사하는 시스템 호출은?
- fork()
- 현재 실행중인 프로세스와 같은 프로세스가 하나 생성된다.
- 기존 프로세스 : 부모 프로세스
- 새 프로세스 : 자식 프로세스
8. 프로세스의 골격은 그대로 둔 채 코드 영역만을 바꾸는 시스템 호출?
- exec()
- 프로세스의 구조체를 재활용하기 위해 사용
- 기존의 프로세스 제어 블록, 메모리, 부모-자식 관계를 그대로 사용함
- 새로운 Code Area만 가져오면 된다.
9. 부모 프로세스가 기다리지 않아 자원이 회수되지 못하고 계속 살아 있는 프로세스?
- Orphan Process
- Zombie Process
10. 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위로서 가벼운 프로세스로 불리우는 것은?
- Thread
- CPU 스케줄러가 CPU에 전달하는 하나의 일
- 작업의 단위
11. 미아 프로세스를 방지하기 위해 부모 프로세스는 어떤 시스템 호출을 사용하는지?
- wait()
- 자식 프로세스가 종료될 경우 다음 문장을 실행
12. 작업이 끝난 프로세스의 자원을 회수하는 행위?
- Garbage Collection
13. 모든 프로세스를 부모-자식 관계로 만들어 자원 회수를 용이하게 하는 프로세스의 구조?
- 프로세스 계층 구조
심화 문제
1. 스케줄링의 단계와 그 특징을 설명
- 고수준 스케줄링 :
전체 시스템의 부하를 고려하여 시작할지를 결정한다. 메인프레임과 같은 큰 시스템에서 규모가 큰 일괄 작업을 처리할 때 사용한다. - 중간 수준 스케줄링 :
시스템에 과부하가 걸려 전체 프로세스 수를 조절해야 한다면 이미 활성화된 프로세스 중 일부를 보류 상태로 보낸다. - 저수준 스케줄링 :
어떤 프로세스를 CPU에 할당할지, 대기 상태로 보낼지 등을 결정.
오늘 날 대부분의 CPU 스케줄러는 중간, 저수준 스케줄링으로 구성됨.
2. 스케줄링의 목적을 설명
- 스케줄링을 사용하는 목적은 모든 프로세스가 공평하게 작업을 하도록 하기 위한 것이다. 시스템의 안정성과 효율성을 높이기 위해 일정 부분 공평성을 희생함.
- 공평성: 모든 프로세스가 자원을 공평하게 배정 받아야 함. 자원 배정 과정에서 특정 프로세스가 배제되어서는 안됨.
- 효율성: 시스템 자원이 유휴 시간 없이 사용되도록 스케줄링을 하고, 유휴 자원을 사용하려는 프로세스에는 우선권을 주어야 함
- 안정성: 우선순위를 사용하여 중요 프로세스가 먼저 작동하도록 배정함으로써 시스템 자원을 점유하거나 파괴하려는 프로세스로부터 자원을 보호한다.
- 확장성: 프로세스가 증가해도 시스템이 안정적으로 작동하도록 조치해야 함. 시스템 자원이 늘어나는 경우 이 혜택이 시스템에 반영되야 한다.
- 반응 시간 보장: 응답이 없는 경우 시스템이 멈춘 것으로 가정하기 때문에 시스템은 적절한 시간 안에 프로세스의 요구에 반응해야 한다.
- 무한 연기 방지: 특정 프로세스의 작업이 무한히 연기되어서는 안 된다.
3. 선점형 스케줄링과 비선점형 스케줄링을 비교 설명
- 선점형 스케줄링 :
어떤 프로세스가 CPU를 할당받아 실행중이더라도 운영체제가 CPU를 강제로 빼앗을 수 있다.
문맥 교환 같은 부가적인 작업으로 인해 낭비가 생기는 것이 단점 - 비선점형 스케줄링 :
어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없다.
선점형 스케줄링보다 스케줄러의 작업량이 적고 문맥 교환에 의한 낭비도 적다.
4. 스케줄링 알고리즘의 선택 기준에 대한 설명
- CPU 사용률: 전체 시스템의 동작 시간 중 CPU가 사용된 시간을 측정함.
- 처리량: 단위 시간당 작업을 마친 프로세스의 수. 클수록 좋은 알고리즘.
- 대기 시간: 실제 작업을 요청한 프로세스가 작업을 시작하기 전까지 대기하는 시간. 짧을 수록 좋음.
- 응답 시간: 프로세스 시작 후 첫 번째 출력 또는 반응이 나올때까지 걸리는 시간.
- 반환 시간: 대기 시간과 실행 시간을 더한 값. 프로세스가 생성된 후 종료되어 사용하던 자원을 모두 반환하는 데까지 걸리는 시간.
사용률과 처리량은 계산하기가 쉽지 않아, 주로 대기, 응답, 반환 시간을 계산한다.
주로 평균 대기 시간을 본다. 평균 대기 시간은 모든 프로세스의 대기 시간을 합한 뒤 프로세스의 수로 나눈 값이다.
5. FCFS, SJF, HRN 스케줄링의 특징을 설명하시오
- FCFS (First Come First Served :
준비 큐에 도착한 순서대로 CPU를 할당하는 비선점형 방식. 처리 시간이 긴 프로세스가 CPU를 차지하는 경우 시스템의 효율성이 떨어짐. 현재 작업중인 프로세스가 입출력을 요구하면 CPU가 쉬는 시간이 많아져 효율이 떨어짐. - SJF (Shortest Job First) :
프로세스 중에서 실행 시간이 가장 짧은 작업부터 할당하는 비선점형 방식. 종료 시간을 파악하기 어려워 사용하기가 쉽지 않다. 아사 현상이 발생하기 쉬워서 잘 쓰이지 않는다. - HRN (Highest Response Ratio Next) :
SJF에서 발생할 수 있는 아사 현상을 해결한 알고리즘. 서비스를 받기 위해 기다린 시간과 CPU 사용 시간을 고려하여 스케줄링을 하는 방식. 공평성이 위배되어 많이 사용하지 않는다.
6. 라운드 로빈, SRT, 다단계 큐, 다단계 피드백 큐 스케줄링의 특징을 설명
- 라운드 로빈(Round Robin) :
FCFS 스케줄링과 유사함. 각 프로세스마다 CPU를 할당받는 타임 슬라이스가 정해짐. - SRT(Shortest Remaining Time) :
기본적으로 라운드 로빈 방식과 같이 동작하지만, CPU를 할당 받을 프로세스를 선택할 때 잔여 작업 시간이 가장 적은 프로세스를 선택함. 하지만 운영체제가 프로세스의 종료 시간을 예측하기 어려우므로 잘 사용하지 않음. - 다단계 큐(Multilevel queue) :
우선 순위에 따른 준비큐를 여러 개 사용함. 프로세스가 큐에 삽입되는 것으로 우선 순위가 결정됨. 상위 큐의 모든 작업 종료되어야 다음 큐의 작업이 진행됨. 우선 순위가 높은 프로세스 때문에 낮은 프로세스의 작업이 연기되는 문제를 해결한 방식이 다단계 피드백 큐 스케줄링이다. - 다단계 피드백 큐(Multilevel Feedback Queue) :
다단계 큐 스케줄링과 비슷하지만, 프로세스가 한번 CPU를 사용할 때마다 프로세스의 우선 순위가 낮아진다. 커널 프로세스가 일반 프로세스 큐에 삽입되지 않음. 각 큐의 우선 순위가 아래로 내려갈 경우 타임 슬라이스의 크기도 커져서, 마지막 우선 순위 큐의 타임 슬라이스는 무한대로, FCFS 처럼 동작함.
7. 아사 현상과 에이징에 대해 설명
프로세스의 우선도 순으로 작업을 처리하는 스케줄링이라면, 우선도가 낮은 프로세스는 계속해서 자원을 할당 받지 못하는 문제가 생기는데, 이것을 아사 현상이라고 한다.
에이징은 아사 현상을 해결할 수 있는 방법 중 하나인데, 프로세스가 자신의 순서를 양보할 때마다 나이를 한 살씩 먹는다고 가정하고, 이 나이가 일정한 값에 도달하게 되면 더 이상 양보하지 않고 자원을 할당받도록 하는 것을 말한다.
8. 타임 슬라이스의 크기를 정하는 것과 시스템 효율성에 대해 설명
- 타임 슬라이스의 점점 커질 경우, 스케줄링은 FCFS로 동작하며 효율성이 떨어진다. 그렇다고 타임 슬라이스를 작게 할 경우 문맥 교환이 자주 일어나 성능이 떨어짐.
- 타임 슬라이스는 되도록 작게 설정, 문맥 교환이 자주 일어나지 않을 정도로.
10 ~ 200ms 사이에서 조정 가능하며, 조정되는 이유는 다단계 피드백 큐 스케줄링에서 각 큐마다 타임 슬라이스가 다르게 설정 되어야 하기 때문이다.
반응형
'🖥️ Computer Science' 카테고리의 다른 글
[쉽게 배우는 운영체제] ch.7 물리 메모리 관리 - 연습 & 심화 문제 (1) | 2022.11.06 |
---|---|
[쉽게 배우는 운영체제] ch.6 프로세스 동기화 - 연습 & 심화 문제 (0) | 2022.11.06 |
[쉽게 배우는 운영체제] ch.5 프로세스 동기화 - 연습 & 심화 문제 (0) | 2022.11.04 |
[쉽게 배우는 운영체제] ch.3 프로세스와 스레드 - 연습 & 심화 문제 (0) | 2022.11.02 |
[쉽게 배우는 운영체제] ch.2 컴퓨터의 구조와 성능 - 연습 & 심화 문제 (0) | 2022.11.01 |