STUDY/운영체제 (13) 썸네일형 리스트형 Secondary Storage Architecture Disk Scheduling : 하드웨어 효율을 위해서 하드 디스크의 헤드 움직임을 줄이도록 스케줄링하는 것이다. 즉 스케줄링을 잘해서 디스크 seek time을 줄이는 것이 목표이다. 디스크의 구조 디스크는 arm이라고 불리는 축을 중심으로 헤드라고 하는 장치가 판을 돌며 read, write를 시도한다. 이때 데이터가 있는 트랙에 헤드가 위치하도록 찾아서 이동하는 시간이 바로 seek time이다. 우리나라 말로 하면 '탐구 시간'이다. 탐구 시간을 줄여야 효율이 좋다. 디스크 스케쥴링 알고리즘은 이 트랙을 찾는 순번에 대한 절차를 결정한다. Disk Scheduling Algorithms FCFS : queue에 들어온 순서대로 이동한다. 이동거리는 sector 사이의 거리이다. 위와 같이 FCFS.. Implementing File System 운영체제에서 file system의 구현은 다음과 같이 두 가지의 형태이다. 1. On-disk structure hard-disk 라고 불리는 secondary storage에 있는데 2차 저장장치에 구현된 구조이다. 2. In-memory structure memory에 파일을 올려놓고 어떻게 쓸지에 관한 구현이다. 이 중에서 유닉스에서의 on-disk structure 구현만 살펴보도록 하자. On-Disk Structure master boot record는 부트로더가 저장되는 곳이다. 어찌되었든 운영체제 또한 sw이므로 메모리에 올라가야 실행이 된다. 따라서 이렇게 메모리에 운영체제 sw를 올려두는 것이 부트로더의 역할이다. 이 부트 로더가 저장되는 곳이 바로 master boot record이.. Virtual Memory Management 이전 포스트에서 운영체제의 핵심 기능 중 하나인 memory management를 살펴보았다. 하지만 memory management의 고질적인 문제 중 하나는 역시 "메모리 부족" 사태이다. 이를 해결하기 위한 것이 바로 가상 메모리 기법이다. Virtual Memory Management : main memory와 disk 사이를 번갈아가며 메모리를 교체하는 swapping이 핵심이다. 따라서 main memory보다 훨씬 더 많은 메모리가 있는 것 처럼 여길 수 있다. 그럼 이 방법은 어떤 방식으로 이루어질까? Background virtual memory management는 logical address와 physical address를 분리한다. 그 이유는 한번에 프로그램은 모든 코드를 필요로 .. memory management strategies2: page table의 구현 이전 포스팅에서 paging 기법과 이를 위한 핵심 알고리즘인 page table에 대해 살펴보았다. 2022.01.10 - [STUDY/운영체제] - memory management strategies 그렇다면 내부적으로 page table은 대체 어떻게 구현되어 있을까? Implementation of page table page table : logical address를 physical address로 변환하기 위한 자료구조로써, main memory에 위치해 있다. 따라서 운영체제에서는 page table에 접근하기 위해 두가지의 register를 사용한다. 1. PTBR, page table base register : 메모리 내에서 page table이 시작되는 위치를 찾는 용도 2. PTL.. memory management strategies memory management strategies : 운영체제에서 제한된 메모리의 효율적인 사용과 참조방식을 구사하기 위한 전략 운영체제의 주요 기능 중 하나인 memory management는 3가지 목적이 있다. memory management goals 1. convenient abstraction for programming : 프로그래밍 시 쉽게 메모리를 사용 2. maximize perfomance with minimal overhead : 제한적인 memory 용량을 효율적으로 관리할 수 있도록 resource를 분배하고 오버헤드를 줄여서 성능을 최대화 3. provide isolation between process : process들 간의 독립적인 메모리 사용 보장 운영체제는 이러한 m.. deadlocks The Deadlock problem : 자원을 점유하고 있으면서 서로의 자원을 점유하기 위해 무한정 대기하는 문제 예를 들면 semaphore A와 B를 기다리는 프로세스 두개를 생각해보자 process 0의 wait(A)가 실행되고 context switch가 발생하여 process 1이 수행된다고 하자. 이 경우 process 1에서 wait(B)를 수행하고 나면 A와 B 모두 품절된 상태이다. (A는 0이, B는 1이 가져감) 그런데 process 1에서는 A를 대기하고 있고, process 0에서는 B를 대기하고 있다. 즉 서로의 자원을 서로가 대기하고 있기 때문에 무한정 대기하는 현상이 발생한다. 이와 같은 상황을 deadlock 이라고 한다. deadlock characterization :.. synchronization 2 지난 포스트에서 동기화 기법인 Lock에 대해서 살펴보았다. 하지만 spinlock이나 disabling interrupt는 short, simple critical section에서만 효과적이다. Mutual exclusion을 제외하고는 별달리 뭘 해주지 않기 때문이다. 따라서 이를 해결하기 위해 동기화 기법들이 여럿 나오게 되었다. user mode에서 동기화를 해주는 것을 High level synchronization이라고 하며 우리가 자주 쓰는 semaphore, monitor는 여기에 해당한다. High level synchronization semaphore : shared data의 갯수 semaphore는 사용가능한 shared data의 수를 의미한다. 따라서 semaphore가 있는.. synchronization multi-threaded system에서는 shrared date를 사용하는 경우가 있다. 당연히 multi-process에서도 발생한다. 이 경우 실행 순서 조절과 동기화 처리는 필수이다. synchronization - shared resources - coordinate the execution order 만약 synchronization이 되어 있지 않다면 어떤일이 발생할까? race condition : concurrent thread/process들이 shared data에 경쟁적으로 접근하는 상황 -> context switch를 연산자 단위가 아니라 시간 단위로 나누어서 처리하기 때문에 instruction 순서가 변경되기 때문에 발생한다. 이러한 race condition은 non-de.. 이전 1 2 다음