목록분류 전체보기 (129)
봉황대 in CS
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 주소 결속 (Address Binding) 프로그램은 이진 실행 파일 형태로 디스크에 저장되어 있다. 주 메모리와 프로세서 자체에 내장되어 있는 레지스터들은 CPU가 직접 접근할 수 있는 유일한 범용 저장장치이기 때문에 모든 실행되는 명령어와 데이터들은 주 메모리와 레지스터에 있어야 한다. 즉, 프로그램이 실행되기 위해서는 주 메모리로 올라와 "프로세스"가 되어야 한다. 아래의 그림은 프로그램이 주 메모리에 올라가기 위해서 거쳐야 하는 과정을 나타낸 것이다. 일반적으로 컴파일(compile)과 링킹(linkin..
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 교착 상태 처리 방법 1. 교착상태가 되지 않도록 사전에 조치하는 방법 (예방, 회피) 2. 교착상태 방치 후 탐지하여 복구하는 방법 (탐지, 복구) 교착상태 예방과 회피 방법을 사용하지 않을 경우에는 시스템의 상태를 주기적으로 검사하여 교착상태가 발생했는지를 탐지하는 알고리즘과 만약 교착상태가 탐지되었다면 교착상태로부터 시스템을 복구(회복)하는 알고리즘이 반드시 지원되어야 한다. 교착상태 탐지(detection) 교착상태를 탐지하는 알고리즘은 Banker's 알고리즘과 비슷한 원리로 동작한다. 이 알고리즘을 ..
* 본 글은 '운영체제(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) 프로세스 대기 큐 정수 변수에 ..