기록을 남기자

운영체제복습 20

카테고리 설명
  • Semaphore semWait : Process 를 Block 시킬 수 있는 명령어이다. semSignal : 내가 아니라 Queue에 있는 프로세스를 Ready로 옮겨 실행할 수 있게 해준다. Semaphore는 Critical Section뿐 아니라, 많은 동기화 문제에 사용된다. ↳ 특히 Critical Section을 다룰 때는 무조건 초기 세마포 변수 값을 1로 설정해야 한다! Race Condition : 실행 순서에 따라 결과가 어떻게 될지 모르는 상황 → 여러 프로세스가 Critical Section 을 동시 접근할 때 발생한다. 어느 위치에 semWait과 semSignal를 사용할지 잘 선택해야 한다. Mutual Exclusion Using Semaphore 하늘색 네모 부분은 해당..

  • Requirements for Mutual Exclusion Mutual Exclusion Mutual Exclusion : 전체 코드가 아닌, Critical Section code 가 한 번에 하나의 프로세스만 실행할 수 있도록 하는 것. Mutual Exclusion 은 어떠한 경우에도 지켜져야 한다. 오직 하나의 프로세스만 Critical Section 의 자원에 접근할 수 있다. → Critical Section Code 가 아닌 코드는 막 섞여서(interleaving, overlapping) 실행되어도 상관 없다. Critical Section Code 와 Non-Critical Section Code 가 섞여 실행되는 것도 상관 없다. ⇒ Non-Critical Section Code 와 ..

  • 🌟 Mutual Exclusion: Software Approach (3) 🌟 Mutual Exclusion이 지켜지는 것 중요 DeadLock이 걸릴 경우의 수 존재 → 둘 다 true이면 while문을 둘 다 돌게 된다. 🌟 Mutual Exclusion: Software Approach (4) 🌟 DeadLock과 LiveLock의 차이점 = while문을 빠져나올 가능성 내가 Critical Section에 들어가려면, while문 마지막에 본인 flag를 true로 바꾸고 while문에 있는 상대편 flag가 false인 것을 보고 Critical Section에 진입하기 때문에 Mutual Exclusion이 성립한다. LiveLock이 걸릴 가능성이 있다. → 한 줄 한 줄 번갈아가며 TIM..

  • Multiple Processes 최신 운영체제 설계의 핵심은 여러 프로세스 를 관리하는 것이다. 시스템이 프로그램을 1개만 실행한다면, OS가 복잡할 이유가 없다. ⇒ 시스템이 여러 프로그램을 동시에 실행하려고 하기에 문제가 발생하고 이를 해결하기 위해 OS가 복잡해지는 것이다. 여러가지 프로그램을 실행시킨다고 할 때 사용하는 용어가 세가지 존재한다. 1. Multiprogramming 메모리를 잘라서 여러 프로그램들을 메모리에 집어 넣고, 이 프로그램들을 번갈아가면서 실행한다. → 이 경우, CPU의 개수는 상관이 없다 . 메모리 안에 여러 프로그램이 들어가서 번갈아가며 실행되기만 하면 Multi-Programming 이라고 할 수 있다. 2. Multiprocessing CPU가 N개가 있을 때, ..

  • fork() Parent Process가 Child Process를 만들라는 명령어 → Child Process는 Parent Process의 모든 코드를 copy해간다. int main(){ int i; fork(); for(i=0;i Thread 생성 시간 프로세스 생성 → 모든 것을 copy 해야한다. 프로 독립된 구조체이다. 즉, 프로세스는 복사하게 되면 많은 양의 정보들을 복사해야하기 때문에 생성시간이 길어진다. ⇒ 생성시간도 길어지게 되고, 없앨 때도 메모리, 자원, 스위칭 시간 등등을 할당된 자원을 다시 반납해야 하기 때문에 소요시간이 길어지게 된다. ↔ 하지만, Thread는 프로그램 코드와 데이터를 Share 를 할 수 있기 때문에 모든 것을 copy할 필요가 없다. ⇒ 생성시간이 줄어들..

  • OS 또한 Program이기에 Memory의 공간을 차지한다. tree가 pointer와 연결되어 있다. Primary Processiable 또한 OS에서 관리한다. Swapping Area에는 하드디스크일지라도 File Area에 들어 있는 실행 파일과 다르게 Code + Data + PCB + Stack이 모두 포함된 Process 상태로 저장되어 있다. Process Description OS가 Process를 어떻게 관리하는지가 중요하다. Operating System Control Structure 1. 각각의 Process와 여러가지 Resource의 Current Status에 대한 정보를 관리한다. 2. OS는 System 내부 자원 관리를 위해 다음의 네가지 테이블을 만들어서 관리한다...

  • OS는 프로그램을 정확하게, 효율적으로 관리해야한다. Application Program 을 관리하는 것이 첫 번째 일이다. OS는 시스템 안에서 실행되는 모든 프로그램을 관리할 때 어떤 형태의 자료구조 안에 넣고 관리를 하는가를 알아보도록 하자. Process 실행중인 프로그램 OS 입장에서는 프로그램이 어디까지 실행했는지가 중요하다. 프로그램이 실행을 시작하면 OS가 얘를 관리를 해야한다. 프로그램들을 어떠한 형태로 관리를 할 것이다. 그럼 OS 입장에서 프로그램을 어떠한 형태로 관리하느냐? 1. Sequence of instructions 한 줄 한 줄 프로그램을 실행하다보면 OS에게 중요한 것은 지금 어디까지 실행시켰는지가 매우 중요하다. 프로그램을 항상 save 하고 restore 하는 작업을 ..

  • Major Achivements of OS 1. Process 실행 중인 프로그램 컴파일 → 이진코드로 하드디스크에 저장이 되어 있다. 이 프로그램을 실행시키면 메모리에 올라가서 실행이 되게 된다. 실행하고 있는 프로그램을 OS가 Process라는 형태로 관리한다. ⇒ OS가 하는 일 중에 가장 중요한 일이 우리의 프로그램을 정확하고 효율적으로 실행시키는 것이다. 2. Memory Management 메모리는 모든 프로그램을 실행할만큼 크지 않다. → 메모리를 여러개로 잘라서 프로그램 여러개를 동시에 집어 넣어야 한다. 메모리 크기가 아무리 커도 그것보다 더 큰 프로그램이 존재할 수 있다. Virtual Memory 항상 프로그램의 일부만 갖다가 메모리에 넣고 실행을 하다가 다른 부분이 필요하면 그때 그..