-
프로그램
printf
를 실행하던 중 코드 내용 중에 출력을 하는 부분이 있어서,
I/O 인터럽트 루틴을 따르는 동안 프로세스printf
는 blocked(봉쇄) 상태가 되었다. 이 경우의 CPU 스케줄링 방식은? -
아래와 같은 프로그램의 실행을 무사히 마친 프로세스
kido
가 종료되고, CPU 제어권을 잃었다. 이 경우의 CPU 스케줄링 방식은?
#include <stdio.h>
int main()
{
printf("%s\n", "kido calm down.");
}
-
프로그램
푸쉬업
이 실행되던 중 입출력 인터럽트가 들어와푸쉬업
은 봉쇄 상태가 되었다.
들어왔던 입출력 인터럽트 종료 후푸쉬업
가 다시 실행될 줄 알았지만..
최우선순위 프로세스로 설정되어 있었던 프로세스꼬북칩
으로 CPU가 이양되는 바람에
푸쉬업
은 준비 상태로 돌아가버렸다. 이 경우의 CPU 스케줄링 방식은? -
작업량이 방대한 프로세스
42
는 타이머 인터럽트에 걸려 준비 상태로 변경되었다. 이 경우의 CPU 스케줄링 방식은? -
(보너스 문제)
CPU 스케줄러
는 특정한 하드웨어일까요? 혹은 소프트웨어? 독립된 소프트웨어일까요?
📄 답지
- 프로그램
printf
를 실행하던 중 코드 내용 중에 출력을 하는 부분이 있어서,
I/O 인터럽트 루틴을 따르는 동안 프로세스printf
는 blocked(봉쇄) 상태가 되었다. 이 경우의 CPU 스케줄링 방식은?
프로세스가 입출력 인터럽트를 위해 CPU를 자발적으로 이양하는 것이므로 비선점형.
- 아래와 같은 프로그램의 실행을 무사히 마친 프로세스
kido
가 종료되고, CPU 제어권을 잃었다. 이 경우의 CPU 스케줄링 방식은?
#include <stdio.h>
int main()
{
printf("%s\n", "kido calm down.");
}
프로그램에 명시적으로 적어주지 않아도 main 함수가 리턴되는 위치에 컴파일러가 exit() 시스템 콜을 넣어줘서,
자발적으로 CPU를 반납하고 종료되는 상황이다. 그러므로 비선점형.
- 프로그램
푸쉬업
이 실행되던 중 입출력 인터럽트가 들어와푸쉬업
은 봉쇄 상태가 되었다.
들어왔던 입출력 인터럽트 종료 후푸쉬업
가 다시 실행될 줄 알았지만..
최우선순위 프로세스로 설정되어 있었던 프로세스꼬북칩
으로 CPU가 이양되는 바람에
푸쉬업
은 준비 상태로 돌아가버렸다. 이 경우의 CPU 스케줄링 방식은?
최우선순위로 선점되어 있어서 이를 위해 CPU를 빼앗아 간 것이므로 선점형.
- 작업량이 방대한 프로세스
42
는 타이머 인터럽트에 걸려 준비 상태로 변경되었다. 이 경우의 CPU 스케줄링 방식은?
시간이 선점되어 있어서 이를 지키기 위해 빼앗아 간 것이므로 선점형.
- (보너스 문제)
CPU 스케줄러
는 특정한 하드웨어일까요? 혹은 소프트웨어? 독립된 소프트웨어일까요?
운영체제 내에 있는 코드 중에 스케줄링을 어떻게 할지에 대한 내용이 들어있는 부분이 있는데 이를
CPU 스케줄러
라고 부르는 것입니다.
반효경 교수님 강의중 59분쯤
-
디스패처(dispatcher)이란 무엇인가요? (주관식)
-
디스패치 지연시간(dispatch latency)이란 무엇인가요? (주관식)
-
디스패치 지연시간의 대부분은 어디에 해당될까요? (보기 선택)
보기 : 파파라치 사진찍기, 오버헤드킥, 문맥교환 오버헤드, PCB I/O, CPU bound process
- 다음은 디스패처의 수행 작업 과정이다. 보기에서 괄호를 채우시오.
보기 : PC, SP, PCB, 디스패치, 찰칵찰칵, SD 카드
현재 수행중이던 프로세스의 문맥(context)을 그 프로세스의 ( )에 저장하고
새롭게 선택된 프로세스의 문맥을 ( )로부터 복원한 후 그 프로세스에게 CPU를 넘기는 과정을 수행한다.
📄 답지
-
디스패처(dispatcher)이란 무엇인가요? (주관식)
정답 : CPU 스케줄러가 어떤 프로세스에게 CPU를 할당해야 할지 결정하고나면 선택된 프로세스에게 실제로 CPU를 이양하는 작업이 필요한데 이때 새롭게 선택된 CPU를 할당, 작업 수행할 수 있도록 환경설정 하는 운영체제의 코드이다. -
디스패치 지연시간(dispatch latency)이란 무엇인가요? (단답형)
디스패처가 하나의 프로세스를 정지시키고 다른 프로세스에게 CPU를 전달하기까지 걸리는 시간 -
디스패치 지연시간의 대부분은 어디에 해당될까요?
보기 : 파파라치 사진찍기, 오버헤드킥, 문맥교환 오버헤드, PCB I/O, CPU bound process
정답 : 문맥교환 오버헤드
- 다음은 디스패처의 수행 작업 과정이다. 괄호를 채우시오.
보기 : PC, SP, PCB, 디스패치, 찰칵찰칵, SD 카드
현재 수행중이던 프로세스의 문맥(context)을 그 프로세스의 (PCB)에 저장하고
새롭게 선택된 프로세스의 문맥을 (PCB)로부터 복원한 후 그 프로세스에게 CPU를 넘기는 과정을 수행한다.
-
스케줄링의 성능 평가 지표는 시스템 관점의 지표와 사용자 관점의 지표로 분류할 수 있다. 시스템 관점의 지표로는
___ ___
과___
이 있고, 사용자 관점의 지표로는소요시간
(총 처리시간),대기시간
,응답시간
등 기다린__
과 관련된 지표들이 있다. -
여러 프로세스가 CPU를 기다리고 있는 상황에서, 주어진 시간에 더 많은 프로세스들이 CPU 작업을 완료하기 위해서는 CPU 버스트가
짧은 / 긴
프로세스에게 우선적으로 CPU를 할당하는 것이 유리하다. -
응답시간
은 CPU 버스트 기간 중 프로세스가 준비 큐에서 CPU를 얻기 위해 기다린 시간의 합을 뜻한다.(O / X)
-
일반적으로
CPU 이용률
과처리량
은최소화 / 최대화
하고소요시간
,대기시간
,응답시간
은최소화 / 최대화
하는 것이 바람직하다.
📄 답지
-
스케줄링의 성능 평가 지표는 시스템 관점의 지표와 사용자 관점의 지표로 분류할 수 있다. 시스템 관점의 지표로는
CPU 이용률
과처리량
이 있고, 사용자 관점의 지표로는소요시간
(총 처리시간),대기시간
,응답시간
등 기다린시간
과 관련된 지표들이 있다.◾ CPU 이용률: 전체 시간 중에서 CPU가 일을 한 시간의 비율
◾ 처리량: 주어진 시간 동안 준비 큐에서 기다리고 있는 프로세스 중 몇 개를 끝마쳤는지 (=CPU 버스트를 완료한 프로세스의 개수)
◾ 소요시간: 프로세스가 CPU를 요청한 시점부터 자신이 원하는 만큼 CPU를 다 쓰고 CPU 버스트가 끝날 때까지 걸린 시간. 즉, 준비 큐에서 기다린 시간과 실제로 CPU를 사용한 시간의 합
◾ 대기시간: CPU 버스트 기간 중 프로세스가 준비 큐에서 CPU를 얻기 위해 기다린 시간의 합
◾ 응답시간: 프로세스가 준비 큐에 들어온 후 첫 번째 CPU를 획득하기까지 기다린 시간 -
여러 프로세스가 CPU를 기다리고 있는 상황에서, 주어진 시간에 더 많은 프로세스들이 CPU 작업을 완료하기 위해서는 CPU 버스트가
짧은
프로세스에게 우선적으로 CPU를 할당하는 것이 유리하다.CPU 버스트가 짧은 프로세스를 우선적으로 처리하는 것이 효율성이 더 높기 때문(더 많은 프로세스를 처리할 수 있음)
-
응답시간
은 CPU 버스트 기간 중 프로세스가 준비 큐에서 CPU를 얻기 위해 기다린 시간의 합을 뜻한다.(X)
대기시간에 해당하는 설명이다. 한 번의 CPU 버스트 중에도 준비 큐에서 기다린 시간이 여러 번 발생할 수 있는데, 이 때 이번 CPU 버스트가 끝나기까지 준비 큐에서 기다린 시간의 합이 대기시간에 해당한다.
응답시간은 프로세스가 준비 큐에 들어온 후 첫 번째 CPU를 획득하기까지 기다린 시간을 뜻한다.
-
일반적으로
CPU 이용률
과처리량
은최대화
하고소요시간
,대기시간
,응답시간
은최소화
하는 것이 바람직하다.가능한 많은 일을 처리하고, 시간은 짧게 걸리는 것이 이익이기 때문
<보기>
- 멀티레벨큐
- 멀티레벨 피드백큐
- 다중처리기 스케줄링
- 실시간 스케줄링
- 라운드로빈 스케줄링
- 우선순위 스케줄링
- 선입선출 스케줄링(FCFS)
- 최단작업 우선 스케줄링(SJF)
- 0-1. 프로세스가 준비큐에 도착한 시간 순서대로 CPU를 할당하는 방식 :
- 0-2. 현재 CPU에서 실행중인 프로세스의 남은 CPU버스트 시간보다 더 짧은 CPU 버스트 시간을 가지는 프로세스가 도착할 경우 CPU를 빼앗는 방식 :
- 0-3. 준비 큐에서 기다리는 프로세스들 중 우선순위가 가장 높은 프로세스에게 제일 먼저 CPU를 할당하는 방식 :
- 0-4. 시분할 시스템의 성질을 가장 잘 활용한 스케줄링 방식 :
- 0-5. 성격이 다른 프로세스를 별도로 관리하고, 프로세스 성격에 맞는 스케줄링을 적용하기 위해 준비 큐를 여러 개로 분할해 관리하는 방식 :
- 0-6. CPU를 기다리는 프로세스를 여러 큐에 줄세우되, 프로세스가 하나의 큐에서 다른 큐로 이동이 가능한 방식 :
- 0-7. CPU가 여러개인 멀티프로세서 시스템에서의 CPU스케줄링 방식 :
- 0-8. 각 작업마다 주어진 데드라인이 있어 정해진 데드라인 안에 반드시 작업을 처리해야할 경우에 사용하는 스케줄링 기법으로, 주로 데드라인이 얼마남지 않은 요청을 먼저 처리하는 방식 :
- 1-1. 이 현상을 무엇이라고 할까요?
ㅇㅇㅇ 현상
- 1-2. 이 현상에 대해서 간단하게 설명해주세요. (1등 +10점)
- 2-1. 이 현상을 무엇이라고 할까요?
ㅇㅇ 현상
- 2-2. 이 현상에 대해서 간단하게 설명해주세요. (1등 +10점)
- 2-3. '세초공주를 구하라' 게임에 접속해주세요 링크
- 3-1. 이 기법을 무엇이라고 할까요?
ㅇㅇ 기법
- 3-2. 이 기법에 대해서 간단하게 설명해주세요. (1등 +10점)
- 4-1. 프로세스마다 한 번에 CPU를 연속적으로 사용할 수 있는 최대시간을 무엇이라고 할까요?
ㅇㅇ시간
또는(time _______)
- 4-2. 이 시간이 경과하면 무엇을 발생시켜 해당 프로세스로부터 CPU를 회수해 준비 큐의 제일 뒤에가서 줄을 서 다음번 차례를 기다릴까요?
ㅇㅇㅇ ㅇㅇㅇㅇ
- 4-3. 할당시간을 너무 '짧게'할 경우의 문제점은 무엇인지 간단하게 설명해주세요. (1등 +15점)
- 4-4. 할당시간을 너무 '길게'할 경우의 문제점은 무엇인지 간단하게 설명해주세요. (1등 +15점)
- 5-1. 대화형 작업을 담기 위한 전위 큐(foreground queue)에는 응답시간을 짧게하기 위해 어떤 스케줄링을 적용할까요?
ㅇㅇㅇ ㅇㅇ
- 5-2. 계산 위주의 작업을 담기 위한 후위 큐(background queue) 문맥교환 오버헤드를 줄이기 어떤 스케줄링을 적용할까요?
ㅇㅇㅇㅇ
- 5-3. 큐의 스케줄링 방식 중, 우선순위가 낮은 큐는 우선순위가 높은 큐가 비어있을 때에만 서비스하는 방식은 무엇일까요?
ㅇㅇ ㅇㅇㅇㅇ
방식 - 5-4. 큐의 스케줄링 방식 중, 각 큐에 CPU 시간을 적절한 비율로 할당해 기아현상을 해소할 수 있는 방식은 무엇일까요?
ㅇㅇ ㅇㅇㅇㅇ
방식
- 6-1. 각 CPU가 알아서 스케줄링을 결정하는 방식은 무엇일까요?
ㅇㅇㅇ
다중처리 - 6-2. 하나의 CPU가 다른 모든 CPU의 스케줄링 및 데이터 접근을 책임지고 나머지 CPU는 거기에 따라 움직이는 방식은 무엇일까요?
ㅇㅇㅇㅇ
다중처리
📄 답지
- 0-1. 프로세스가 준비큐에 도착한 시간 순서대로 CPU를 할당하는 방식 :
선입선출 스케줄링(FCFS)
- 0-2. 현재 CPU에서 실행중인 프로세스의 남은 CPU버스트 시간보다 더 짧은 CPU 버스트 시간을 가지는 프로세스가 도착할 경우 CPU를 빼앗는 방식 :
최단작업 우선 스케줄링(SJF)
- 0-3. 준비 큐에서 기다리는 프로세스들 중 우선순위가 가장 높은 프로세스에게 제일 먼저 CPU를 할당하는 방식 :
우선순위 스케줄링
- 0-4. 시분할 시스템의 성질을 가장 잘 활용한 스케줄링 방식 :
라운드로빈 스케줄링
- 0-5. 성격이 다른 프로세스를 별도로 관리하고, 프로세스 성격에 맞는 스케줄링을 적용하기 위해 준비 큐를 여러 개로 분할해 관리하는 방식 :
멀티레벨큐
- 0-6. CPU를 기다리는 프로세스를 여러 큐에 줄세우되, 프로세스가 하나의 큐에서 다른 큐로 이동이 가능한 방식 :
멀티레벨 피드백큐
- 0-7. CPU가 여러개인 멀티프로세서 시스템에서의 CPU스케줄링 방식 :
다중처리기 스케줄링
- 0-8. 각 작업마다 주어진 데드라인이 있어 정해진 데드라인 안에 반드시 작업을 처리해야할 경우에 사용하는 스케줄링 기법으로, 주로 데드라인이 얼마남지 않은 요청을 먼저 처리하는 방식 :
실시간 스케줄링
- 1-1. 이 현상을 무엇이라고 할까요?
콘보이 현상(Convoy effect)
- 1-2. 이 현상에 대해서 간단하게 설명해주세요.
- CPU 버스트가 짧은 프로세스가 CPU 버스트가 긴 프로세스보다 나중에 도착해 오랜시간을 기다려야 하는 현상
- 2-1. 이 현상을 무엇이라고 할까요?
기아 현상(starvation)
- 2-2. 이 현상에 대해서 간단하게 설명해주세요.
- 계속 CPU 버스트가 짧은 프로세스에게만 CPU를 할당할 경우 CPU 버스트가 긴 프로세스는 준비 큐에 줄 서서 무한정 기다려야 함
- 2-3. '세초공주를 구하라' 게임에 접속해주세요 링크
- 3-1. 이 기법을 무엇이라고 할까요?
노화 기법(aging)
- 3-2. 이 기법에 대해서 간단하게 설명해주세요.
- 기다리는 시간이 길어지면 우선순위를 조금씩 높여, 언젠가는 가장 높은 우선순위가 되어 CPU를 할당받을 수 있게 해주는 방법
- 4-1. 프로세스마다 한 번에 CPU를 연속적으로 사용할 수 있는 최대시간을 무엇이라고 할까요?
할당시간(time quantum)
- 4-2. 이 시간이 경과하면 무엇을 발생시켜 해당 프로세스로부터 CPU를 회수해 준비 큐의 제일 뒤에가서 줄을 서 다음번 차례를 기다릴까요?
타이머 인터럽트
- 4-3. 할당시간을 너무 '짧게'할 경우의 문제점은 무엇인지 간단하게 설명해주세요.
- 문맥교환의 오버헤드가 증가해 전체 시스템 성능 저하
- 4-4. 할당시간을 너무 '길게'할 경우의 문제점은 무엇인지 간단하게 설명해주세요.
- 선입선출과 같은 결과, 콘보이 현상
- 5-1. 대화형 작업을 담기 위한 전위 큐(foreground queue)에는 응답시간을 짧게하기 위해 어떤 스케줄링을 적용할까요?
라운드 로빈
- 5-2. 계산 위주의 작업을 담기 위한 후위 큐(background queue) 문맥교환 오버헤드를 줄이기 어떤 스케줄링을 적용할까요?
선입선출
- 5-3. 큐의 스케줄링 방식 중, 우선순위가 낮은 큐는 우선순위가 높은 큐가 비어있을 때에만 서비스하는 방식은 무엇일까요?
고정 우선순위
방식 - 5-4. 큐의 스케줄링 방식 중, 각 큐에 CPU 시간을 적절한 비율로 할당해 기아현상을 해소할 수 있는 방식은 무엇일까요?
타임 슬라이스
방식
- 6-1. 각 CPU가 알아서 스케줄링을 결정하는 방식은 무엇일까요?
대칭형
다중처리 - 6-2. 하나의 CPU가 다른 모든 CPU의 스케줄링 및 데이터 접근을 책임지고 나머지 CPU는 거기에 따라 움직이는 방식은 무엇일까요?
비대칭형
다중처리
-
스케줄링 알고리즘의 성능을 평가하는 방법으로는
____
,____
,______
방식이 있다.보기 : 시뮬레이션, 뿌잉모델, 트레이스(trace), 구현, 나현, 다현, 대현, 실측, 로드 타임 바인딩, 큐잉모델, 세그먼테이션 기법, 구현 및 실측, 페이징, 고정분할
📄 답지
-
스케줄링 알고리즘의 성능을 평가하는 방법으로는
____
,____
,______
방식이 있다.시뮬레이션, 뿌잉모델, 트레이스(trace), 구현, 나현, 다현, 대현, 실측, 로드 타임 바인딩, 큐잉모델, 세그먼테이션 기법, 구현 및 실측, 페이징, 고정분할
정답 : 큐잉모델, 시뮬레이션, 구현 및 실측
- 큐잉모델(que-ueing model) : 확률분포를 통해 프로세스의 도착률과 cpu 처리율을 입력값으로 준 뒤 각종 성능지표(cpu의 처리량, 프로세스의 평균 대기시간 등)를 구하는 방식
- 구현 및 실측(implementation & measurement) : 운영체제 커널의 cpu 스케줄링 코드를 수정해, 동일한 프로그램을 원래 커널과 수정한 커널에서 수행시켜보고 실행시간을 측정/비교하는 방식
- 시뮬레이션(simulation) : 가상으로 cpu 스케줄링 프로그램을 작성해 결과를 확인하는 방식. 입력값은 실제 시스템에서의 cpu 요청내역을 추출해 사용하기도 하는데, 이 값을
트레이스(trace)
라고 부른다.
kukim은 아래의 open_check.c 소스코드를 컴파일하고 실행하였다. 이때 컴퓨터의 내부 작동방식을 자신이 아는 대로 작성해보시오. (C 빌드 과정, 프로세스 메모리 구조에 저장, 스케줄러 알고리즘, 타이머 인터럽트, DMA, 컨택스트 스위칭 활용)
조건
- 시분할, 선점형 스케줄러, 타이머 인터럽트 존재
- open_check.out 프로세스 실행되기 전의 CPU에는 프로세스 A가 실행중인 상태
// open_check.c
#include <unistd.h> // close()
#include <stdio.h> // printf()
#include <fcntl.h> // open()
int main()
{
int fd;
fd = open("data.txt", O_RDONLY);
if (fd == -1)
{
printf("Error: can not open file\n");
return 1;
}
else
{
printf("File opened & not close \n");
close(fd);
return 0;
}
}
📄 답지
kukim의 문제풀이 : https://bit.ly/process_cpu