1) 다중 프로그래밍 운영체제에서는 한 순간에 여러 프로세스가 공유하는 데이터와 자원에 대하여 한 순간에는 반드시 프로세스 하나만 자원이나 데이터를 사용하도록 하여야 한다. 임계영역과 임계자원에 대하여 설명하세요
임계자원과 임계영역의 정의
임계자원(Critical Resource): 두 프로세스가 동시에 사용할 수 없는 공유 자원
임계영역(Critical Section): 임계자원을 사용하는 프로그램의 일부분
임계영역의 조건
1) 상호배제 – 어떤 프로세스가 임계영역에서 작업 중, 다른 프로세스 임계영역으로 진입 불가
2) 진행 – 임계영역을 실행 중인 프로세스가 없는 상태에서 임계영역을 진입하려는 프로세스가 있다면 임계영역 진입을 할 수 있게 해야 함.
3) 한정 대기 – 다른 프로세스가 임계영역을 무한정 기다리는 상황을 방지하기 위해 임계영역에 한 번 들어갔던 프로세스는 다음에 임계영역에 다시 들어갈 때 제한 함
2) 경쟁상태(race condition)에 대하여 설명하고 이를 피할 수 있는 방법인 상호배제에 대하여 설명하세요.
경쟁상태(Race Condition)
1) 접근 순서에 따라 실행 결과 달라지는 상황 발생
2) 공유데이터에 마지막으로 남는 데이터의 결과 보장할 수 없는 상황
초기 상호배제 방법
1. Disabling Interrupts
1) 임계영역 진입하며 인터럽트 기능 해지
2) 임계영역 나오면서 인터럽트 기능을 다시 가능하게 함
3) 문제점: 인터럽트 해지 후 복구 안할 시 시스템 자체 서비스 못하게 됌
2. Lock 변수
1) 임계영역 진입하며 Lock = 1 설정
2) 임계영역 나오면서 Lock = 0 설정
3) 문제점: Lock 변수 설정하는 중 다른 프로세스에게 CPU가 양보되면
2개 프로세스가 Lock 변수 수정하는 상황도 가능하며 동시에 2개 프로세스가 임계영역에 진입하게 됌
3. Turn 변수
1) 0번 프로세스는 대기하다가 turn = 0 되면 임계영역 진입
2) 0번 프로세스는 임계영역 나오며 turn = 1로 설정
3) 문제점: 항상 0 프로세스와 1 프로세스가 번갈아 임계영역에 진입하여야 함
3) 상호배제를 위한 방법은 다양하면서 동시에 임계영역에 들어가 경쟁상태에 빠질 수 있는 한계를 모두 가지고 있다. 우선순위 역전 현상과 깨우기 분실 현상에 대하여 설명하세요. 세마포의 값이 음수일 때 그 의미는 무엇인가요 ?
우선순위 역전 현상(Priority Inversiton Problem)
è 바쁜 대기(Busy Waiting)를 기반으로 상호배제 하여 문제 해결
è 예) 대통령, 국무총리, 시민 한 명이 같은 KTX에 타고 있다.
1) 대통령과 시민이 갑자기 대변이 마려웠다
2) 화장실은 1칸 밖에 없고 열쇠도 1개밖에 없다.
3) 이 열쇠는 다른 이름으로 ‘세마포어’라고 부른고, 열쇠관리는 화장실 관리인인 커널의 ‘스케줄러’가 한다.
4) 시민은 비록 우선순위가 가장 낮지만 재빠르기 때문에 대통령과 국무총리가 화장실을 가고 싶어하기 전에 관리자에게 먼저 ‘열쇠’를 달라한 후 화장실에서 일을 보기 시작했다.
5) 대통령이 관리자에게 급하다며 열쇠를 달라고 한다.
6) 그러나 관리자는 열쇠가 없다며 기다리라고 한다.
7) 그래서 대통령은 열쇠가 다시 나올 때까지 기다려야 한다, 즉 대기를 타기 시작한다.
8) 갑자기 국무총리가 일이 생겼다며 ‘커널’에게 CPU를 부여해 달라고 한다.
9) 같은 공유자원인 화장실을 제외한 CPU 자원을 국무총리에게 할당한다.
10) 국무총리가 일을 다 마치고 난 후, 커널은 CPU를 대통령과 시민 중에서 다시 시민에게 준다. 왜냐하면 키가 시민에게 있었기 때문이다.
11) 신나게 대변을 보고난 후 키를 반납하면 그제서야 대통령에게 키를 전해준 후 이용하라 한다.
12) 대통령이 1순위였지만 우선순위는 3순위인 시민보다도 낮아져버렸다.
è 이것이 우선순위 역전현상이다.
깨우기 분실 현상(Lost Wakeup Problem)
è Busy Waiting 기반 상호배제의 우선순위 역전 현상에 대한 해결책으로 Sleeping Wakeup 방식 도입
è Sleeping Wakeup 방법은 wakeup 신호를 분실하여 2개 프로세스가 모두 sleep 하는 상황 발생 가능
세마포 음수값의 의미
è 바쁜 대기 세마포에서는 세마포 값은 절대 음수가 될 수 없지만
è Sleep wakeup 세마포에서는 음수값이 가능하고
è 음수값의 의미는 세마포를 기다리는 프로세스 수를 나타낸다. 즉 Sleep 하고 있는 수를 나타낸다.