OS 4

7. Scheduling: Introduction

서론 파트 6에서 cpu에서 돌아가는 프로세스를 바꿀때 os의 역할이 무엇이고 어떤 일이 벌어지는지 살펴봤다. 이번 파트에서는 os가 어떤 기준으로 다음 프로세스를 스케쥴링 하는지 한번 살펴보자 Workload Assumptions 이번 파트의 내용을 이해하기 위해서는 몇가지 가정이 필요하다 1. 각각의 작업은 같은 시간동안 수행된다. 2. 모든 작업은 cpu에 같은 시간에 도착한다. 3. 각각의 작업은 끝날때까지 멈추지 않고 동작한다. 4. 모든 작업은 I/O같은 동작 없이 cpu만 사용한다. 5. os는 각각의 작업의 총 수행시간을 알고있다. Scheculing Metrics 운영체제의 스케쥴링 성능을 측정하는 기준을 scheduling metric이라고 부른다. 그 중 하나인 turnaround t..

6. Mechanism: Limited Direct Execution

서론 프로세스는 CPU위에서 돌아간다. 프로세스의 수 만큼의 CPU가 없기 때문에 time sharing을 통해서 CPU가상화(virtualization)를 구현한다. 이 가상화를 구현할 때 성능(performance)은 최대한 유지하면서 프로세스를 제대로 제어(control)할 수 있어야 한다. Basic Technique: Limited Direct Execution Problem #1: Restricted Operations 우선 limited direct execution과 반대의 개념인 directed execution을 알아보자. directed execution는 프로세스를 CPU위에서 바로 돌리는 것이다. 프로세스가 CPU를 직접 사용하니 이 방법을 사용하면 프로그램의 성능이 높아진다는 장..

5. Interlude: Process API

개요 Unix계열 운영체제에서는 fork(), exec() 계열의 API를 통해서 새 프로세스를 생성하고 wait() API를 통해서 다른 프로세스가 생성될 때까지 대기할 수 있게 한다. fork() System Call fork() 시스템콜은 새로운 프로세스를 생성하는데 사용한다. 이때 생성되는 프로세스는 fork()를 호출한 프로세스와 완전히 동일한 프로세스(심지어 pc까지도)이다! 이때 새로 생성된 프로세스는 0을 반환하여 부모 프로세스(fork()를 호출한 프로세스)인지 자식 프로세스(새로 생성된 프로세스)인지 구별할 수 있다. 위 코드의 실행 결과는 다음과 같은데 사실 부모, 자식 중 누가 먼저 실행되는지는 실행할 때마다 다르다. 누구를 먼저 실행시킬지 결정하는 운영체제의 스케쥴링 정책이 때에 ..

4. The Abstraction: The Process

개요 프로세스의 기본 개념에 대해 설명하는 파트이다. '프로세스'는 '돌아가고 있는 프로그램'으로서 요약할 수 있다. 여기에서 '프로세스'와 '프로그램'의 차이가 궁금할 수 있는데 '프로그램'은 실행하기 위한 명령어와 여러 데이터가 메모리상에 저장되어 있는 것이다. 이것이 CPU로 올라가고 실행되면 '프로세스'가 되는 것이다. CPU는 한번에 하나의 프로세스만 처리할 수 있다. 이때 프로세스가 CPU를 사용하고 있다고 착각하게 'CPU를 가상화(CPU virtualization)' 하는 것이다. 이를 위해서는 여러가지 방법이 있는데 가장 많이 쓰는 방법이 '짧은 단위 시간동안 CPU를 번갈아 사용하는 것(time sharing)'이다. 운영체제의 스케쥴링 정책은 여러 기준(나중에 배움)에 의해 어느 프로..