no image
3. Memory Virtualization
하나의 프로그램만 돌린다면 메모리 가상화는 필요없다. 여러 프로그램을 동시에 돌리기 위해서 우리는 메모리 가상화를 사용한다. 멀티프로그래밍의 목표는 다음과 같다. Transparency: 프로세스는 메모리가 공유되고 있다는 것을 몰라야 함, 항상 사용 가능해야 함 Protection: OS나 다른 프로세스의 메모리 침범할 수 없음 Efficiency: 메모리 낭비가 없어야 함 Sharing: 주소 공간 공유할 수 있음 Memory address space OS가 프로세스에게 private한 address space를 줘야 하는데, 한 가지 문제가 있다. 메모리 공간이 다이나믹하다는 것이다. 실제로 메모리는 다음의 구조를 가진다. Code 영역은 static하다. 반면에, Stack이나 Heap은 dyna..
2023.12.01
no image
2. CPU Virtualization
CPU virtualization에는 크게 2가지 개념이 중요하다. 1번 포스트에서 다루었던, context switch랑 scheduler(스케쥴러)이다. Context switch는 방법론적인거고 scheduler는 정책적인 내용이다. 간단하게 자주 사용하는 용어부터 알아본다. Workload: 해야되는 프로세스(어플리케이션)의 양 Scheduler: ready process를 실행할 타이밍 결정하는 방법 Metric: 평가방법 스케쥴링의 목표(=평가 요소)는 다음과 같다. Turnaround time completion_time - arrival_time (minimize) Response time initial_schedule_time - arrival_time (minimize) Throughp..
2023.11.27
no image
1. Introduction
Operating system OS의 역할 중 중요한 3가지는 다음과 같다. Virtualization Concurrency Persistence Virtualization Process 프로세스는 execution stream with states이다. State에는 코드에 영향을 줄 수 있는 모든 자원이 포함된다. 가령 레지스터나 힙, 스택, 열린 파일 등이 있다. 프로그램 vs 프로세스 프로그램과 프로세스는 다른 개념이다. 프로그램은 정적인 코드와 데이터이며, 프로세스는 이런 프로그램의 dynamic instance이다. 쓰레드 vs 프로세스 쓰레드와 프로세스는 비슷한 개념이다. 쉽게 설명하자면, 쓰레드는 lightweight process이며, 하나의 프로세스는 여러개의 쓰레드를 사용할 수 있다...
2023.11.21