Computer Science/[ OS ] 22

[ OS ] 06. 프로세스 동기화 - 임계영역(Critical Section)

[ 프로세스 동기화 ] Critical Section 임계영역 멀티 스레딩에 문제점에서 나오듯, 동일한 자원을 동시에 접근하는 작업(e.g. 공유하는 변수 사용, 동일 파일을 사용하는 등)을 실행하는 코드 영역을 Critical Section 이라 칭한다. 다른 프로세스와 공동으로 사용하는 변수, 테이블, 파일 등을 변경하는 부분이다. Critical Section Problem 임계영역 문제 프로세스들이 Critical Section 을 함께 사용할 수 있는 프로토콜을 설계하는 것이다. Race Conditoin 여러 프로세스가 공통된 데이터를 조작할 때 결과가 조작의 타이밍이나 접근 순서에 의해 결정되는 현상 Requirements 해결을 위한 기본 조건 Mutual Exclusion(상호 배제) 프..

[ OS ] 05. 동기와 비동기(Sync, Async)

[ 동기와 비동기 ] 동기 Synchronous 동기는 말 그대로 동시에 일어난다는 뜻이다. 요청과 그 결과가 동시에 일어난다는 약속이다. 바로 요청을하면 시간이 얼마가 걸리던지 요청한 자리에서 결과가 주어져야 한다. 요청과 결과가 한 자리에서 동시에 일어남 A노드와 B노드 사이의 작업 처리 단위(transaction)을 동시에 맞추겠다. 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야 하는 단점이 있다. 비동기 Asynchoronous 비동기는 동시에 일어나지 않는다를 의미한다. 요청과 그 결과가 동시에 일어나지 않을거라는 약속이다. 요청한 그 자리에서 결과가 주어지지 않음 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다. 동기보다 복잡하지만 결과가 주어지는데 ..

[ OS ] 04. CPU Scheduler

[ CPU 스케쥴러 ] 여러 프로세스를 concurrent하게 쓰는게 멀티프로그래밍과 멀티쓰레딩이었고, 그 전제조건으로 바로 CPU Scheduling이 필요하다. 스케줄링 대상은 Ready Queue 에 있는 프로세스들이다. (이 Ready Queue는 LinkedList or Binary Tree or FIFO Queue or PriorityQueue를 사용하여 만들어진다.) 들어가기 전에 먼저 용어 정리 부터 하겠다. 선점(preemptive) : 우선순위가 높은 작업이 오거나, 해당 작업이 더 우선되어야 한다고 판단되면 해당 작업에게서 CPU를 빼앗을 수 있다. 비선점(non-preemptive) : 일단 CPU를 할당받으면 해당 프로세스가 끝날때까지 CPU를 빼앗기지 않는다. 스케쥴링 알고리즘에..

[ OS ] 03. 스케쥴러 (Scheduler)

[ 스케쥴러 ] 프로세스를 스케줄링하기 위한 Queue 에는 세 가지 종류가 존재한다. Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합 Ready Queue : 현재 메모리 내에 있으면서 CPU 를 잡아서 실행되기를 기다리는 프로세스의 집합 Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합 각각의 Queue 에 프로세스들을 넣고 빼주는 스케줄러에도 크게 세 가지 종류가 존재한다. 장기스케줄러 Long-term Scheduler or Job Scheduler 메모리는 한정되어 있는데 많은 프로세스들이 한꺼번에 메모리에 올라올 경우, 대용량 메모리(일반적으로 디스크)에 임시로 저장된다. 이 pool 에 저장되어 있는 프로세스 중 어떤 프로세스에 메모리를 할..

[ OS ] 02. 멀티스레드

[ 멀티 스레드 ] 멀티 쓰레드 모델을 살펴보기 전에 먼저 User Thread와 Kernel Thread에 관해 살펴보자. 말 그대로 User Thread는 User level의 Thread 라이브러리를 통해 관리되는 Thread를 말하며 Kernel Thread는 운영체제가 제공하고 직접 관리하는 Thread를 말한다 Multi-Thread에는 총 네 가지 모델이 있다. Many-to-One Model Kernel Thread가 다수의 User Thread를 처리하는 구조이다. 이러한 구조는 User Thread를 처리하던 중 System call에 의해 blocking이 된다면 전체 프로세스가 막히는 병목현상이 일어나게 되는 문제점을 갖고 있다. One-to-One Model One-to-One m..

[ OS ] 01. 프로세스간 통신 - IPC, RPC

[ 프로세스간 통신 ] IPC Inter Process Communication 각 프로세스들이 통신하는 모든 형태를 일컫는다. 이에는 다양한 형태의 메세지 전달 방식이 포함된다. 종류 Shared Memory 프로세스간 공유되는 메모리 영역을 만들어 사용하는 방법 프로세스들은 읽기/쓰기를 통해 공유영역을 수정할 수 있다. 주로 부모/자식 프로세스 간에 사용한다. Message Passing 다른 프로세스에 message 를 보내 정보를 교환하는 방법 주로 작은 데이터를 교환하며 구현이 쉽다. system call이 잦아 자칫 느려질 수 있다. Sockets Network Communication의 Endpoint 간의 통신이다. IP Address, Port를 이용해 직접 통신한다. Pipe Messa..

[ OS ] 00. 프로세스와 스레드의 차이

[ 프로세스와 스레드의 차이 ] OS -> 프로세스 -> Thread OS에서 여러 개의 프로세스를 관리하고, 프로세스 안에서 여러 개의 Thread를 관리하는 것이 가능하고, 효율적이다. 프로세스 A Program in execution : 실행중인 프로그램 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 말한다. 운영체제로부터 주소 공간, 파일, 메모리 등을 할당받으며 이것들을 총칭하여 프로세스라고 한다. 구체적으로 살펴보면 프로세스는 함수의 매개변수, 복귀 주소와 로컬 변수와 같은 임시 자료를 갖는 프로세스 스택과 전역 변수들을 수록하는 데이터 섹션을 포함한다. 또한 프로세스는 프로세스 실행 중에 동적으로 할당되는 메모리인 힙을 포함한다. 프로세..