Computer Science/운영체제 29
-
Paging System Paging System 은 프로그램을 Page 크기로 나누는 것이다. 주소를 붙일 때 주소는 논리주소가 되는데, Page# + Offset 과 같이 표현한다. Relocation Relocation → Page Table 을 사용한다. Page Table 에서 1번이면, 페이지 1번라는 뜻이고, 이 1번 페이지가 페이지 프레임 몇번에 들어있는지 하는 프레임 번호를 얻어온다. 얻은 프레임 번호를 앞쪽에 적고, 뒤에는 offset을 그대도 사용한다. 프레임번호 + offset ⇒ Physical Address 가 된다. Paging System 에서 알아야 하는 것 가상주소 적는 방법 Physical Address 로 변환하는 방법 계산하는 과정 Protection Memory 를..
-
Memory Management Subdividing memory to accommodate multiple processes Memory needs to be allocated efficiently to pack as many processes into memory as possible 우리가 사용하고 있는 메모리 시스템은 프로그램 전체를 통으로 집어넣을 수 없다. 메모리 크기에 비해 프로그램의 크기가 굉장히 큰 것도 있고, 동시에 여러 프로그램들을 실행시키고 싶어서 가능한 많은 프로그램을 메모리에 올려 놓으려는 측면도 있다. 그러다보니 프로그램의 일부만 메모리에 올라와서 실행을 하게 되는 시스템이 구현되었다. 이를 Virtual Memory System 이라고 한다. Virtual Memory Sys..
-
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..
-
Semaphore semWait : Process 를 Block 시킬 수 있는 명령어이다. semSignal : 내가 아니라 Queue에 있는 프로세스를 Ready로 옮겨 실행할 수 있게 해준다. Semaphore는 Critical Section뿐 아니라, 많은 동기화 문제에 사용된다. ↳ 특히 Critical Section을 다룰 때는 무조건 초기 세마포 변수 값을 1로 설정해야 한다! Race Condition : 실행 순서에 따라 결과가 어떻게 될지 모르는 상황 → 여러 프로세스가 Critical Section 을 동시 접근할 때 발생한다. 어느 위치에 semWait과 semSignal를 사용할지 잘 선택해야 한다. Mutual Exclusion Using Semaphore 하늘색 네모 부분은 해당..