기록을 남기자

운영체제복습 20

카테고리 설명
  • Disk Scheduling 1. First-in, First-out (FIFO) 큐에 먼저 들어온 request 부터 처리한다. 2. Shortest Service Time First 실행시간이 짧은 request 부터 처리한다. 3. SCAN 굉장히 공정한 방법이다. Starvation 발생 가능성이 거의 없다. (완벽하게 없진 않다. 특정 트랙에 계속해서 request 가 쏟아지면 진행을 못할 수도 있기 때문이다.) → 완벽하게 fair 하냐? X, 어떤 상황에서 완벽하게 fair 하지 않나? 디스크 안에 여러 트랙이 있는데 중간 트랙에 있는 request가 있고 안쪽끝과 바깥쪽 끝에 있는 request가 있다. request가 딱 도착을 했을 때 헤더가 그 트랙에 대한 서비스를 끝마치고 트랙을 막..

  • Operating System Design Objectives I/O I/O cannot keep up with processor and main memory speed ==> Efficiency is an important issue I/O 에서는 속도가 매우 중요하다. 하드디스크 성능이 나쁘게 되면 아무리 CPU 나 메모리가 좋아도 성능이 올라갈 수 없다. Uniform Desirable to handle all I/O devices in a uniform manner ==> Generality is an important issue I/O device 들을 access 하는데 uniform 한 방법으로 access 하고 싶다. monitor이든 file 이든 입출력시 동일한 명령을 사용해서 같은 방..

  • Design Issues 프로세스가 시스템 안에 들어왔을 때 이 프로세스를 어느 CPU 에게 할당해줄 것 인가? CPU 마다 개별적인 Queue 를 줄 것인지? Global Queue 를 줄 것인지? ✅ MultiProgramming? Uni-Processor 에서는 MultiProgramming 은 당연한 것 Block 은 주로 I/O 작업에 의해서 발생하는데, 하나의 application 안에서 여러개의 프로세스들 또는 스레드들이 만들어져서 굉장히 빈번하게 동기화를 한다고 했을 때의 Block 상태는 I/O 작업을 위한 Block 이 아니라 동기화를 위한 Block(Semaphore Wait) 또는 데이터를 주고 받기 위한 Block 과 같은 상황이 주이다. 이 경우, Switching 을 하는 것보..

  • Deadlock Avoidance Logic 시스템의 상태 설명 (global data structure) resource[m] : 원래 이 시스템 안에 자원이 각각 몇개씩 있는지? avaiavble[m] : 그 자원들 중, 할당 후 남아있는 자원? claim[n][m] : 모든 프로세스가, 나는 이 타입의 자원을 몇개까지(최대 동시 요청 가능) 요청할거다 라는 걸 미리 OS에게 미리 얘기해주는 것 alloc[n][m] : 실제 각각의 프로세스들이 현재 가지고 있는 자원, 어떤 자원이 몇개인지? Resource allocation algorithm safe인지 unsafe인지 판단하기 전, 두 가지 조건이 존재한다. → 시스템이 safe인지 unsafe한지 판단할 필요도 없는 그런 상황을 말한다. 1. ..

  • deadlock을 아예 발생시키지 않으면 좋지만, deadlock을 막을 수 없는 경우가 존재한다. ⇒ OS가 deadlock을 막아줘야 한다. Deadlock 정의 A set of processes is deadlocked when each process in the set is blocked awaiting an event that can only be triggered by another blocked process in the set. Deadlock 이 발생하기 위해서는 최소한 둘 이상의 프로세스가 필요하다. block 이 되어야 한다. (프로세스가 멈추지 않고 실행하고 있으면 deadlock이 아니다.) block 이 되었다고 해서 무조건 deadlock은 아니다. ↳ block 이 존재하면 ..

  • Chapter 1 Q. Interrupt가 걸려도 왜 바로 처리를 하지 않을까? Fetch Stage → Execute Stage → Interrupt Stage 왜 Fetch, Execute 이후에서야 Interrupt가 처리될까? Interrupt가 처리된 이후에는 PC가 복귀가 되어 PC에 저장된 다음 명령어가 실행되기 때문에 이전 명령어는 처리가 완료되어야 있어야 한다. Instruction cycle Fetch-Execute이 진행되면 PC가 증가되어 버리기 때문에 완료되지 않은 상태에서 인터럽트가 진행되고, PC가 복구되면 이전 명령어는 진행되지 못하게 된다. Fetch stage가 끝나고 Execute Stage가 끝나기 전에 인터럽트 처리를 하고 다시 원래 실행하던 프로그램으로 돌아오면, ..

  • Multiple Processes 1. Multiprogramming 메모리를 잘라서 여러 프로그램들을 메모리에 집어 넣고, 이 프로그램들을 번갈아가면서 실행한다. → 이 경우, CPU의 개수는 상관이 없다 2. Multiprocessing CPU가 N개가 있을 때, 프로그램들이 동시에 실행되는 것 ⇒ CPU가 하나일 때는 Multi-Processing 이라고 말할 수 없다. Multi-Programming 을 포함한다. 3. Distributed Processing 각각 하나씩 CPU와 OS를 갖고 있는 컴퓨터들을 하나의 네트워크로 연결해서,원래 있던 OS위에 하나의 OS Layer (Distributed OS)를 덮어서,여러개의 CPU를 갖고 있는 것처럼 실행한다. ⇒ 프로세스들이 여러군데에서 동시에..

  • Semaphore를 사용할 때 어떤 상황에서 프로세스가 기다려야 하는가? 프로세스가 몇 개의 Queue로 나뉘어져 관리가 되어야 하는가? → Queue의 개수를 결정해야 한다. Queue의 수만큼 Semaphore를 생성한다. → Semaphore 1개당 Queue 1개 Semaphore에는 딱 두가지 함수만이 존재한다. → 이 두가지 함수만으로 다양한 동기화 문제를 해결할 수 있다. semWait semSignal Bounded Buffer using Semaphores 위의 코드에서 세마포는 3가지가 존재한다. s → Queue에 Produce와 Consumer가 섞여서 들어간다. n → Queue에 Consumer만이 들어간다. e → Queue에 Producer만이 들어간다. Producer Pr..