목록Fundamentals/OS (10)
코학다식
Bound-Buffered Problem shared data semaphore full = 0, empty = n, mutex = 1 producer-consumer 문제와 동일하다. empty는 counting semaphore로 초기값에 따라 wait 통과할 수 있는 개수가 달라진다. empty는 남아 있는 buffer의 수를 의미하고, full은 이미 차 있는 buffer의 수를 의미한다. /* Producer Process */ do { ... produce an item in nextp ... wait(empty); // n개가 통과한다 wait(mutex); ... add nextp to buffer ... signal(mutex); signal(full); } while(1); /* Con..
Basic Concepts 멀티프로그래밍은 CPU의 호율성을 극대화하기 위해 (프로세스) 스케줄링을 필요로 한다. 한 프로세스가 I/O 작업 등으로 CPU를 사용하지 않을 때, CPU가 아무 일도 하지 않는 일이 발생하지 않도록 다른 프로세스를 할당하는 등 CPU & I/O Burst Cycle 프로세스 실행은 CPU 실행과 I/O 대기의 사이클로 이루어진다. CPU Burst distribution 보통 지수적인 특성을 가지며, 많은 짧은 CPU burst와 적고 긴 CPU burst를 가진다. CPU Scheduler CPU Scheduler가 하는 일을 간단히 말하자면 ready queue에서 한 프로세스를 골라 실행하는 것이다. CPU 스케줄링은 크게 두 부분으로 나누어진다. algorithm: ..
Concurrency(병행성) 응용 프로그램에서 병행성의 사용은 여러 이점을 가진다. 병행성은 병행적인 프로세스들의 집합으로서 응용 프로그램을 구조화함으로써 구현될 수 있다. (e.g. fork()의 사용) Overhead in Process Model 여러 개의 프로세스를 사용하는 모델에서 각각의 프로세스는 독립적이다. 따라서 통신을 위해서는 커널을 통한 IPC가 필요하다. 이는 오버헤드가 크다. 또한 이 모델에서 PCB(Process Context Block)는 큰 크기를 가지고 있어, 각각의 프로세스의 생성과 context switching에 오랜 시간이 걸린다. What is Thread? 스레드는 CPU 스케줄링의 기본 단위 또는 한 프로세스 안에서 제어의 흐름이다. 그리고 PC, 레지스터 집합..
독립적인 프로세스들은 다른 프로세스의 실행에 영향을 주거나 받을 수 없다. 하지만 협력하는 프로세스들은 다른 프로세스의 실행에 영향을 주거나 받을 수 있다. 여러 개의 프로세스/스레드(thread)가 동시에 작업을 진행하는 것이다. 이는 정보 공유 계산 속도 증가 모듈성 편리함 등의 이점을 준다. Inter-Process Communication(IPC) IPC는 프로세스들이 통신하고 그들의 행위를 동기화하기 위한 매커니즘이다. 두 가지 방법이 존재한다. 공유된 변수(또는 메모리) 사용 메시지 전달 사용 POSIX Shared Memory(Producer) #include #include #include #include #include #include int main() { /* the size (in ..
Operating System chapter 3, Processes (2) 프로세스 생성 부모 프로세스는 자식 프로세스를 생성하는데, 이는 프로세스들의 트리를 구성하게 된다. 프로세스는 프로세스 식별자(pid)를 통해 식별되고 관리된다. Resource sharing option 부모와 자식은 모든 자원을 공유한다. 자식은 부모의 자원의 부분집합을 공유한다. 부모와 자식은 자원을 공유하지 않는다. Execution option 부모와 자식은 동시에 실행된다. 부모는 자식이 종료될 때까지 기다린다. Address space option 자식은 부모의 복사체다. 자식은 그것의 안에 로드된 프로그램을 가진다. 리눅스 시스템에서의 프로세스 트리(tree) UNIX에서의 프로세스 생성 먼저 그림을 보자. > a...
Operating System charter 3, Processes (1) Process: 프로세스란 무엇일까? 실행 중인 프로그램을 말한다. 프로그램은 passive entity 프로세스는 프로그램 카운터가 동작하는 active entitiy 프로그램은 실행 가능한 파일이 메모리에 로드되었을 때 프로세스가 된다. 운영체제는 다양한 프로그램을 실행한다. Batch system - jobs Time-shared systems - tasks(interactive) 프로세스는 코드 (또는 텍스) 섹션, 데이터 섹션, 스택(stack)과 힙 섹션, 그리고 프로그램 카운터를 포함한다. 프로그램 카운터는 다음에 실행될 명령의 위치를 저장하고 있다. 실행 가능한 파일이 메모리에 로드되면 다음과 같다. 스택에는 함수의..
Operating System chapter 1-2 (4) System Boot 부팅(Booting)이란 커널을 로딩함으로써 컴퓨터를 시작하는 것을 말한다. 시스템에서 파워가 초기화되면, Bootstrap loader가 위치한, 고정된 메모리 위치(ROM)에서 실행이 시작된다. 보통 두 단계의 과정을 거친다. (mother board - hard disk) 운영체제 서비스 운영체제의 서비스 중 한 집합은 사용자에게 유용한 기능을 제공한다. 유저 인터페이스(User interface) - 거의 모든 운영체제가 사용자 인터페이스(UI)를 가진다. Command-Line Interface(CLI), Graphic User Interface(GUI), Batch 프로그램 실행 - 시스템은 메모리에서 프로그램을 ..
Operating System chapter 1-2 (3) System Calls 시스템 콜(System Call)이란 운영체제에 의해 제공되는 서비스의 프로그래밍 인터페이스(Programming Interface)이다. 주로 함수의 모임인 라이브러리 형태로 제공되어 사용자가 호출해서 사용하도록 되어 있다. 일반적으로 high-level 언어로 작성된다. (C or C++) 대부분 직접적인 시스템 콜 사용보다는 high-level의 Application Program Interface(API)을 통한 프로그램에 의해서 접근된다. 가장 자주 쓰이는 API에는 윈도우의 Win32(64) API, 리눅스 계열의 POSIX, Java Virtual Machine의 Java API가 있다. System Call ..