기록을 남기자

Computer Science/운영체제 29

카테고리 설명
  • 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개가 있을 때, ..

  • Relationship Between Threads and Processes 이 중, 주목해봐야할 관계는 Threads : Processes = 1 : M 스레드가 1개인데 프로세스가 여러개인 형태이다. 위의 시스템은 프로세스가 여러개인데, 스레드가 1개이다. P1, P2, P3가 같은 컴퓨터 시스템 안에 있는 경우라면 이런 방식은 말이 안된다. P1, P2, P3를 네트워크로 연결된 서로 다른 컴퓨터에서 각각의 프로세스를 관리하고 있고, 스레드는 P1에서 실행하다가 P2로 옮겨가고 P3로 옮겨가는 방식이다. 1 : N + M : 1 = N : M Windows Process and Thread Windows의 스레드 관리 방법 Multi-Threading System 을 거의 그대로 따르는, 기본이 되..

  • 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의 실행방식 세가지 1. Non-process kernel OS Kernel을 별개의 객체로 보는 방식이다. 각 Process 관리 방식 != OS kernel 관리 방식 OS는 특별한 권한을 가지고 있다. OS는 별개의 entity로 시스템 안에서 실행되는 객체이다. OS가 작아서 OS전체가 Memory에 올라갈 수 있던 옛날에 가능했던 방식이다. OS가 작아서 전체가 Memory에 올라가, Virtual Memory를 사용할 필요가 없다. 2. Execution Within User Processes OS를 User Process 안에서 실행시키는 방식이다. OS에서 굉장히 중요한 부분 빼고, 나머지 부분들을 Process 안에서 실행 시킨다. P1 ~ Pn까지 User Process안에 OS f..

  • 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 하는 작업을 ..