운영체제 7

The abstraction: Address space

메모리의 가상화, virtual address space virtual memory를 구성하는 핵심 요소. 오늘날의 컴퓨터는 프로그램 여러개를 cpu에 동시 탑재하여 time sharing하는 multiprogramming을 한다. 그리고 이 방법을 통해서 utilization(가용성), efficiency(효율성)을 높일 수 있다. 같은 프로그램으로 생성된 두개의 프로세스가 있다고 할 때, virtual address는 두 프로세스에서 모두 동일하다. (program이 동일하기 때문.) 하지만 물리적으로는 두 프로세스가 다른 곳에 있어야 한다. 따라서 각 address space마다 각 덩어리들이 물리적인 위치로는 어디로 갔는지에 대한 매핑정보(주소변환정보)가 필요하다. 다시말해 매핑정보는 프로세스마다..

운영체제 2023.03.27

Scheduling: Proportional Share

proportional share란? 비례 배분, 공정 배분(fair share)으로도 불린다. 정해진 비율대로 cpu를 나눠쓰게 하는 것에 집중한다. performance보다는 fairness에 초점을 맞추는 것이다. Lottery scheduling 말그대로 추첨권 티켓의 소유권에 따라서 cpu를 분배하는 스케줄링 기법이다. 예를 들어 프로세스 a,b가 75%. 25%로 cpu를 나눠쓰게 하고싶으면 a에게 티켓 75장을, b에게 25장을 주는 것이다. 그리고 추첨된 각 티켓을 가지고있는 프로세스가 당첨된 것이므로 그 비율만큼 cpu를 사용한다. Random number를 생성하며 진행되기 때문에, 시도할때마다 결과는 달라진다. (비결정적) Ticket Mechanisms 1. Ticket curren..

운영체제 2023.03.21

Scheduling: The Multi-Level Feedback Queue (MLFQ)

Multi-Level Feedback Queue의 목적 Multi-Level Feedback Queue (MLFQ)는 두가지의 목적을 갖는다. 1. turnaround time(반환시간) 최적화 반환시간 기준에 있어 SJF/STCF에 근접한 성능을 만드려고 한다. 기존의 SJF/STCF는 프로그램의 실행전에 그 실행시간을 스케줄러가 미리 알아야 한다는 현실적인 제약사항이 있었다. 이것을 극복하기 위해 MLFQ는 실제 미래는 모르지만 일단 작고 짧은 job에게 우선순위를 부여하는 방식을 시도하게 된다. 2. response time(반응시간) 최소화 반응시간 기준에 있어 Round Robin에 근접한 공평성을 구현하려고 한다. Round Robin은 반응시간은 좋지만 반환시간에 있어서는 매우 나쁘다. ML..

운영체제 2023.03.21

Scheduling: FIFO, SJF, STCF, Round Robin, incorporation IO

Scheduling Metrics context switching이 일어날 때, 새로운 프로세스는 어떻게 결정되는가? 바로 스케줄링 정책(scheduling policies)에 의해서이다. 그리고 이 정책이 어떤지 판단하는 기준이 바로 Scheduling Metrics이다. 이 metric에는 성능측면(performance)에서 바라보는 기준, 공평한가의 측면(fairness)에서 바라보는 기준이 있는데 각각 밑에서 알아보겠다. 1.turnaround time(반환시간) turnaround time = completion time - arrival time 반환시간이란 해당 job이 도착했을 때부터 cpu를 다 사용해서 끝났을때까지 걸리는 시간이다. (job이 끝난 시간 - 도착한 시간) 그리고 반환시간..

운영체제 2023.03.20

Mechanism : Limited Direct Execution

Limited Direct Execution cpu를 가상화할때 필요한 mechanism에 대해서 알아보자. 여기서 direct라는 것은 사용자 프로그램이든, 커널이든 상관없이 cpu가 직접 처리한다는 의미이고, 성능때문에 그렇게 하고있지만 이렇게 될 경우 운영체제가 cpu를 직접 컨트롤(스케줄링)할수 없게 되는 문제가 생긴다. 그런데 운영체제 입장에서는 cpu를 하나의 자원으로 보고 적절히 스케줄링할 수 있어야 하기 때문에 성능손실 없이 cpu를 컨트롤하기 위해서 고안된 것이 바로 Limited Direct Execution(제한적 직접 실행)이라는 메커니즘이다. cpu가 물리적으로는 하나지만 모드는 두개가 있다. (user mode, kernel mode) 그리고 이 모드를 어떻게 설정하느냐에 따라서..

운영체제 2023.03.13

Virtualizing CPU,Memory/ Concurrency/ Persistence

Virtualizing CPU (CPU의 가상화) int main(int argc, char *argv[]) { if (argc != 2) { fprintf(stderr, "usage: cpu \n"); exit(1); } char *str = argv[1]; //argv[0]은 자기자신, 커맨드 이름, 여기서는 cpu가 된다. argv[1]가 입력받은 값. while (1) { Spin(1); printf("%s\n", str); } return 0; } 자기 자신을 포함한 command line parameter 개수가 2개가 아니면 에러메시지를 출력후 빠져나가고, 2개일 경우 str변수에 담기는 파라미터값을 1초 간격의 무한 루프로 반복 출력하는 프로그램이다. prompt> ./cpu A & ./c..

운영체제 2023.03.07