largando
운영체제 과제(2) DeadLock_MainMemory_VirtualMemory 본문
1. 다중 처리기 시스템을 위한 동기화 프리미티브를 구현할 때 인터럽트를 사용하는 것이 부적합한 이유를 설명하시오.
한 처리기에서 인터럽트를 통해 프로세스가 임계구역에 접근하는 것을 방지해도 다른 처리기에서 임계구역에 접근하는 것을 막을 수 없다. 따라서 다른 처리기에서 해당 임계구역에 접근할 수 있기 때문에 다중처리기 시스템을 위한 프리미티브를 구현할 때 인터럽ㅌㅌ를 사용하는 것은 부적합하다.
2. "바쁜 대기(busy-waiting)"의 의미는 무엇인가? 운영체제 안에서 이 방식과 다르게 기다리는 방식은 무엇인가? 바쁜 대기를 전혀 사용하지 않은 수 있는가?
Busy-waiting이란 임계영역에 진입할 수 있는지 조건을 계속 검사하면서 대기하는 상태이다. 한 프로세스가 임계 영역에 있으면, 다른 프로세스는 자신의 진입 코드를 계속 반복 실행하는데 이를 busy-waiting이라 한다. Busy-waiting은 CPU를 점유하기 때문에 이 시간동안 다른 프로세스를 실행할 수 없다.
운영체제 안에서 이 방식과 다르게 기다리는 방식은 blocking이다. block연산은 프로세스를 block-queue에 넣고, 프로세스의 상태를 대기 상태로 전환한다. 이후 제어가 CPU 스케줄러로 넘어가서 스케줄러는 다른 프로세스를 실행시키고, 봉쇄된 프로세스는 다른 프로세스가 signal()을 실행하면 wake-up되어 수행된다. 이 경우 signal을 실행 하여 wake-up을 수행해야 하는 overhead가 있다. 또 wait상태에서 signal이 실행되었는지 확인해야 하므로 busy-waiting를 전혀 사용하지 않는 것은 아니다.
3. 현재 시스템의 상태가 다음과 같다.
Allocation |
Max |
Available |
|
|
A B C D |
A B C D |
A B C D |
P0 |
0 0 1 2 |
0 0 1 2 |
1 5 2 0 |
P1 |
1 0 0 0 |
1 7 5 0 |
|
P2 |
1 3 5 4 |
2 3 5 6 |
|
P3 |
0 6 3 2 |
0 6 5 2 |
|
P4 |
0 0 1 4 |
0 6 5 6 |
|
a) Need 행렬을 구하시오.
A B C D
P0 0 0 0 0
P1 0 7 5 0
P2 1 0 0 2
P3 0 0 2 0
P4 0 6 4 2
b)안전 순서(safe sequence)를 구하시오.
P0 à P2 à P1 à P3 à P4
P0 à P2 à P3 à P4 à P1
(여러 경우가 있음)
4. 내부 단편화(internal fragmentation)와 외부 단편화(external fragmentation)를 비교 설명하시오.
내부 단편화는 메모리에 프로그램을 적재 후 남는 영역으로 고정 분할에서만 발생하는 단편화이다. m워드 크기의 기억장소를 필요로 하는 어떤 작업이 n>=m인 n워드 크기의 영역에서 실행될 때, 이 두 워드의 차(n-m)을 말한다.
외부 단편화는 고정 분할과 가변 분할 모두에서 발생할 수 있다. 어떤 영역이 사용되지 앟고 남아있어서 이용할 수 있지만, 대기 중인 작업의 크기에 비해 기억장소가 작아 적재하지 못 하는 영역을 말한다.
5.
'Operating System' 카테고리의 다른 글
운영체제 과제(1) (0) | 2019.08.25 |
---|---|
Ch.7 교착상태 (Dead Lock) (0) | 2019.08.11 |