본문 바로가기

운영체제5

Operating System Concepts Chapter 7. 교착상태 문제풀이 7.1. North Tunbridge 와 South Tunbridge의 두 Vermont 마을의 농부들의 문제를 해결하기 위해, 교착 상태를 예방하는 알고리즘을 세마포어를 사용하여 설계하시오. 1234567891011void Town_Deadlock{ Semaphore bridge; wait(bridge); // go to bridge signal(bridge); }cs 7.2. 연습문제 7.1 의 해결책을 기아현상이 발생하지 않도록 수정 하시오. 12345678910111213void Town_Deadlock { Semaphore bridge; int turn; while(turn == j); wait(bridge); // go to bridge signal(bridge); turn = j;}cs-> .. 2017. 1. 31.
Operating System Concepts Chapter 6. 프로세스 동기화 문제풀이 chapter 6. 프로세스 동기화 연습문제 6.1. 두 개의 프로세스를 위한 임계 영역 문제에 대한 Dekkers 알고리즘이, 임계영역 문제의 세 가지 요건을 모두 충족시킴을 증명하라. 1. 상호배제 -> 프로세스는 상대 프로세스가 들어가있는지를 flag[j] 로 확인할 수 있다. 이 값이 false 일 때 까지 계속 대기 하기 때문에 상호배제를 충족시킬 수 있다. flag[j]가 true 값을 가질 때는, j 프로세스가 임계영역에 들어가 있다는 뜻이고, j 가 작업을 끝내고 나올 때 이 값을 false 로 바꾸기 때문에 임계영역에는 동시에 들어가지 않는다. 2. 진행, 한정된 대기-> 프로세스는 임계영역에서 나오기 전에, 다른 프로세스에게 turn 을 넘긴다. 그렇기 때문에 기다리던 프로세스들도 반드.. 2017. 1. 18.
Operating System Concepts Chapter 5. CPU 스케쥴링 문제풀이 chapter 5. 연습문제 풀기 숙제 5.1. 스케쥴러가 입출력 중심 프로그램과 CPU 중심 프로그램을 구분하는 것의 중요성? -> 중요하다. 입출력 중심의 프로그램은 대개 짧은 CPU버스트를 가지고, CPU 중심 프로그램은 다수의 긴 CPU 버스트를 가진다. 그렇기 때문에, 이 둘을 구분하는 것은 입출력 중심의 프로그램에 조금 더 많은 우선순위를 두게 함으로써 컴퓨터 자원의 효율적인 사용을 도울 수 있다. 이러한 프로그램의 구분은 스케쥴러가 어떠한 스케쥴링 알고리즘을 선택할 것인지를 결정할 수 있게 하기도 한다. 5.3. 10개의 입출력 중심 태스크와 1개의 CPU 중심 태스크를 실행하는 시스템이다. 입출력 중심 태스크는 CPU에서 1 밀리 초 실행한 후 한 번씩 입출력 요구, 각 입출력 작업은 완료.. 2017. 1. 16.
Operating System Concepts Chapter 4. 스레드 문제풀이 chapter 4. 연습문제 풀기 숙제 4.1 단일 스레드와 비교하여 다중 스레딩 프로그램이 안좋을 수 있는 두 가지 사례 -> 순차적 프로그램(sequential program) 같은 경우 좋지 않은 예가 될 것 같다. 예를 들면, 개인의 세금 환급액을 계산하는 프로그램들이 있다. -> "shell program" 같은 경우가 있다. (C-shell 이나 Korn shell 프로그램) 이러한 프로그램들은 자기 자신의 워킹 스페이스를 감독해야한다. 예를 들면 연 파일, 환경 변수, 최근 작업한 경로 등등을 감독한다. (자기 자신을 감독하는 경우니까 굳이 다중 스레딩으로 하지 않아도 된다는 의미 같다) * sequential program vs parallel program : https://mivulet.. 2017. 1. 10.
Operationg System Concepts Chapter 3. 프로세스 문제풀이 chapter 3. 연습문제 풀기 숙제 3.1 장단점 a. 동기 / 비동기 통신 이 부분은 아무래도 동기와 비동기 방식이 가진 장단점이 그냥 그대로 적용되는 것 같다.-> 동기적 통신 : 동기화가 이루어지면, 반드시 정해진 사람에게 주고받을 수 있다는 장점이 있지만, 메세지 수신 혹은 송신할 수 있을 때까지 봉쇄가 되어 효율이 떨어진다.-> 비동기적 통신 : 빠르게 작업이 이루어지지만 계속해서 메세지를 보내므로 CPU 에 부하가 올 수 있다. b. 자동 / 명시적 버퍼링 -> 자동 버퍼링(무한 용량?)은 송신자가 메세지를 보내기 위해 대기해야 할 일이 없다는 점이 장점같다. 반면 메모리가 많이 들 것 같다. -> 명시적 버퍼링(유한 용량이라고 이해했음...) : 유한한 길이를 가져 큐에 공간이 없으면 송.. 2017. 1. 4.