운영체제(8)
-
운영체체(9), Main Memory
Memory Management 메모리 관리의 목표 개발자가 메모리가 어떻게 되어있는지를 몰라도 쉽게 사용할 수 있도록 돕는다. 비싼 자원인 메모리를 효율적으로 사용할 수 있도록 하고, 메모리 프로텍션(두 개 이상의 프로세스를 독립적으로 만들어서)을 제공하는 목표를 가지고 운영체제가 메모리를 관리한다. 개발자가 몰라도 잘 사용할 수 있도록 추상화를 잘 해준다. Batch programming - monitor가 프로그램을 메모리에 올리고 이를 모니터링하다가 job을 처리하는 식으로 진행했다. 이때는 프로그램 하나가 메모리를 모두 썼다. 실제 ram의 주소를 사용해서 처리했다. 어차피 프로그램을 하나만 올려서 사용했기 때문이다. Multiprogramming - 여러 프로세스가 메모리에 올라가서 동작해야하..
2022.12.18 -
운영체제(7), Synchronization Examples
Synchronization Examples 어플리케이션 프로세스나 쓰레드가 사용하는 모델로는 세마포, 모니터, 뮤텍스 럭이 있다. 세마포는 카운팅, 바이너리가 있다. 바이너리 세마포는 뮤텍스 락과 동일하다. 운영체제에서는 스핀락과 인터럽트 enable, disable 방법을 사용한다. 1. Classical problem of Synchronization 1) Bounded-Buffer Problem 프로듀서는 데이터를 큐에 삽입하고, 컨슈머는 큐에서 데이터를 뽑아 사용한다. 큐를 공용으로 사용하기에 동기화 문제가 발생할 수 있다. 이는 두 가지 문제점이 있다. 우선 count, data, out은 모두 shared data이다. 어셈블리어로 이를 살펴보면 세개의 인스트럭션으로 쪼개지고, 그 사이에 인..
2022.12.18 -
운영체제(6), Synchronization Tools
Synchronization Tools CPU sheduling을 할 때에는 Fair하면서 response time을 최소화 하는 것이 중요했다. 이번 챕터에서는 프로세스 동기화에 대해 배울 예정이다. 프로세스 생성, 종료, 협력(Inter process communication) 등에 대해 얘기했고, 이는 쓰레드도 마찬가지이다. 예를 들어 크롬 브라우저는 플러그인 프로세스, 탭 별로 렌더링 프로세스, 브라우저 프로세스 등등이 있었다. 사용자의 입력이나 디스크를 읽거나 리모트 웹을 읽는 역할의 브라우저 프로세스이 수행되고, 어떤 시점에서 렌더링 프로세스와 동기화가 되어야지 데이터를 주고 받을 수 있다. 어떤 시스템 콜을 사용해서 동기화를 이뤄낼 것인가, 혹은 동기화를 커널이 알아서 하거나, 어플리케이션 ..
2022.12.18 -
운영체제(5), CPU Scheduling
CPU Scheduling 복습 context switching을 할 때는 실제 프로세스보다 작은 단위인 쓰레드가 선택된다. Process Execution 프로세스를 실행하는 것은 명령어를 실행하는 것이다. 명령어를 수행하다가 read from file이나 write from file이 등장하면 실제 해당 작업은 I/O 장치가 수행된다. 이때 명령어들의 집합을 수행하는 구간을 CPU burst, I/O가 끝나기를 기다리는 구간이 I/O burst이다. CPU burst vs I/O burst CPU-bound process CPU burst가 길고 I/O burst가 짧은 구간 일반적으로 사용자와 인터렉티브하지 않은 프로세스 ex) 딥러닝, 과학 계산, 시뮬레이션 프로그램 등등 일반 사용자들이 쉽게 사..
2022.12.18 -
운영체제(4), Threads & Concurrency
Threads & Concurrency 3장 내용 복습 Process: 프로그램을 실행하는 주체(단위) 프로그램은 하나지만 프로세스는 여러개일 수 있다. 예를 들어 HWP 프로그램은 하나지만 파일을 여러개 열고 있으면 프로세스가 여러개 사용될 수 있다. 구글의 크롬 브라우저는 Renderer, Plug in, Browser process가 존재해 브라우저를 열어준다. 운영체제가 이 프로세스를 관리하기 위해 PCB를 사용한다. 프로세스는 ready, running, waiting의 상태를 번갈아가며 실행된다. 레디 큐에 있는 프로세스를 선택하는 것을 스케줄링, 이를 cpu에 올리는 작업을 디스패치라 한다. 스케줄링과 디스패치를 하나의 큰 틀에서 스케줄링이라고 한다. 디스패치를 한다는 것은 cpu의 레지스터..
2022.12.18 -
운영체제(3), Processes
Processes 프로그램과 프로세스 프로그램 파일 시스템에 저장된 실행파일로 파일을 실행하면 메모리에 로딩돼서 실행된다. 프로세스 프로그램을 실행하는 주체로, cpu는 프로세스의 실행 순서를 결정하는 스케줄링의 작업도 진행한다. 프로세스 ID(PID)가 정수 숫자로 붙여진다. 이때 스케줄링은 어떤 순서로 작업을 해야 가장 효율적인지를 감안하여 알고리즘을 짠다. 프로세스는 프로그램의 실체인 인스턴스가 된다. 유닉스가 처음 등장했을 때의 가장 작은 실행 및 스케줄링 단위가 프로세스였다. 지금은 쓰레드가 가장 작은 단위이다. 메인 프레임 시절에는 프로세스라는 이름 대신 job이라고 불렀다. 최초의 OS는 IBM에서 만들었는데 이 당시에는 task라고 불렀다. 유닉스에서는 프로세스라고 이름을 정의한 것에서 이..
2022.12.18