운영체제
-
교착상태 탐지운영체제/교착상태 2018. 2. 4. 15:01
교착상태 발생이 가능한 시스템에서 지원해야할 것교착상태가 발생했는지 결정하기 위해 시스템의 상태를 결정하는 알고리즘교착상태로부터 회복하는 알고리즘 교착상태 탐지 시 실행 시간이 소요되며 교착 상태로부터 회복할 때는 오버헤드가 발생한다. 각 자원 타입이 한 개씩 있는 경우모든 자원들이 한 개의 인스턴스만 가진다면 대기 그래프를 사용해 교착상태를 탐지할 수 있다대기 그래프가 사이클을 포함하는 경우에만 시스템에 교착 상태가 존재하므로 주기적으로 그래프에서 사이클을 조사하여 교착상태를 탐지한다.그래프에서 사이클을 탐지하는 알고리즘은 O(n^2)의 연산을 요구한다. 여기서 n은 정점의 수이다. 각 타입의 자원을 여러 개 가진 경우각 자원이 복수의 인스턴스를 가질 경우 은행원 알고리즘에서 설명한 안전성 검사 알고리..
-
교착상태 회피운영체제/교착상태 2018. 2. 4. 14:58
교착 상태 회피 방법은 자원이 어떻게 요청될 지에 대한 정보를 미리 파악하여시스템이 불 안전 상태로 진입하지 않도록 하는 것이다. 안전 상태시스템이 프로세스들이 요청하는 모든 자원을 어떤 순서로든 교착 상태를 야기시키지 않고 차례로 모두 할당해 줄 수 있는 상황을 안전 상태라고 한다. 모든 프로세스들을 무사히 마칠 수 있는 순서를 찾을 수 없으면 불안전 하다고 한다. 단일 인스턴스 자원 유형 에서는 자원 할당 그래프 알고리즘을 사용하고다중 인스턴스 자원 유형 에서는 은행원 알고리즘을 사용한다. 예를 들어 시스템이 이러한 상태일 때 최대 자원 12 최대 소요량 현재 사용량 P0 10 5 P1 4 2 P2 9 2 P1 - P0 -P2 순서로 자원을 할당 해 주는 것이 안전 순서이다. 안전 순서시스템이 프로세..
-
교착상태 예방운영체제/교착상태 2018. 2. 4. 14:55
교착 상태가 발생하기 위한 네 가지 조건 중 최소한 하나가 성립하지 않도록 보장함으로써 교착상태의 발생을 예방할 수 있다. 단점 : 자원의 낭비가 심함 예방 방법 상호 배제 : 여러 개의 프로세스가 공유 자원을 사용할 수 있게 한다. 점유 대기 : 프로세스가 실행되기 전 모든 자원을 할당해 준다. 비 선점 : 자원을 점유하고 있는 프로세스가 다른 자원을 요구 할 때 자신이 점유한 자원을 반납하고 다른 자원을 기다리도록 한다. 순환 대기 : 자원에 고유한 번호를 할당하고 번호 순서대로 자원을 요구하도록 한다.
-
교착상태의 특징운영체제/교착상태 2018. 2. 4. 14:51
필요 조건들교착 상태는 한 시스템 내에서 다음에 네 가지 조건이 동시에 성립할 때 발생한다.따라서 네 가지 조건 중 하나라도 성립하지 않도록 만든다면 교착상태를 해결할 수 있다. 상호 배제 : 자원은 한 번에 한 프로세스만이 사용할 수 있어야 한다. 점유 대기 : 최소 하나의 자원을 점유하고 있으면서 다른 프로세스에게 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다. 비 선점 : 다른 프로세스에게 할당된 자원은 사용이 끝날 때 까지 빼앗을 수 없어야 한다. 순환 대기 : P1은 자원을 점유하고 있으면서 P2 의 자원을 요구하고P2도 자원을 점유하고 있으면서 P1의 자원을 요구해야 한다. 자원 할당 그래프프로세스와 자원의 요청 및 할당 관계를 표시한다.순환 대기 조건을 ..
-
모니터운영체제/프로세스 동기화 2018. 2. 4. 01:07
세마포어를 이용하여 임계 구역 문제를 해결할 때 프로그래머가 세마포어를 잘못 사용할 경우 다양한 유형의 오류가 쉽게 발생한다.이 오류는 상호 배제 요구 조건을 위반하거나 교착 상태를 발생시킨다모니터는 쉽고 효율적인 프로세스 동기화 수단을 제공하는 고급 언어 수준의 동기화 구조물이다. 모니터 사용법추상 데이터 형은 데이터와 이 데이터를 조작하는 함수들의 집합을 하나의 단위로 묶어놓은 것이다. 모니터 형의 표현은 다른 프로세스들이 직접 사용할 수 없고, 모니터 내에 정의된 함수만이 모니터 내의 지역 변수와 형식 매개변수들에 접근할 수 있다.모니터 구조물은 모니터 안에 항상 하나의 프로세스만이 활성화 될 수 있도록 보장한다.모니터 구조물은 동기화 기법을 모델링하는 데에는 충분한 능력을 제공하지 않기 때문에 c..
-
고전적인 동기화 문제들운영체제/프로세스 동기화 2018. 2. 4. 01:04
유한 버퍼 문제유한 버퍼 문제는 동기화 문제의 대표적인 예로서 데이터를 생산하는 생산자 프로세스와 데이터를 소비하는 소비자 프로세스 간에 한정된 공유 버퍼를 사용하는 문제이다.이 문제에서 소비자와 생산자는 다음과 같은 자료구조를 공유한다. int n; semaphore mutex = 1; semaphore empty = n; semaphore full = 0; n개의 버퍼들로 구성된 풀이 있으며 각 버퍼들은 한 항목을 저장할 수 있다고 가정한다.mutex 세마포어는 버퍼 풀을 접근하기 위한 상호 배제 기능을 제공하며 1로 초기화된다.empty 세마포어는 비어있는 버퍼의 수를 기록하며 n값으로 초기화 된다.full 세마포어는 꽉 찬 버퍼의 수를 기록하며 0으로 초기화된다. 생산자가 counter을 올리는 ..
-
세마포어운영체제/프로세스 동기화 2018. 2. 4. 00:40
세마포어는 뮤텍스와 비슷하게 동작하지만 프로세스들이 자신의 행동을 더욱 정교하게 동기화 할 수 있는 방법을 제공한다. 세마포어 S는 정수 변수로 초기화를 제외하고는 원자적 연산인 wait() , signal() 로만 접근 가능하다. 세마포어 사용법 운영체제는 카운팅 세마포어와 이진 세마포어를 구분한다. 카운팅 세마포어의 값의 범위는 제한이 없고, 이진 세마포어의 값은 0과 1 사이의 값만 가능하다. 따라서 이진 세마포어는 뮤텍스 락과 유사하게 동작한다. 카운팅 세마포어는 유한한 개수를 가진 자원에 대한 접근을 제어하는데 사용될 수 있다. 세마포어는 사용 가능한 개수로 초기화 된다. 각 자원을 사용하려는 프로세스는 세마포어에 wait() 연산을 실행하고 세마포어의 값을 감소시키고 작업이 끝나고 자원을 방출..