컴퓨터언어/운영체제(31)
-
은행원 알고리즘
👍 은행원 알고리즘이란? 짧게 복습하면, 다중프로그래밍에서 여러 프로세스가 한정된 자원을 오류 없이 사용하도록 순서를 부여한 것이 상호배제였고, 상호배제라는 것 때문에 특정 상황에서 대기중인 프로세스가 무한정 기다리게 되는 불상사가 생긴 것이 교착상태였다. 그리고 교착상태를 아예 제거한다는 것은 앞선 상호배제부터 부정한다는 말이기 때문에 다중프로그래밍으로서 모순이 있어 좋지 않은 방법이었고, 교착상태를 인정하되 똘똘한 운영체제가 알아서 회피해가자는 것이 "교착상태 회피"였다. 그리고 교착상태 회피의 알고리즘이 바로 "은행원 알고리즘"이다. 은행원 알고리즘은 은행에서 대출해주는 직원에서 착안한 것이다. 대출하고자 하는 고객 = 프로세스 고객의 대출한도 = 프로세스가 실행에 있어 필요로 하는 자원의 총량 고..
2020.07.08 -
교착상태
👍 교착상태란? 운영체제는 프로세스가 임계구역에 동시접근하지 못하도록 상호배제 알고리즘을 사용한다. 그런데 만약 실행상태인 프로세스가 무한루프에 빠지거나(점유와 대기 상태의 교착상태), 준비상태인 프로세스와 실행상태인 프로세스가 서로 종속적인 경우라면(환형 상태), 현재 실행상태인 프로세스는 영원히 끝나지 않을 것이다. 이렇게 여러 프로세스가 하나의 자원을 공유하여 사용하고 있을 때 서로 사용할 자원을 요구하지만 그렇지 못하여 무한정 기다리는 상태를 "교착상태"라고 한다. 교착상태는 분명 좋지 않은 것이다. 운영체제는 얼마든지 교착상태가 안 일어나도록 예방할 수 있다. 하지만 교착상태를 아예 없애기에는 너무 극단적이다. 왜냐하면 교착상태도 결국 상호배제가 아니면 생길 수 없는 현상이기 때문이다. 따라서 ..
2020.07.08 -
모니터
👍 모니터란? 컴퓨터의 임계구역을 지키기 위한 알고리즘이 상호배제이며, 그중 대표적인 것이 세마포어라고 하였다. 모니터란 세마포어를 실제로 구현한 프로그램을 말한다. 2020/07/07 - [컴퓨터언어/운영체제] - 임계구역(위험지구)과 상호배제 2020/07/07 - [컴퓨터언어/운영체제] - 세마포어 공유자원(임계구역)을 원하는 프로세스는 반드시 모니터의 진입점(Entry)을 호출해야 하며, 모니터 외부에서는 모니터 내부를 들여다볼 수 없도록 "정보 은폐"가 되어있다. 현재 실행중이지 않은 프로세스는 모두 모니터의 경계에서(모니터 들어오기 전) 상호배제된다.
2020.07.08 -
세마포어
👍 세마포어란? 세마포어는 임계구역을 지키기 위한 기존 상호배제 알고리즘이 바쁜대기 현상을 야기하는 것을 방지하고자 개발된 알고리즘이다. 바쁜대기 현상이란 실행중인 프로세스가 질질 끌기 때문에 다른 프로세스가 자기도 CPU할당을 받고자 계속 기웃거리면서 전력낭비를 초래하는 것인데, 세마포어는 프로세스가 이러한 쓸데없는 기웃거림을 못하도록 그냥 재워버리고 나중에 깨워주는 방식을 채택하였다. 예를 들면 다음과 같다. 어느 미용실에 한 명의 미용사(CPU)와 하나의 미용의자(임계구역)가 있다. 어느 날 손님 한명이 와서 머리를 자르고 있는데, 또다른 손님이 등장하였다. 미용실 카운터(운영체제)는 현재 자리가 하나밖에 없으니 기다리셔야 한다고 막았다(상호배제). 그래서 손님은 자리가 찬 것을 확인하고 나갔다. ..
2020.07.07 -
임계구역(위험지구)과 상호배제
👍 임계구역, 그리고 그것을 지키기 위한 상호배제 다중프로그래밍 방식이 되면서 운영체제는 여러 프로세스가 제한된 공유자원에 동시접근하는 것을 막아야 하는 의무가 생겼다. 여기서 공유자원이라는 것은 CPU, 메모리, 주변장치 같은 물체도 될 수 있고, 프로그램 내 변수도 될 수 있다. 즉 여러 프로세스가 동시에 프린터를 쓸 수 없는 것처럼, 커 다란 프로그램은 여러 프로세스로 분할되어 동작하기 때문에 같은 변수를 참조하는 프로세스끼리는 반드시 코드를 순차실행해야 null이 발생하지 않을 것이다. 이처럼 동시에 사용될 수 없는 공유자원(파일)을 "임계구역(Critical Section)"이라고 한다. 그리고 임계구역을 지키기 위한(동시참조를 막기 위한) 해결방안을 "상호배제"라고 한다. 만약 상호배제로도 문..
2020.07.07 -
선점형 프로세스 스케줄링 - RR, SRT, MFQ
👊 RR(Round Robin) 먼저 온 순서대로 처리하는 FIFO 방식을 따르되, "시간할당량"만큼씩만 번갈아가며 처리하는 방식 동일한 시간할당량을 사용하는 시분할 처리 시스템에 효과적이다. 시간할당량 안에 작업을 마치지 않으면 대기 큐의 맨 뒤로 밀린다. 시간할당량이 크면 비선점의 FIFO와 동일하다. 시간할당량이 작으면 인터럽트수, 문맥교환수와 오버헤드(간접부담비용)가 증가한다. 적절한 응답시간을 보장해주는 대화식 사용자에게 효과적이다. RR 평균반환시간 계산하기 작업 서비스시간 도착시간 A 56 0 B 34 3 C 18 5 평균실행시간 = (56+34+18) / 3 = 36 A의 대기시간 = (8+10) + (10+8) + 10 + 4 - 0 = 50 B의 대기시간 = 10 + (10+10) + ..
2020.07.07