목록운영체제 (50)
봉황대 in CS
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 교착 상태 처리 방법 1. 교착상태가 되지 않도록 사전에 조치하는 방법 (예방, 회피) 2. 교착상태 방치 후 탐지하여 복구하는 방법 (탐지, 복구) 앞서 설명한 교착상태 예방 대책은 교착상태 발생 조건이 성립 것 자체를 부정하는 방법을 미리 마련하여 각 프로세스가 이를 지키도록 강제하는 방법이었다. 그 대책들은 자원의 활용도를 낮게 하고 시스템의 처리량을 감소시키거나, 기아 상태도 발생 가능한 등 여러 부수적인 문제들이 있다. 교착상태 회피(avoidance) 교착상태 회피는 프로세스 일생 동안 자원 요청에 ..
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 교착상태 문제를 처리하는 데에는 3가지 방법이 존재한다. 1. 시스템이 결코 교착상태가 되지 않도록 보장하기 위해 교착상태를 예방하거나 회피하는 프로토콜을 사용하는 방법 2. 시스템이 교착상태가 되도록 허용한 다음에 탐지하여 회복(복구)시키는 방법 3. 문제를 무시, 교착상태가 시스템에서 결코 발생하지 않는 척한다. 대부분의 운영체제들은 3번째 방법을 사용하고 있으며, 이에 교착상태를 처리하는 프로그램을 작성하는 것은 프로그래머의 몫이다. 1번째와 2번째 방법에 대하여 차근차근 알아보자. 1. 교착상태가 되지 ..
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 프로세스는 자원을 다음의 순서로만 사용할 수 있다. 1. 요청 프로세스는 자원을 사용하기 전에 반드시 요청해야 한다. 지정된 태스크를 수행하기 위해 필요한 만큼의 자원을 요청할 수 있으며, 요청된 자원의 수는 시스템에서 사용 가능한 전체 자원의 수를 넘어서서는 안 된다. 요청이 즉시 허용되지 않으면 요청 프로세스는 자원을 얻을 때까지 대기해야 한다. 2. 사용 프로세스는 자원에 대해 작업을 수행할 수 있다. 3. 방출 프로세스는 자원 사용 후에는 해당 자원을 반드시 방출해야 한다. 교착상태 (Deadlock) ..
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 고전적인 동기화 문제들에는 다음의 3가지가 존재한다. 생산자-소비자 문제 (Producer-Consumer Problem) 독자-저자 문제 (Readers-Writers Problem) 식사하는 철학자들 문제 (The Dining-Philosophers Problem) 생산자-소비자 문제는 앞에서 임계 구역을 통한 해결법을 다뤘으며, 식사하는 철학자들 문제는 'Chapter 7. 교착상태' 파트에서 다룰 예정이다. Readers-Writers Problem과 그 해결 방안에 대하여 알아보자. Readers-Wr..
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 공유 변수의 간섭 문제를 해결하기 위한 상호 배제 및 동기화 프로그래밍 수단으로는 뮤텍스(Mutual Exclusion, Mutex)와 세마포어(Semaphore)가 있다. 하지만 이 둘을 사용할 때는 우선순위 역전 문제가 발생할 가능성이 있다. 우선순위 역전 문제 (Priority Inversion Problem) 우선순위 역전 문제는 높은 우선순위 프로세스가 현재 공유 자원을 사용하고 있는 낮은 우선순위 프로세스를 기다려야 하는 경우에 발생한다. T1, T2, T3 세 개의 프로세스가 있다고 하자. 이때 우..
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 공유 변수의 간섭 문제를 해결하기 위한 상호 배제 및 동기화 프로그래밍 수단으로는 뮤텍스(Mutual Exclusion, Mutex)와 세마포어(Semaphore)가 있다. Mutex는 while문을 사용하는 busy waiting 알고리즘이었다면, 세마포어는 프로세스를 자원 가용 상태에 따라 대기 상태 또는 준비 상태로 천이시키는 block/wakeup 알고리즘이다. 세마포어 (Semaphore) 세마포어는 일종의 객체로, 다음의 구성을 가진다. 하나의 정수 변수 (value) 프로세스 대기 큐 정수 변수에 ..
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 공유 변수의 간섭 문제를 해결하기 위한 상호 배제 및 동기화 프로그래밍 수단으로는 뮤텍스(Mutual Exclusion, Mutex)와 세마포어(Semaphore)가 있다. 뮤텍스는 자원에 대한 접근을 동기화하기 위하여 사용되는 상호 배제 기술이다. 프로그램이 시작될 때 고유한 이름으로 생성되며, 프로세스 혹은 스레드는 임계 구역에 들어가기 전에 반드시 뮤텍스 lock을 얻어야 하고, 임계 구역을 빠져나올 때 반환해야 한다. 뮤텍스를 소프트웨어적으로 구현하는 방법과 하드웨어적으로 구현하는 방법에 대하여 알아보자..
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 협력적 프로세스의 주요 이슈 : 결정성 / 상호 배제와 동기화 / 교착 상태 / 기아 프로세스 비간섭 관계 프로세스 시스템에서 두 개의 프로세스가 있을 때 1. 한 프로세스가 다른 프로세스를 선행하거나 (이 경우에는 간섭이 발생할 가능성이 없음) 2. 이들이 서로 독립적일 경우 한 프로세스의 출력 장소가 다른 프로세스의 입력 장소나 출력 장소가 아니면 이들은 비간섭 관계에 있다고 정의한다. 두 프로세스가 독립적이라는 것은 두 프로세스 사이에 선행 제약 관계가 없다는 것이다. 만약 두 프로세스가 독립적이지 않고,..