본문 바로가기

STUDY

(30)
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..
File I/O system call in LINUX UNIX 계열 운영체제에서 파일의 종류는 크게 두 종류이다. 하나는 regular file, 우리가 흔힌 생각하는 파일이다. 예를 들면 txt, c, cpp 등등 또 다른 하나는 I/O device를 file 로 추상화한 special file이다. 이러한 파일에 데이터를 읽고 쓰는 read, write와 같은 함수들은 우리가 흔히 "비싼" 함수라고 한다. 그렇다면 이 함수들은 왜 비싼 함수라고 불릴까? 바로 이러한 입출력 함수들은 운영체제를 거쳐 실행되기 때문이다. 이렇게 운영체제에 도움을 요청하는 함수를 system call이라고 한다. linux에서 제공해주는 file i/o를 위한 system call을 알아보자 이번 함수의 기준은 man page를 기준으로 작성하였다. 다음은 가장 많이 쓰이는 ..
shell commands 보호되어 있는 글입니다.
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가 있는..