프로세서 :
컴퓨터 내에서 프로그램을 수행하는 하드웨어 장치이다.
이는 중앙처리장치를 뜻한다.
프로세스의 정의 :
사용자가 임의의 프로그램을 실행시키는 명령을 지시하면
운영체제는 저장되어 있는 프로그램을 주기억장치에 저장한다.
주기억장치에 있는 프로그램은 중앙처리장치(CPU)에 의해 실행되거나 실행 준비 상태에 있는데,
이러한 프로그램을 프로세스라고 부른다.
프로세스의 공인된 정의가 없는 이유 :
실행 중인 프로그램, PCB를 지닌 프로그램, 프로그램 카운터를 지닌 프로그램,
능동적 개체로, 순차적으로 수행하는 프로그램 등 상황에 따라 프로세스는 다양하게 정의되기 때문이다.
프로세스란 현재 실행 중이거나 곧 실행이 가능한 PCB를 가진 프로그램이다.
하나의 프로세스는 중앙처리장치의 실행과 입출력 대기 등과 같은 서로 구분되는 상태를 반복적으로 거치면서 완료되며, 하나의 작업이 접수되어 완료될 때 까지는 다음과 같은 여러 상태의 변화를 거치게 된다.
실행 상태 - 프로세스가 중앙처리장치를 차지하고 있는 상태
준비완료 상태 - 중앙처리장치가 사용 가능하게 될 때 그것을 할당받을 수 있는 상태
보류 상태 - 프로세스가 중앙처리장치를 차지하고 처리하다가 입출력 처리 등을 하게 되면 중앙처리장치를 양도하고
입출력 처리가 완료될 때 까지 기다리고 있는 상태
프로세스의 상태 전이
1. 작업이 시스템에 제시되면 스풀러에 의해 디스크에 수록되어 대기 상태가 된 후
2. 시행될 프로세스로 만들어 준비완료의(큐)의 가장 뒤에 삽입한다.
3. 프로세서 스케줄러는 준비완료 상태에 있는 여러 프로세스 중 실행될 프로세스를 선정하여 중앙처리장치를 할당하며, 그 프로세스는 준비완료 상태에서 실행 상태로 변환된다.(dispatch)
4. 프로세스가 할당시간이 지날 경우, 그 프로세스로 하여금 중앙처리장치를 일단 포기하게 함으로써
프로세스는 준비완료 상태로 변환이 일어난다.(time runout)
5. 실행 상태의 프로세스가 할당시간을 초과하기 전에 입출력이 발생하면 중앙처리장치를 양도하고
입출력이 완료될 때 까지 보류 상태로 변환된다.(block)
6. 입출력 처리가 완료되면 보류 상태의 프로세스에게 입출력 처리 완료를 알려
준비완료 상태로 전환시켜야 한다(wakeup).
이런 여러가지 프로세스의 상태에 대한 조사와 통보는 트래픽 제어기가 담당한다.
스케줄링의 목적은 여러 가지가 있는데 그 중 눈여겨봐야할 것은
실행의 무한 지연을 피해야 한다는 것이다.
많은 경우에 있어 실행의 무한 지연은 교착 상태만큼 나쁠 수도 있다.
이를 피하기 위한 가장 좋은 방법이 에이징이다.
이것은 프로세스가 자원을 오래 기다릴수록 그 우선순위를 높이는 방법이다.
스케줄링 정책 :
스케줄링 정책은 어떤 작업을 수행하기 위한 기준이나 방법이다.
선점/비선점 과 우선순위, 대표적으로 이 두 가지가 있다.
스케줄링 기법 :
스케줄링 기법은 FCFS 스케줄링, SJF 스케줄링 등과 같은 알고리즘을 말한다.
선점과 비선점을 비교해서 설명, 비선점 프로세스가 실행 중일 때 프로세스가 인터럽트 처리할 수 있는가?
, 선점 프로세스와 비선점 프로세서의 예 :
스케줄링 방법이 비선점일 경우에는 하나의 프로세스가 중앙처리장치에 할당되면
그 프로세서의 수행이 끝날 때까지 중앙처리장치는 그 프로세스로부터 빠져나올 수 없다.
하지만 스케줄링 방법이 선점인 경우에는 하나의 프로세스가 중앙처리장치를 차지하고 있을 때
다른 프로세스가 현재 수행 중인 프로세스를 중지시키고 자신이 중앙처리장치를 차지할 수 있다.
비선점 프로세스가 실행 중일 때 프로세스가 인터럽트를 처리할 수 없다.
선점 스케줄링은 우리가 주로 쓰는 대화형 시스템에 많이 쓰이고,
비선점형 스케줄링은 배치 시스템에 많이 쓰인다.
엄격한 비선점 스케줄링을 잘 사용하지 않는 이유를 기술 :
엄격한 비선점식 스케줄링을 잘 사용하지 않는 이유는
짧은 프로세서가 오랫동안 대기하게 될 경우 비효율적이고, 기아상태가 발생할 수 있기 때문이다.
다음 각각에 대해 맞는지 틀리는지를 구분하고 각각을 설명하시오.
- 프로세스가 중앙처리장치를 강제로 탈취할 수 없으면 이는 비선점 스케줄링 기법이다. (O)
- 실시간 시스템은 보통 선점 중앙처리장치 스케줄링을 사용한다. (O)
- 시분할 시스템은 보통 비전섬 중앙처리장치 스케줄링을 사용한다. (X)
설명 : 시분할 시스템이나 실시간 시스템은 빠른 응답시간을 유지하기 위해 선점 스케줄링 방법을 사용한다.
- 우선순위 기법의 한 가지 약점은 시스템은 충실히 우선순위를 따르지만
실제로 그 우선순위는 별로 의미가 없다는 점이다. (X)
설명 :
우선순위 스케줄링 알고리즘의 주요 문제는 무한 대기와 기아 현상이다.
낮은 우선순위의 프로세스들의 무한 대기 문제에 대한 해결책은 에이징이다.
오랫동안 시스템에서 대기하는 프로세스들의 우선순위를 점진적으로 증가시키는 방법이다.
프로세스 간 평균 문맥 교환 시간 s , 입출력 위주 작업이 입출력 요구 실행하기 전까지
중앙처리장치 사용 평균 시간 t , 할당량 q,
다음과 같이 할당량을 결정할 때의 영향을 각각 기술하시오.
1) q= 무한대
: 할당시간이 너무 크면, 각 프로세스는 그 프로세스를 처리 완료하는데 필요한 시간보다 많은 시간이 할당되므로
이때의 라운드 로빈 방법은 FCFS 방식과 같은 형식이 된다.
2) q = 0보다 약간 큰 수
: 할당시간이 너무 적으면, 문맥 교환을 위한 오버헤드가 무시 못할 요소가 되어 결과적으로 대부분의 시간이
중앙처리장치를 분배하는데 소모되므로 사용자의 연산을 실행하는데 보내는 시간이 줄어 시스템의 성능이 떨어진다.
3) q=s
: ???
4) s < q < t
: 문맥 교환이 발생한다.
5) q = t
: 프로세스는 정해진 시간 내에 끝나고 문맥 교환은 필요하지 않는다.
6) q > t
: 프로세스는 정해진 시간 내에 끝나고 문맥 교환은 필요하지 않는다.
다단계 큐 스케줄링 알고리즘의 특징은 무엇인가?
작업들을 여러 그룹으로 나누어 여러 개의 큐를 이용하는 기법으로,
전면작업 프로세스들과 후면작업 프로세스들로 나눈다.
전면작업 프로세스들은 후면 작업 프로세스들보다도 높은 우선순위를 가진다.
HRN 스케줄링 기법에 의한 각 프로세스 CPU 할당 우선순위는?
SRT 기법의 단점, 성능을 높이기 위해서 이 기법을 어떻게 변형해야 하는가?
SJF 스케쥴링 기법을 선점 기법으로 변형시킨 것으로 시분할 시스템에 유용하나
SJF보다 더 많은 비용이 소요되며,
또한 SRT는 각 프로세스가 서비스를 받을 시간이 기록 보유되어야 하기 때문에 오버헤드가 늘어난다.
SRT 기법의 성능을 높이기 위해 임계치를 부여해서 조정하는 방법이 있다.
수행 중인 작업을 끝내는 데 소요되는 시간이 이 임계치보다 적다면
시스템은 중간에 그 작업을 중지하지 않고 완료될 때 까지 수행하도록 한다.
다단계 피드백 큐가 다음 각 스케줄링 목적을 달성하는 방법을 설명하시오.
1) 짧은 작업을 선호한다.
2) 입출력 위주의 작업을 선호하며 입출력장치의 활용도를 높인다.
3) 작업의 성격을 가능한 빠른 시간 내에 알아내어 그 성격에 알맞게 관리한다.
다음 각각이 왜 옳지 않은지를 설명하시오.
1) SRT는 SJF보다 평균 응답시간이 적게 걸린다. (X)
: SRT는 작업을 하다 남은 처리 시간이 더 짧다고 판단되는 프로세스가 생길 시
원래 작업 중인 프로세스를 중단하기 때문에 SJF보다 시간이 더 오래 걸린다.
2) SJF는 모든 프로세스에 대해 공평하다. (X)
: SJF는 수행시간이 가장 짧은 것을 먼저 수행하는 비선점 스케줄링 방식이다.
3) 작업이 짧을수록 더 좋은 서비스를 받아야 한다. (X)
그래야 한다는 법은 없다. 우선순위의 기준은 수행시간의 짧음만 있는 것이 아니다.
4) SJF는 짧은 작업을 선호하기 때문에 시분할 시스템에 좋다. (X)
SJF는 비선점 방식이기 때문에 적절한 응답시간을 보장받지 못한다.
따라서 적절한 응답시간이 보장되어야 하는 시분할 시스템 상황에서는 적당하지 못하다.
이 작업들에 대한 평균 반환 시간은 얼마인가?
작업 | 도착 시간 | 수행 시간 |
1 | 0.0 | 8 |
2 | 0.4 | 4 |
3 | 1.0 | 1 |
1) FCFS
31.6 / 3 ≒ 10.53
2) SJF
28.6 / 3 ≒ 9.53
3) SRT
19 / 3 ≒ 6.33
FCFS 기법이 대화식 사용자에게 적당하지 못한 이유는? :
빠른 응답 시간을 보장할 수 없기 때문이다.
라운드 로빈 기법에 대해서 설명 :
라운드 로빈 기법은 시분할 시스템을 위하여 고안된 선점 스케줄링 방식의 하나이다.
쉽게 설명하면 순서대로 시간단위를 CPU에 할당하는 방식이다.
스레드 :
스레드는 프로세스의 실행 단위라고 할 수 있다.
대부분 프로그램들의 경우 서로 독립적인 일들을 불필요하게 순차적으로 수행하는 사실을 개선하기 위해
프로세스보다 작고 독립적으로 스케줄링이 가능한 스레드라는 개념이 도입되었다.
스케줄의 단위가 되는 스레드의 특성 :
각 스레드는 서로 독립적이다.
스레드의 실행/종료 순서는 예측불가능하다.
스레드들은 수행을 위해 스케줄되고 결과들은 프로세스에게 전달된다.
프로그램에 있는 스레드의 수는 다른 스레드에게 알려지지 않는다.
스레드는 프로그램의 외부에서는 보이지 않는다.
스레드는 서로 독립적이지만, 한 스레드가 취한 행동은 프로세스에 있는 다른 스레드에 영향을 미친다.
스레드는 프로세스의 일부분이기 때문에 프로세스의 자원들을 공유하지만 그 자신의 처리시간과 스택, 레지스터들이 할당된다.
한 프로세스가 exit() 시스템 콜을 통해 종료되면, 모든 스레드들도 종료하게 된다.
중량 프로세스와 경량 프로세스를 구분하여 설명 :
중량 프로세스는 하나의 스레드를 가진 프로세스를 말한다.
프로세스 내에 스레드가 없다면 프로세스는 수행될 수 없으며 스레드는 프로세스 내에 반드시 존재해야 한다.
반면 경량 프로세스는 프로세스 내에 두 개 이상의 스레드를 포함하고 있을 경우 그 각각을 말한다.
단일 프로세서 상의 메모리나 다중 프로세서 상의 단일 공유 메모리에서 실행된다.
'전공 지식 정리 > 운영체제' 카테고리의 다른 글
#4 가상 메모리 관리 (0) | 2022.06.14 |
---|---|
#3 기억장치 관리 (0) | 2022.04.20 |
#1 운영체제 소개 (0) | 2022.04.18 |