본문 바로가기

프로그래밍/운영체제(OS)

(18)
[KOCW] 반효경 운영체제 강의 정리 - 6. Process Synchronization 4(Concurrency Control) Dining Philosophers Example(Monitor) 출처 : http://www.kocw.net/home/cview.do?lid=3860d0b9372331de
[KOCW] 반효경 운영체제 강의 정리 - 6. Process Synchronization 3 Bounded-Buffer Problem(Producer-Consumer Problem) Shared Data Buffer 자체 및 Buffer 조작 변수(empty / full beffer의 시작 위치) Synchronization variables mutual exclusion Need binary semaphore(shared data의 mutual exclusion을 위해) resouce count Need integer semaphore(남은 full / empty buffer의 수 표시) 해결 Readers-Writers Problem 한 process가 DB에 write 중 일 때 다른 process가 접근하면 안됨 read는 동시에 여럿이 해도 됨 solution Writer가 DB에 접근..
[KOCW] 반효경 운영체제 강의 정리 - 6. Process Synchronization 2 Semaphores(세마포어) Critical Section으로 들어가기 위한 작업을 추상화 하는 것 Semaphores S 정수형 변수 아래의 두 가지 atomic 연산에 의해서만 접근 가능 Critical Section of n Processes Synchronization variable semaphore mutex; /* intially 1 : 1개가 CS에 들어갈 수 있다. */ Process pi do { P(mutex); /* 만약 가능하다면 접근하고 안된다면 기다린다 */ critical section V(mutex); /* 세마포어의 값을 증가해준다.*/ remainder section } while(1); busy-wait는 효율적이지 못함(=Spin Lock) Block & Wakeu..
[KOCW] 반효경 운영체제 강의 정리 - 6. Process Synchronization 1 데이터의 접근 Race Condition OS에서의 race condition (1/3) OS에서 race condition이 발생하는 경우 kernel 수행 중 인터럽트 발생 시 Process가 system call을 하여 kernel mode로 수행 중인데 context switch가 일어나는 경우 Multiprocessor에서 shared memory 내의 kernel data OS에서의 race condition (2/3) OS에서의 race condition (3/3) multiprocessor Process Syynchronization 문제 공유 데이터(shared data)의 동시 접근(concurrent access)은 데이터의 불일치 문제(Inconsistency)를 발생시킬 수 있다...
[KOCW] 반효경 운영체제 강의 정리 - 5. CPU Scheduling 2 Multilevel Queue Ready Queue를 여러 개로 분할 foreground(interactive) background(batch - no human interaction) 각 큐는 독립적인 스케줄링 알고리즘을 가짐 foreground - RR background - FCFS 큐에 대한 스케줄링이 필요 Fixed Priority Scheduling 모든 foreground 작업이 끝난 뒤 background 작업을 한다. 기아 현상이 생길 수 있다. Time Slice 각 큐에 CPU time을 적절한 비율로 할당 예를들어 80%는 foreground queue에서 RR 작업을 하고 20%는 background에서 FCFS 작업을 한다. Multilevel Feedback Queue 프로세스..
[KOCW] 반효경 운영체제 강의 정리 - 5. CPU Scheduling 1 CPU and I/O Bursts in Program Execution CPU만 연속적으로 쓰는 단계 : CPU burst I/O를 실행하는 단계 : I/O burst CPU-burst Time의 분포 여러 종류의 job(=process)이 섞여 있기 때문에 CPU 스케줄링이 필요하다 Interactive job에게 적절한 response 제공 요망 CPU와 I/O 장치 등 시스템 자원을 골고루 효율적으로 사용 프로세스의 특성 분류 프로세스는 그 특성에 따라 다음 두 가지로 나눔 I/O-bound process CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job (many short CPU bursts) CPU-bound process 계산 위주의 job (few very long CPU..
[KOCW] 반효경 운영체제 강의 정리 - 4. Process Management 2 fork() 시스템 콜 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 parent */ printf("\n Hello, I am parent!\n"); fork() 시스템 호출에 의해 프로세스가 생성된다. 새 주소 공간에 호출자의 복제본을 생성한다. exec() 시스템 콜 int main() { int pid; pid = fork(); if(pid == 0) { /* this is child */ printf("\n Hello, I am child! Now I'll run date \n"); execlp("/bin/..
[KOCW] 반효경 운영체제 강의 정리 - 4. Process Management 1 프로세스 생성 (Process Creation) 부모 프로세스(Parent process)가 자식 프로세스 (Children process) 생성 프로세스의 트리(계층 구조) 형성 프로세스는 자원을 필요로 함 운영체제로부터 받는다. 부모와 공유한다. 자원의 공유 부모와 자식이 모든 자원을 공유하는 모델 일부를 공유하는 모델 전혀 공유하지 않는 모델 수행 (Execution) 부모와 자식은 공존하며 수행되는 모델 자식이 종료(terminate) 될 때까지 부모가 기다리는(wait) 모델 주소 공간 (Address space) 자식은 부모의 공간을 복사함 (binary and OS data) 자식은 그 공간에 새로운 프로그램을 올림 유닉스의 예 fork() 시스템 콜이 새로운 프로세스를 생성 부모를 그대로 ..