본문 바로가기

Operating System

(6)
[Ch 6] Synchronization: Critical Section Problem, Mutex Lock, Semaphore 서로 다른 프로세스들은 address space를 공유하거나 shared data를 사용할 수 있다. 이 때 이들이 동시에 실행되면 data inconsistency가 발생할 수 있는데, 이 chapter에서는 data consistency가 유지될 수 있도록 cooperating process들의 순차적 실행을 보장하는 synchronization 방법들을 살펴보도록 한다. 6.1 Background 프로세스 간 변수를 공유하는 상황에서 발생할 수 있는 data inconsistency를 구체적으로 살펴보도록 한다. 예를 들어, 두 프로세스 1, 2에서 count라는 변수를 공유해서 사용한다. 변수에 값을 쓰는 것은 assembly instruction level에서는 1) count 변수를 레지스터로..
[Ch 5] CPU Scheduling, Dispatcher, Criteria, Algorithms 5.1 Basic Concepts Single core 시스템에서 어떤 시점에 실행될 수 있는 프로세스의 수는 최대 1개이다. 여기서 multiprogramming의 목표는 항상 어떤 프로세스가 CPU에서 실행되도록 함으로써, CPU utilization을 최대화하는 것이다. Multiprogramming이란 실행이 완료되지 않은 프로세스 2개 이상이 메모리에 올라와있는 것을 말한다. 하나의 프로세스는 I/O request와 같이 wait 해야 하는 상황이 되기 전까지 실행될텐데, wait 해야 하는 상황을 만나면 CPU가 idle 상태에 놓이게 된다. 이 때, OS가 해당 프로세스로부터 CPU 제어권을 가져와서 다른 프로세스에게 할당해주고, 이런 방식이 반복되며 여러 프로세스들이 번갈아 실행되는 것이다..
[Ch 4] Thread: Benefits of Multithreading, <pthread> library 4.1 Overview Thread는 CPU utilization의 기본 단위이다. Thread는 thread ID, PC, register, stack으로 구성되며, 같은 프로세스에 속한 다른 thread들끼리 코드, 데이터(global data), 파일과 같은 다른 OS resource들을 공유한다. Traditional process는 하나의 thread를 가졌지만, multiple thread를 가지면 동시에 여러 개의 task를 수행할 수 있다. 4.1.2 Benefits 1) Responsiveness: User와의 interaction에 대한 responsiveness를 향상시킬 수 있다. User의 클릭을 받는 것과 time-consuming task를 서로 다른 thread로 만들어두면,..
[Ch 3-2] Process creation, termination 3.3 Operations on Processes 3.3.1 Process Creation 실행 중인 프로세스는 새로운 프로세스를 만들 수 있는데, 이 때 프로세스를 만드는 입장을 parent process, 이에 의해 새롭게 생긴 것을 child process라고 한다. Child process는 또 새로운 child process를 만들 수 있을 것이므로, 이런 식으로 프로세스들이 트리 구조를 이루게 된다. 각 프로세스는 고유한 번호인 process identifier (이하 pid)를 가지며, kernel은 이 번호를 인덱스로 사용하여 각 프로세스의 속성에 접근하게 된다. 아래 그림은 Linux OS에서 프로세스들이 트리 구조를 이루고 있는 것을 나타낸다. 시스템이 부팅되자마자 systemd라는 프..
[Ch 3-1] Process: Concepts, Process Control Block, Context Switch 3.1 Process Concepts 3.1.1 The Process Process의 정의는 a program in execution 이다. 프로그램은 디스크에 저장되어 있는 코드(=list of instruction)로서 passive entity이며, process는 PC 레지스터가 다음 명령어를 가리키고 있고 여러 자원을 할당받는 active entity이다. 프로그램의 아이콘을 더블 클릭하거나 (file_name).out 명령어를 command 창에 입력하면, 프로그램이 메모리에 load 되면서 비로소 process가 된다. Process가 현재 수행하고 있는 activity를 나타내는 status로는 우선 program counter와 CPU의 각종 register들이 있다. 다음으로는 메모리인..
[Ch 1] Introduction to Operating System 1.1 What Operating Systems Do 컴퓨터 시스템은 크게 4가지 계층으로 나누어 볼 수 있는데, hardware, OS, application program, user이 그것이다. OS는 여러 user들이 여러 application을 사용할 수 있도록 하드웨어를 제어하는 역할을 한다. 여기서는 user의 관점과 system의 관점으로 나누어 OS의 역할을 살펴본다. 1.1.1 User View User 관점에서는 우선 사용하기에 편리해야 하며, user가 현재 하고 있는 일의 효율성을 최대화하도록 해야 한다. 마치 user의 프로그램이 컴퓨터의 모든 자원을 독점(monopolize)하고 있다는 착각을 주도록 말이다. 최근에는 스마트폰, 태블릿 등 user가 소통하는 기기가 다양해지는데,..