Computer Science/운영체제

프로세스 간 협력 프로세스는 독립적이다. 각자 주소공간을 가지고 수행되기 때문에 원칙적으로 하나의 프로세스는 다른 프로세스의 수행에 영향을 미치지 못한다. 그렇지만 프로세스 간 협력 메커니즘 (Inter Process Communication)을 통해, 하나의 프로세스가 다른 프로세스의 수행에 영향을 미칠 수 있다. IPC에는 크게 message passing 과 shared memory 기법이 있다. Message Passing 원칙적으로 프로세스끼리 직접 통신을 하지 않으므로, 운영체제의 커널을 통해 메세지를 전달하는 방법 1. Direct Communication 통신하려는 프로세스의 이름을 명시적으로 표시하는 방법 커널을 통해 다른 프로세스에게 메세지를 넘긴다. 2. Indirect Communi..
시스템 콜의 종류 4가지에 대해 알아본다. 프로세스 생성, 실행, 종료와 관련된 주요 4가지 시스템 콜은 다음과 같다. fork() : 복제본 child process를 생성한다. exec() : 새로운 프로그램으로 overlay 한다. wait() : child process 작업이 끝날 때까지 sleep 한다. exit() : 모든 resource들을 free 시키고, parent node에게 이를 알린다. fork() 시스템 콜 process는 fork() 시스템 콜에 의해 생성된다. caller 를 복사해서 새로운 주소 공간을 생성한다. fork() 를 통해서 프로세스를 생성하는 예시이다. int main() { int pid; printf("Only parent process print this..
Process 의 생성 부모 프로세스가 자식 프로세스를 생성한다. 프로세스들은 트리 구조 형성하게 된다. 프로세스는 자원을 필요로 한다. 자원은 운영체제로부터 받으며, 부모 프로세스와 자식 프로세스가 일반적으로 공유하지 않는다. 프로세스들끼리는 별개의 프로세스이므로 자원을 위해 경쟁을 하게 되는 것이 일반적이기 때문이다. 수행 - 부모와 자식이 공존하며 수행하는 모델 - 자식이 종료될 때가지 부모가 기다리는 모델 주소 공간 - 자식은 부모의 공간을 복사한다. : process의 문맥 (주소공간인 코드 데이터 스택, PC)을 그대로 복사한다. - 마치 과제할 때 기존에 레포트 템플릿이 있으면 복사하고 일부 수정해서 쓰는 것처럼, 효율적일 것이다. - 자식은 그 공간에 새로운 프로그램을 올린다. UNIX 예..
Thread 의 장점 1. 응답성, 빠른 처리 : 하나의 스레드가 waiting 인 상태 동안에 동일한 task 내의 다른 스레드는 실행될 수 있어서 응답 속도를 높인다. 2. 자원 절약 : 같은 작업을 수행하는 하나의 프로세스 안의 thread들은 자원을 공유하는 부분이 있다. ex) Code, Data 영역 3. 경제성 : process 를 생성하거나 문맥 교환하는 것에 비해 thread는 경제적이다. (Solaris OS 의 경우 생성의 경우 30배, 문맥 교환의 경우 5배 더 절약된다.) 4. Process는 하나지만, thread는 여러개 인 경우 -> 병렬적으로 일할 수 있다. Thread 구현 방법 Kernel Thread : 운영체제 kernel의 지원을 받는다. ex) 하나의 thread..
동기식 입출력 & 비동기식 입출력 입출력 처리를 운영체제를 통해서 해야 한다. 입출력을 요청한 프로세스가 기다려야 한다면 → 동기식 입출력이다. 입출력이 진행되는 동안에 그 프로세스가 곧바로 CPU를 점유하여 실행한다면 → 비동기식 입출력이다. 동기식 입출력 I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감 방법 1 : I/O 가 끝날 때 까지 CPU를 낭비시킨다. → 매 시점에 하나의 I/O 만 일어날 수 있음 방법 2 : I/O가 완료될 때까지 해당 프로그램에게서 CPU 를 빼앗음 → 다른 프로그램에게 CPU 를 준다. 대부분 방법2로 구현된다. 비동기식 입출력 I/O 가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감. 동기식 & 비동..
Process Synchronization 컴퓨터 시스템 내에서 데이터가 접근되는 패턴이 있다. 위의 그림처럼 데이터가 저장되는 공간에서 연산할 데이터만 로드시켜서 CPU에서 연산을 한다. 연산 결과는 다시 저장공간에 저장된다. 공유 데이터의 동시 접근이 일어나면 데이터의 불일치 문제가 발생할 수 있다. 일관성 유지를 위해서 협력 프로세스 간의 실행 순서를 정해주는 매커니즘이 필요 Race Condition 여러 프로세스들이 동시에 공유 데이터를 접근하는 상황 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라짐 race condition을 막기 위해서 concurrent process는 동기화 되어야 한다. Race Condition 이 발생하는 상황 1. Kernel Code ..
CPU Scheduling 이 필요한 이유 ? 여러 종류의 job (= process) 가 섞여 있기 때문에 스케줄링이 필요하다. CPU를 계속해서 사용하는 CPU bound job도 있고, 사용자와 인터렉션을 해야하는 I/O bound job 이 있다. FCFS (First-Come-First-Served) 프로세스의 도착 순서대로 사용한다. -> 마지막으로 도착한 프로세스가 지나치게 오래 기다리게 될 것이다. Round Robin 각 프로세스는 동일한 크기의 시간을 할당 받고, 할당받은 시간이 지나면 프로세스는 선덤 당하고 ready queue의 가장 뒤에 가서 줄을 선다. 프로세스가 ready queue에 n 개 있을 때, 할당 시간이 q time-unit인 경우, 각 프로세스는 최대 q time-..
Process 프로세스는 실행중인 프로그램이다 프로세스의 Context 프로세스에서는 문맥이 중요하다. CPU 수행 상태를 나타낸다. 하드웨어 문맥 : register가 현재 어떤 값을 가지고 있었는지, Program Counter 값 프로세스의 주소 공간 : code, data, stack에 어떤 내용이 들어있는지 프로세스 관련 커널 자료 구조 : PCB (Process Control Block), Kernel stack 이러한 프로세스 정보를 가지고 있으면 프로세스가 어떤 상태에 있는지 알 수 있다. 컴퓨터 시스템에서는 multi-tasking이 이루어진다. 즉 , 프로세스들이 번갈아 가면서 실행된다. 따라서, 현재 프로세스의 문맥을 알지 못하면 다음번에 CPU 자원을 사용할 때 실행할 수 없을 것이..
minjiwoo
'Computer Science/운영체제' 카테고리의 글 목록 (2 Page)