CS/OS

[운영체제/OS] CPU 스케쥴링 - (3)

0. 들어가면서 지난 시간에는 FCFS, RR, SJF 스케줄링 기법에 대해 공부했습니다. 그리고 그 중에서 SJF 스케줄링은 Expected burst time이 가장 작은 작업에 우선순위를 높게 할당하는 방식이라고 설명했는데요. 이번 글은 어떻게 burst time을 추정해야 하는가에 대해 이야기하는 것으로 시작하려고 합니다. 1. CPU Burst time 추정의 한계 CPU burst time을 측정을 위해서는 과거에 이 프로세스가 CPU를 사용했던 시간 기록을 이용하는데요. CPU burst time을 측정하는 크게 두 가지 방법이 있습니다. Simple Average : 이 프로세스의 과거 CPU 사용 시간들에 대해 동일한 Weight를 주는 방식으로 평균값을 구한다. Exponential A..

2021.06.14 게시됨

CS/OS

[운영체제/OS] CPU 스케쥴링 - (2)

0. 들어가면서 지난 글에서는 CPU 스케줄링 정책은 Selection Function과 Decision Mode라는 두 가지 관점에서 설계된다는 것을 보았고, Preemptive, NonPreemptive, Prorirty 등의 개념에 대해 공부했습니다. [운영체제/OS] CPU 스케쥴링 - (1) 1. 들어가면서 CPU 스케줄링은 어떤 프로세스를 어느 시간동안 실행시킬 것인가를 결정하는 과정이라고 생각할 수 있습니다. 스케줄링을 공부하기 이전에 두 가지 용어를 우선 정의하면 좋을 것 studyandwrite.tistory.com 이번 시간에는 여러 가지 CPU 스케줄링 기법들을 하나하나 살펴보고 각 스케줄링 방법의 특징과 장단점들에 대해서 알아보겠습니다. 1. FCFS Scheduling FCFS S..

2021.06.14 게시됨

CS/OS

[운영체제/OS] CPU 스케쥴링 - (1)

1. 들어가면서 CPU 스케줄링은 어떤 프로세스를 어느 시간동안 실행시킬 것인가를 결정하는 과정이라고 생각할 수 있습니다. 스케줄링을 공부하기 이전에 두 가지 용어를 우선 정의하면 좋을 것 같은데요. Nonpreemptive scheduling : 이미 할당된 자원을 다른 프로세스가 빼앗을 수 없는 방식 Preemptive scheduling : Time slice가 소진되었거나 I/O Interrupt, system call 등이 발생하면 현 실행 프로세스로부터 강제로 CPU를 회수하여 프로세스를 스위칭하는 방식 이 두 가지 용어는 앞으로 정말 많이 나올 예정이니, 헷갈리지 않게 잘 알아두면 좋을 것 같습니다. 헌편, 예전에 프로세스의 다섯 가지 상태에 대해서 글을 썼을 때 참고한 그림이 있었습니다. ..

2021.06.14 게시됨

CS/OS

[운영체제/OS] 멀티쓰레드 구현해보기

1. 멀티쓰레드의 타입 이전 글에서 프로세스 모델과 쓰레드 모델의 차이를 설명했습니다. 프로세스 모델은 각 프로세스 안에 모든 Image와 Context들을 담고 있기 때문에 무거우며, 새로운 프로세스를 만들 때마다 fork()를 수행하기 때문에 모든 내용을 복제하는 메모리 상의 비효율성과 시간적 비효율성을 초래한다고 했죠. 그리고 이러한 맥락에서 Thread를 사용하게 되면 쓰레드를 생성하는 데 시간도 적게 걸리며 요청을 병렬적으로 처리할 수 있기 때문에 효율성을 확보할 수 있다고 했습니다. 그렇다면 실제로 멀티쓰레딩은 어떻게 구현할까요? 이에 대해서는 크게 두 가지 방법이 있는데, 아래 그림을 보도록 하겠습니다. 1) User-level Threading 왼쪽 그림이 User-level Thread를..

2021.06.14 게시됨

CS/OS

[운영체제/OS] 프로세스 모델의 한계과 멀티쓰레드의 필요성

0. 프로세스 모델의 한계 프로세스 기반 모델에서 애플리케이션은 동시에 요청되는 여러가지 상황에 대해 fork()를 통해 Child process를 만듭니다. 예를 들어 웹 서버는 각 클라이언트의 요청에 대해 서버가 Child process를 생성하여 클라이언트의 요구를 처리하죠. 하지만 요청이 많아질수록 서버가 생성해야 하는 Child 프로세스에 대한 메모리는 증가할 수밖에 없으며 주소 공간과 자원 역시 공유되어 효율성이 떨어지게 됩니다. 또한, 전통적인 프로세스 기반 모델은 Multiprocessor 아키텍쳐의 장점을 살리지 못했습니다. 각 프로세스는 오직 하나의 프로세서(CPU)에서 밖에 돌지 못했기 때문이죠. 따라서 N개의 CPU가 존재한다고 하더라도 각 프로세스는 오직 1개의 CPU에서밖에 돌지..

2021.06.14 게시됨

CS/OS

[운영체제/OS] OS 자체는 어떻게 구현할까?

1. 생각 이전 포스팅까지 우리는 운영체제란 무엇이며 구조는 어떻게 생겼는지, 그리고 Dual Mode Operation과 Interrupt에 대한 개념을 살펴봤습니다. 이후에는 프로세스란 무엇이며 Mode Switching과 Context Switching을 비교해보았습니다. 그렇다면, 정작 지금까지 공부한 운영체제는 이 자체로 어떻게 동작할까요? 흥미롭게도, 운영체제 역시 프로세서에 의해 실행되는 하나의 프로그램입니다. Linux OS에 대한 코드가 C로 짜여졌다는 것을 생각해보면 운영체제가 하나의 소프트웨어 프로그램이라는 말이 이해되시시지 않나요? 자, 그렇다면 최초에 누군가 운영체제를 만들려고 했을 때 과연 어떤 방식으로 운영체제를 디자인했을까요? 참고로 아래 포스팅에서 살펴봤던 단일 구조, 계층..

2021.06.14 게시됨

CS/OS

[운영체제/OS] 프로세스와 컨텍스트 스위칭(Context Switching)

0. 들어가면서 프로세스(Process)는 개발을 하는 사람들이 가장 많이 들어보는 단어 중에 하나라고 생각합니다. 사실 개발을 하는 사람 뿐만 아니라, 일상 생활에서도 프로세스라는 말은 참 많이 쓰죠. 그런데 과연 '프로세스'란 정확히 무엇을 의미할까요? 1. 프로세스(Process) Process: A process is a program in execution which then forms the basis of all computation. 위 정의처럼 프로세스는 실행 중인 프로그램을 의미합니다. 그렇다면, 실행 중인 프로그램이라는 것은 도대체 무엇으로 구성되어 있을까요? 프로세스는 크게 이미지(Image) 영역과 컨텍스트(Context) 영역으로 구분되어 있습니다. 프로세스의 컨텍스트 영역에는 ..

2021.06.14 게시됨

CS/OS

[운영체제/OS] 가상머신(Virtual Machine)과 Linux OS에 대해

1. 가상머신(Virtual Machine)의 필요성 과거에는 하나의 어플리케이션 프로그램이 특정한 플랫폼에서만 실행 가능한 종속 관계를 가지고 있었습니다. 예를 들어 i386 ISA는 linux 운영체제를 사용했고 x86은 Window 운영체제를 필요로 했죠. 하드웨어와 운영체제 간 결합이 강했기 때문에 그 관계가 맞지 않으면 프로그램 작동을 원활하게 할 수 없었던 때였습니다. 이러한 문제 의식에서 출발하여 "아무 컴퓨터에서나 내 응용 프로그램을 돌리고 싶다"라는 목표가 생겼고, 이를 위해 가상머신(Virtual Machine)이 등장하게 되었습니다. 즉, 가상 머신이 등장하게 된 슬로건은 "Software for Cross-platform Compatibility"이었죠. 그리고 이로부터 파생되고 발..

2021.06.14 게시됨

CS/OS

[운영체제/OS] 운영체제의 이중 동작 모드(Dual Mode Operation)와 인터럽트(Interrupt)

0. 들어가면서 이번 포스팅은 운영체제를 정리하는 첫 포스팅입니다. 그래서 앞으로 자주 사용할 용어와 개념들을 소개하고, 운영체제의 기본적인 개념에 대해서 짚어보는 내용을 쓰고자 합니다. 특히 이번 포스팅에서는 운영체제의 정의와 운영체제의 동작 방식인 이중 동작 모드(Dual Mode Operation), 그리고 인터럽트(Interrupt) 개념에 대해 다룰 예정인데, 이 세가지 개념들은 꼭 기억하면 좋을 것 같습니다. 1. 컴퓨터의 구조 운영체제란 무엇인가를 정의하기에 앞서 컴퓨터는 어떻게 이루어져 있는지 살펴보면 좋을 것 같습니다. 한 번 가볍게 읽어보고 넘어가주세요. CPU는 Central Processing Unit의 약자로, 영어 해석을 그대로 따라 중앙처리장치라고 합니다. 컴퓨터 성능을 결정짓..

2021.06.14 게시됨