본문 바로가기

운영체제 (이화여대 반효경)

운영체제 강의 17 1. 데이터의 접근 데이터는 연산을 필요로 할 때 다른 공간으로 이동하여 연산 후 결과를 다시 받는다. 2. Race Condition 🔍 OS에서 race condition은 언제 발생하는가? 1. kernel 수행 중 인터럽트 발생 시 2. Process가 system call을 하여 kernel mode로 수행 중인데 context switch가 일어나는 경우 3. Multiprocessor에서 shared memory 내의 kernel data 1. 커널모드 running 중 interrupt가 발생하여 인터럽트 처리루틴이 수행 → 양쪽 다 커널 코드이므로 kernel address space 공유 2. 두 프로세스의 address space 간에는 data sharing이 없음 그러나 syste.. 더보기
운영체제 강의 16 📌 Multiple-Processor Scheduling ‣ CPU가 여러 개인 경우 스케줄링은 더욱 복잡해짐 ‣ Homogeneous processor인 경우 ✓ Queue에 한줄로 세워서 각 프로세서가 알아서 꺼내가게 할 수 있다 ✓ 반드시 특정 프로세서에서 수행되어야 하는 프로세스가 있는 경우에는 문제가 더 복잡해짐 ‣ Load sharing ✓ 일부 프로세서에 job이 물리지 않도록 부하를 적절히 공유하는 메커니즘 필요 ✓ 별개의 큐를 두는 방법 vs. 공동 큐를 사용하는 방법 ‣ Symmetric Multiprocessing (SMP) ✓ 각 프로세서가 각자 알아서 스케줄링 결정 ‣ Asymmetric multiprocessing ✓ 하나의 프로세서가 시스템 데이터의 접근과 공유를 책임지고 나머.. 더보기
운영체제 강의 15 5. Multilevel Queue • Ready queue를 여러 개로 분할 ✓ foreground (interactive) ✓ background (batch - no human interaction) • 각 큐는 독립적인 스케줄링 알고리즘을 가짐 ✓ foreground - RR ✓ background - FCFS • 큐에 대한 스케줄링이 필요 ✓ Fixed priority scheduling ‣ serve all from foreground then from background ‣ Possibility of starvation ✓ Time slice ‣ 각 큐에 CPU time을 적절한 비율로 할당 ‣ Eg) 80% to foreground in RR, 20% to background in FCFS.. 더보기
운영체제 강의 14 📌 Scheduling Algorithms • FCFS (First-Come First-Served) • SJF (Shortest-Job-First) • SRTF (Shortest-Remaining-Time-First) • Priority Scheduling • RR (Round Robin) • Multilevel Queue • Multilevel Feedback Queue 1. FCFS (First-Come First-Served) ◎ FCFS : nonpreemptive ◎ Convoy effect : short process behind long process 2. SJF (Shortest-Job-First) ‣ 각 프로세스의 다음번 CPU burst time을 가지고 스케줄링에 활용 ‣ CPU b.. 더보기
운영체제 강의 13 1. CPU와 I/O bursts ✓ CPU burst : 한번에 CPU를 연속적으로 쓰는 시간 ✓ CPU bound job : CPU를 많이 쓰는 프로그램 ✓ I/O bound job : I/O를 많이 쓰고, CPU를 적게 쓰는 프로그램; 주로 사람과의 interaction하는 프로그램이 속함 CPU를 빠르게 주는게 좋음 ⌾ 여러 종류의 job(=process)이 섞여 있기 때문에 CPU 스케줄링이 필요하다 2. 프로세스의 특성 분류 ✓ I/O-bound process : CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job (many short CPU bursts) ✓ CPU-bound process : 계산 위주의 job (few very long CPU bursts) 3. CPU S.. 더보기
운영체제 강의 12 📌 프로세스와 관련한 시스템 콜 ‣ fork() : create a child (copy) ‣ exec() : overlay new image ‣ wait() : sleep until child is done ‣ exit() : frees all the resources, notify parent 📌 wait() 시스템 콜 - 프로세스 A가 wait() 시스템 콜을 호출하면 ✓ 커널은 child가 종료될 때까지 프로세스 A를 sleep시킨다 (block 상태) ✓ Child process가 종료되면 커널은 프로세스 A를 깨운다 (ready 상태) 📌 exit() 시스템 콜 ‣ 프로세스의 종료 ✓ 자발적 종료 • 마지막 statement 수행 후 exit() 시스템 콜을 통해 • 프로그램에 명시적으로 적어.. 더보기
운영체제 강의 11 1. 프로세스 생성 (Process Creation) - 부모 프로세스(Parent process)가 자식 프로세스(children process) 생성 - 프로세스의 트리(계층 구조) 형성 - 프로세스는 자원을 필요로 함 ✓ 운영체제로부터 받는다 ✓ 부모와 공유한다 - 자원의 공유 ✓ 부모와 자식이 모든 자원을 공유하는 모델 ✓ 일부를 공유하는 모델 ✓ 전혀 공유하지 않는 모델 - 수행(Execution) ✓ 부모와 자식은 공존하며 수행되는 모델 ✓ 자식이 종료(terminate)될 때까지 부모가 기다리는(wait) 모델 - 주소 공간 (Address space) ✓ 자식은 부모의 공간을 복사함 (binary and OS data) ✓ 자식은 그 공간에 새로운 프로그램을 올림 - 유닉스의 예 ✓ for.. 더보기
운영체제 강의 10 1. 프로세스 상태도 2. Thread 프로세스 A -> B : 문맥교환은 save, load...와 같이 오버헤드가 많은 작업이다. 하지만 동일한 프로세스 내에서 스레드1 ->2로 cpu가 넘어가는 것은 문맥교환의 오버헤드가 필요없고 효율적으로 수행 가능하다 스레드는 프로세스 내부에서 cpu 수행 단위에 해당하는 것이다. ‣ Thread의 구성 ✓ program counter ✓ register set ✓ stack space ‣ Thread가 동료 thread와 공유하는 부분(=task) ✓ code section ✓ data section ✓ OS resources ‣ 전통적인 개념의 heavyweight precess는 하나의 thread를 가지고 있는 task로 볼 수 있다 ‣ 다중 스레드로 구.. 더보기