Concurrency하게 동작하는 프로세스들에서 발생하는 Race Condition, Critical section problem과 이들을 해결하는 Peterson's solution, Atomic Instruction 등에 대해서 알아보세요!!
mutex lock, semaphore, monitor, condition variable을 통한 shared data의 관리 방법!
bounded-buffer, read-write, dining philosopher 문제를 해결하는 synchronization example에 대해 알아보자!!
Deadlock, Resource allocation graph, Deadlock avoidance
메모리는 현대 컴퓨터 시스템에서 매우 중요한 역할을 수행한다. 우리는 CPU를 통해 멀티 프로세스들을 효율적으로 사용하기 위해 논리적 주소를 사용한다. CPU가 바라보는 논리적 주소는 메모리와 어떻게 매핑되는 것인가?
연속 할당으로 인해 파편화가 발생하는 문제를 해결하는 paging헤 대해서 알아보자!
제한된 메모리 공간을 최대한 활용하자!!
가상 메모리를 활용해서 우리는 실제 메모리보다 더 큰 용량의 프로그램을 실행할 수 있다!!
page fault가 발생했을 때, free frame이 없다면 우리는 어떤 페이지를 교체해야 할 것인가?
Thrashing 상태에 빠져 CPU utilization이 낮아지는 것을 막기 위해 Locality를 활용한 Working Set Model에 대해서 알아보자!!
메모리 할당을 효율적으로 관리하는 Buddy System & Slab Allocator에 대해서 알아보자!!
컴퓨터는 데이터와 유저 프로그램을 영구적으로 저장할 수 있는 대용량 저장 장치를 제공해야 한다. 그중에서도 가장 대표적인 HDD와 SSD에 대해서 알아보자!
HDD는 들어오는 데이터 요청을 어떻게 처리하느냐에 따라서 disk arm이 움직이는 거리가 달라지고, 이는 데이터 처리 속도에 큰 영향을 미친다. 따라서 효과적인 Scheduling 알고리즘이 필요하다!!
RAID, Partition, Error detection 등 다양한 스토리지 관리 방법에 대해서 알아보자!!
OS가 I/O system을 관리하는 방법에 대해서 알아보자!!