반응형

[Computer Science]/[운영체제(OS)] 48

[운영체제(OS)] 5-2) 스케줄링 알고리즘

: 선점형(preemptive), 비선점형(non-preemptive) 알고리즘으로 나뉩니다. 비선점형 알고리즘이 컨텍스트 스위칭으로 인한 오버헤드가 적지만, 대기 시간이 길어질 수 있기 때문에 일반적으로는 선점형 알고리즘이 주로 사용됩니다. 1. 선입 선처리 스케줄링(First-come, First-Served. FCFS) : CPU를 먼저 요청하는 프로세스가 먼저 할당받으며, Queue로 관리합니다. 비선점형 스케줄링입니다. * 장점 : 가장 간단한 형태의 스케줄링이어서 코드 작성이 쉽고 이해하기 쉽습니다. * 단점 : 순서에 따라서 대기 시간의 차이가 클 수 있습니다. 모든 다른 프로세스들이 길이가 긴 프로세스가 CPU를 양도해주기를 기다려야 합니다(호위효과(Convoy effect). ready ..

[운영체제(OS)] 5-1) 스케줄링 기본 개념

CPU 스케줄링이 무엇인지 살펴보기에 앞서서 아래 두 가지 정의를 먼저 살펴보겠습니다. * maximize CPU utilization : CPU를 최대한 이용하는 것. 어느 프로세스라도 CPU이용을 하고 있어야 합니다. * CPU - I/O Burst Cycle : 프로세스 실행은 CPU 실행 및 입출력 대기로 구성됩니다. (burst는 계속되는 작업을 의미) 프로세스는 입출력 대기 시간 내내 할당받은 CPU를 가지고 놀고 있게 되는데요, 그래서 이를 좀 더 생산적으로 활용하고자 스케줄링이 생겼습니다. 스케줄러는 입출력 대기 시간 동안 CPU를 다른 프로세스에게 할당해주는 역할을 합니다. 그래프를 살펴보면 짧은 CPU burst가 왼쪽에 많이 분포해있고, 긴 CPU burst가 오른쪽에 적게 분포해있는..

[운영체제(OS)] 4-3) 스레드와 관련된 문제들 (Threading Issues)

1. Fork(), Exec() 시스템 콜 : fork(), exec()은 모두 한 프로세스가 다른 프로세스를 실행시키기 위해 사용됩니다. 둘 다 Process Control 영역의 시스템 콜입니다. * fork() : 새로운 프로세스를 위한 메모리를 할당하고, 메모리에 fork()를 호출한 프로세스를 전부 복사 -> 원래 프로세스는 원래의 본인의 작업을 실행하고, 생성된 프로세스는 시스템 콜한 다음 라인부터 실행. = 생성 * exec() : 새로 메모리를 할당하지 않고, exec()에 의해 호출된 프로세스만 메모리에 남게 됨. = 덮어씀 exec()을 호출할 때 원래의 프로세스가 사라져버리므로, 이럴 때 일반적으로 fork()가 필요합니다. 2. 취소(Cancellation) : 스레드가 끝나기 전에..

[운영체제(OS)] 4-2) 스레드 라이브러리, 암묵적 스레딩

: 프로그래머가 스레드를 생성하고 관리하기 위한 API. - 스레드 라이브러리를 구현하는 방법에는 두 가지가 있습니다. 1) 커널의 지원 없이 완전히 사용자 공간에 라이브러리 제공. 2) 운영체제에 의해 지원되는 커널 수준의 라이브러리를 구현. - 다수의 스레드를 생성하는 방법 1) 비동기 스레딩(asynchronous threading) : 부모가 자식 스레드를 생성한 후에 실행을 재개 -> 부모와 자식 스레드가 서로 독립적으로 병행하게 실행되는 스레딩 방식으로, 다중 스레드 서버에서 주로 사용합니다. 2) 동기 스레딩(synchronous threading) : 부모 스레드가 하나 이상의 자식 스레드를 생성하고 자식 스레드 모두가 종료할 때까지 기다렸다가 자신의 실행을 재개하는 스레딩 방식(상당한 양..

[운영체제(OS)] 4-1) 단일 스레드와 멀티 스레드

: CPU 활용의 기본 단위, 프로세스 내에서 프로그램 명령을 실행하는 기본 단위. - 스레드 구성 : 스레드 ID, Program Counter, Register 집합, 스택으로 구성. - 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, open files 등의 운영체제 자원을 공유. 1) 단일 스레드 : 프로세스가 제어 스레드를 1개만 가지고 있을 때. 1개의 레지스터, 1개의 스택. 장점 : 자원을 공용화 하지 않아서 공용 자원에 접근을 통제하지 않아도 됨. Context Switch 작업이 불필요합니다. 단점 : 다수개의 CPU 활용이 불가능합니다. 2) 멀티 스레드 : 프로세스가 제어 스레드를 여러개 가지고 있을 때(프로세스를 생성하는데에는 오래 걸리고 자원도 많이 사용해서, 오버헤드를..

[운영체제(OS)] 3-6) 클라이언트-서버 통신

- 소켓(socket) : 서버간의 communication을 하기 위한 Endpoint. 네트워크에서 통신하는 한 쌍의 프로세스들은 각각 하나의 소켓을 가지고 있어야 합니다. 소켓은 IP주소, Port 번호를 조합하여 식별합니다. - 소켓은 일반적으로 클라이언트-서버 구조를 사용합니다. 서버는 특정 포트를 listen하면서 클라이언트 요청을 기다립니다. 요청을 받으면 서버는 클라이언트 소켓으로부터 연결 요청을 수락하여 연결을 완성합니다. - Remote Procedure Call(RPC) : 네트워크로 연결된 서버 상의 프로시저(함수, 메소드 등)를 원격을 호출할 수 있는 기능입니다. 일반적으로 프로세스는 자신의 주소 공간 안에 존재하는 함수만을 호출하여 실행할 수 있는데, RPC를 이용하면 다른 주소..

[운영체제(OS)] 3-5) 프로세스 간 통신

: 프로세스들은 독립적이거나 협력적인데요, 협력 프로세스는 데이터공유를 포함하여 프로세스들에게 영향을 주거나 받습니다. 프로세스 간 통신(Inter Process Communication, IPC) 기법을 필요로 합니다. - 협력을 허용하는 환경을 제공하는 이유 : 정보 공유, 계산 가속화, 모듈성, 편의성 1) 메시지 전달 : 동일한 주소 공간을 공유하지 않고도 프로세스들이 통신을 하고, 그 동작을 동기화할 수 있도록 허용하는 기법입니다. send(message) / receive(message) 연산을 제공합니다.(message는 고정 길이일수도, 가변 길이일수도 있음) - 커널쪽에 message queue가 있습니다. - 통신 연결(communication link)을 통해 프로세스 간 메시지를 주..

[운영체제(OS)] 3-4) 프로세스 연산(생성, 종료)

: 프로세스는 실행되는 동안 여러 프로세스들을 생성합니다. 이를 각각 부모, 자식 프로세스라 부릅니다. - 부모 프로세스가 자식 프로세스를 생성할 때, 자식 프로세스는 부모가 가진 자원의 부분 집합만을 사용하도록 제한하거나, 운영체제에서 자원을 직접 얻습니다. - 부모 프로세스는 자식 프로세스와 동시에 구동되며, 자식 프로세스의 전부 또는 일부가 종료될 때까지 wait 상태값을 유지합니다. : 트리 구조를 가짐. pid(프로세스의 고유 값)는 랜덤으로 할당되는데, 시스템 부팅 시 실행되는 프로세스는 1로 고정. : 프로세스의 생성 흐름. 자식 프로세스를 만드는 것과 관련된 Linux의 시스템 콜 함수로는 fork, exec, wait, exit 등이 있습니다. 1) fork : 부모 프로세스와 동일한 내..

[운영체제(OS)] 3-3) 컨텍스트 스위치

: interrupt 종료 후 프로세스를 재개(= PCB에 저장해둔 프로세스의 Context를 불러옴)하는 작업. 컨텍스트 스위치가 일어나는 동안 시스템은 아무런 유용한 일을 못하기 때문에 컨텍스트 스위치에 소요한 시간은 순수한 오버헤드로 볼 수 있습니다. * interrupt : 운영체제가 CPU를 현재 프로세스에게서 빼앗아 커널 루틴을 실행할 수 있게 하고, 종료 후 본래 작업이던 프로세스를 재개. : P0 프로세스가 실행하고 있다가 inturrupt를 받음 -> PCB0에 저장 -> PCB1에서 P1프로세스를 불러와서 실행 -> PCB1에 저장하고 다시 PCB0에서 P0프로세스를 불러와 실행. 컨텍스트 스위치가 두번 발생.

[운영체제(OS)] 3-2) 프로세스 스케쥴링

- 스케쥴링의 목적 : 대기 시간을 최소화, 최대한 공평하게 메모리를 프로세스들에게 분배. - 스케쥴링 큐 종류 1) Job Queue : 프로세스가 시스템에 들어온 상태이며, 현재 시스템 내에 있는 모든 프로세스를 관리합니다. (메모리에 올라가있지 않은 프로세스도 포함) 2) Ready Queue : 준비 완료 상태에서 CPU에 할당받기를 기다리는 프로세스들. 여기 있는 프로세스들을 줄 세우는 방법으로 스케쥴링 알고리즘을 사용합니다. 3) Device Queue (I/O 대기 큐) : 특정 입출력 장치를 대기하는 프로세스들의 리스트. 디바이스 큐에 속한 프로세스는 blocked상태가 되고, 장치 컨트롤러가 interrupt를 발생시키면 준비 상태로 바뀌어 Ready Queue로 이동합니다. : CPU에..

반응형