본문 바로가기

운영체제

(28)
13. Process Synchronization 4 이화여자대학교 반효경 교수님의 운영체제 강의 14강을 듣고 정리한 내용이다. 📌 프로세스 동기화(Process synchronization)는 다른 말로 병행제어(Concurrency control)이라고도 한다. ✏️ Dining Philosophers Example monitor dining_philosopher { enum {thinking, hungry, eating} state[5]; condition self[5]; void pickup(int i) { state[i] = hungry; test(i); if(state[i] != eating) self[i].wait(); /* wait here */ } } void putdown(int i) { state[i] = thinking; /* tes..
12. Process Synchronization 3 이화여자대학교 반효경 교수님의 운영체제 강의 13강을 듣고 정리한 내용이다. ✏️ Bounded-Buffer-Problem(Producer-Consumer-Problem) 공유 데이터 - buffer 자체 및 buffer 조작 변수(empty/full buffer의 시작 위치) Producer(생산자) - 생산자 프로세스는 공유 버퍼에 데이터를 하나 만들어서 집어넣는 역할 Empty 버퍼가 있는지 확인하고, 없으면 기다린다. 공유 데이터에 lock을 건다. Empty 버퍼에 데이터를 입력하고 버퍼를 조작한다. lock을 푼다. Full 버퍼가 하나 증가한다. Consumer(소비자) Full 버퍼가 있는지 확인하고, 없으면 기다린다, 공유 데이터에 lock을 건다. Full 버퍼에서 데이터를 꺼내고 버퍼..
11. Process Synchronization 2 이화여자대학교 반효경 교수님의 운영체제 강의 12강을 듣고 정리한 내용이다. ✏️ Initial Attempts to Solve Problem 두 개의 프로세스가 있다고 가정 $P_0, P_1$ 프로세스들의 일반적인 구조 do { entry section critical section exit section remainder section } while(1); critical section - 공유데이터를 접근하는 구역 entry section을 통해 다른 데이터들이 critical section이 실행되는 동안 접근하지 못하도록 막음(lock) 📌 프로세스들은 수행의 동기화(synchronize)를 위해 몇몇 변수를 공유할 수 있다. → Synchronization Variable ✏️ 프로그램적 해결..
10. CPU Scheduling 2 & Process Synchronization 1 이화여자대학교 반효경 교수님의 운영체제 강의 11강을 듣고 정리한 내용이다. 5. Multilevel Queue 우선순위 스케줄링이 라운드 로빈과 결합한 경우에 효과적 우선순위가 가장 높은 큐에 여러 프로세스가 있는 경우 라운드 로빈 순서로 실행 위로 갈수록 high priority (위에서부터) 시스템, 인터렉티브, 인터렉티브 에디팅, 배치, 스튜던트 순으로 되어있으며, priority의 기준은 다를 수 있음 고려해야 할 것은 process를 어느 줄에 넣을 것이고, 우선순위가 높은 큐만 먼저 처리할 것인가에 대한 고민 Ready queue를 여러 개로 분할 foreground - interactive(대화형) background - batch(배치), no human interaction 포그라운드 ..
9. CPU Scheduling 1 이화여자대학교 반효경 교수님의 운영체제 강의 10강을 듣고 정리한 내용이다. 📄 Process Management 복습 컴퓨터 프로그램이 실행되면, CPU에서 instruction 실행과 오래 걸리는 I/O 작업 실행이 번갈아가면서 실행됨 CPU burst가 짧다 = I/O가 끼어드는 시간 多 CPU burst는 모든 프로그램이 동일하지 않고, 짧거나 긴 프로그램이 섞여 있음 → CPU Scheduling이 필요한 이유 ready queue에 들어와있는 프로그램 중 CPU 넘겨줄 프로그램을 선정(결정) 이 때, 고려할 것은 두 가지 누구에게 CPU를 넘겨줄 것인가 준다면, 계속 쓰게 할 것인가 아니면 중간에 CPU를 뺏어올 것인가 CPU scheduling은 크게 두가지로 나뉨 Non-preemptive..
8. Process Management 2 이화여자대학교 반효경 교수님의 운영체제 강의 9강을 듣고 정리한 내용이다. fork() 시스템 콜 A Process is created by the fork() system call, creates a new address space that is a duplicate of the caller. int main() { int pid; pid = fork(); if (pid == 0) /* this is child */ printf("\n Hello, I am child!\n"); else if (pid > 0) /* this is child */ printf("\n Hello, I am parent!\n"); } fork의 결과값이 다르기 때문에, 자식과 부모 프로세스에게 각각 다른 일을 시킬 수 있음 ..
7. Process Management 1 이화여자대학교 반효경 교수님의 운영체제 강의 8강을 듣고 정리한 내용이다. 프로세스 생성(Process Creation) Copy-On-Write(COW) write가 발생했을 때 copy를 실행 부모 프로세스(Parent Process)가 자식 프로세스(children process) 생성 부모 프로세스는 한 개, 자식 프로세스는 여러 개 프로세스의 트리(계층 구조) 형성 프로세스는 자원을 필요로 함 운영체제로부터 받음 부모와 공유 자원의 공유 부모와 자식이 모든 자원을 공유하는 모델 일부를 공유하는 모델 전혀 공유하지 않는 모델 즉, 공유하는 모델도 있고 공유하지 않는 모델도 있음 원칙적으로는 공유하지 않음 수행(Execution) 부모와 자식은 공존하며 수행되는 모델 자식이 종료(terminate)..
6. Process 2 & 3 이화여자대학교 반효경 교수님의 운영체제 수업 6강과 7강을 듣고 정리한 내용이다. 입출력이 끝날 때까지 아무일도 하지 않으면, 동기식 입출력 (=입출력 실행하지 않고, 기다리기만 함) 사용자 프로세스가 입출력 요청을 한 뒤, 입출력이 진행되는 동안 그 프로세스가 곧바로 CPU를 잡아 instruction(명령)을 진행하면, 이것이 비동기식 입출력(=요청은 하되, 다른 명령도 실행) 구현방법은 좀 더 효율적으로 쓰기 위한 것이며, 구현방법 2가 좀 더 일반적으로 얘기하는 동기식 입출력 " A thread (or lightweight process) is a basic unit of CPU utilization." 프로세스 내부에 CPU 수행 단위가 여러 개 있는 경우, 프로세스를 별도로 두는 것보다 프로세..