강의 내용 정리(126)
-
운영체제(8), Deadlocks
Deadlocks 락이 죽어서 영원히 풀리지 않는 락이다. 화살표를 한 시점에서 쓰레드들이 각각 wait이 된다면 두 쓰레드의 상태는 계속 waiting 상태가 된다. 결국 P0와 P1은 영영 스케줄할 수 없게 된다. Deadlock이 발생될 필요 조건 4가지 a -> b는 a가 참이면 b는 항상 참이고, 이에 따라 a는 b의 충분 조건이 된다. 데드락이 발생하면 위의 네가지 조건이 항상 참이 된다. 즉, 위의 네가지 조건에 만족했다고 해서 무조건 데드락이 발생하는 것은 아니다. mutual exclusion: 한 시점에서 하나의 프로세스만 자원에 접근한다. 이는 해결할 수 없다. Hold and wait: 하나의 프로세스가 홀드한 상태에서 wait한 상태이면 deadlock에 걸릴 가능성이 있다. 이는..
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