목록전체 글 (284)
빙응의 공부 블로그

비례 배분 스케줄러, 혹은 공정 배분 스케줄러에 대해 알아봅시다.비례 배분의 개념은 간단합니다. 반환 시간이나 응답 시간을 최적화하는 대신 스케줄러가 각 작업에게 CPU의 일정 비율을 보장하는 것입니다. 즉 공정성 문제입니다. 비례 배분의 예는 추첨 스케줄링입니다. 이 아이디어는 다음 실행될 프로세스를 추첨을 통해 결정합니다. 📝12.1 기본 개념 : 추첨권이 당신의 몫을 나타낸다.추첨권은 쉽게 말해 CPU를 사용할 수 있는 권리입니다. 추첨권(티켓)프로세스가 받아야 할 자원의 몫프로세스가 소유한 티켓의 개수와 전체 티켓에 대한 비율이 자신의 몫을 나타낸다.추첨 스케줄링의 핵심은 이러한 목적을 무작위성을 이용합니다. 무작위가 뭐가 좋냐? 사실 무작위성의 장점이 있습니다.특이 상황에 대응이 쉬움매우 ..

멀티 레벨 피드백 큐로 알려진 가장 유명한 스케줄링 기법에 대해 알아봅시다. MLFQ가 해결하려고 하는 기본적인 문제는 두 가지입니다.짧은 작업을 먼저 실행시켜 반환시간을 최적화하기MLFQ는 대화형 사용자에게 응답이 빠른 시스템이라는 느낌을 주기위해 응답시간을 최적화즉 반환시간과 응답시간 모두 잡는 기법입니다. 📝11.1 MLFQ의 기본규칙멀티 레벨 피드백 큐의 기본 알고리즘을 알아보자 현재 구현되어있는 MLFQ들은 차이가 있지만 기본적으로 비슷한 방법을 사용한다.MLFQ는 여러 개의 큐로 구성되며, 각각 다른 우선순위가 배정된다.실행 준비가 된 프로세스는 이 중 하나의 큐에 존재한다.MLFQ는 실행할 프로세스를 결정하기 위하여 우선순위를 이용한다. 높은 우선순위를 가진 작업은 높은 우선순위 큐에 존재..

3~4장까지 저수준 기법에 대해서 이해하였다. 이것을 제대로 이해하지 않는다면 정책을 이해할 수 없다.운영체제의 스케줄러의 고수준 정책에 관해서는 이해가 필요하다. 이제부터는 다양한 스케줄링 정책을 소개할 것이다.이러한 정책은 원칙이라고도 불리며 오랫동안 개발된 정책이다. 스케줄링 정책은 어떻게 개발하는가? 📝10.1 워크로드에 대한 가정가장 먼저 프로세스에 대하여 몇 가지 가정 할 것이다. 일련의 프로세스들이 실행하는 상황을 워크로드라고 부르기로하자워크로드를 결정하는 것은 정책 개발에서 매우 중요한 부분이다. 워크로드에 관해 더 잘 알수록 그에 맞게 정책을 정교하게 할 수 있다. 우리가 지금 설명에서 사용할 워크로드에 대한 가정은 비현실적이다. 하지만 논의하는데 문제는 없다.논의가 진행됨에 따라 워..

CPU를 가상화하기 위해서 운영체제는 여러 작업들이 동시에 실행되는 것처럼 보이도록 물리적 CPU를 공유합니다.기본적인 아이디어는 간단합니다. 한 프로세스를 잠시동안 실행하고 다른 프로세스를 또 잠깐 실행하는 것입니다.이러한 방식처럼 CPU 시간을 나누어 씀으로써 가상화를 구현할 수 있습니다. 그러나 가상화 기법을 구현하기 위해서는 몇가지 문제를 해결해야합니다. 첫 번째는 성능 저하입니다. 시스템에 과중한 오버헤드를 주지 않으면서 가상화를 구현해야합니다. 두 번째는 제어 문제입니다. CPU에 대한 통제를 유지하면서 프로세스를 효율적으로 실행시켜야 야합니다. 핵심 질문운영체제는 효율적인 방식으로 CPU를 가상화하지만 시스템에 대한 제어를 잃지 않는다. 제어를 잃지 않기 위해 하드웨어와 운영체제의 지원이 ..

막간이번 절에서는 운영체제 API와 그의 사용법을 포함하여 시스템의 실제적인 측면을 다룹니다. 이번 절에서는 유닉스 시스템의 프로세스 생성의 관해 논의합니다. 유닉스 기반 운영체제는 프로세스 생성을 위해 fork()와 exec() 시스템 콜을 사용합니다. wait()은 프로세스가 자신이 생성한 프로세스가 종료되기를 기다리기 원할 때 사용합니다. 핵심 질문프로세스를 생성하고 제어하려면 운영체제가 어떤 인터페이스를 제공해야 하는가?유용하고 편하게 사용하기 위해서 이 인터페이스를 어떻게 설계되어야 하는가? 📝8.1 fork() 시스템 콜프로세스 생성에 fork() 시스템 콜이 사용됩니다. ##include #include #include intmain(int argc, char *argv[]){ pri..

이 장에서는 운영체제가 제공하는 핵심 개념 중 하나인 프로세스(process)에 대해 논의합니다. 운영체제란?일반적으로 프로세스는 실행 중인 프로그램으로 정의합니다. 프로그램 자체는 생명이 없는 존재이며 프로그램은 디스크 상에 존재하는 실행을 위한 명령어와 정적 데이터의 묶음입니다.이 명령어와 데이터 묶음을 읽고 실행하여 프로그램에 생명을 불어넣는 것이 바로 운영체제입니다. 사용자는 하나 이상의 프로그램을 동시에 실행하기 원합니다. 우리가 컴퓨터를 사용할때 컴퓨터들이 동시에 수십 혹은 수백 개의 프로세스를 실행하는 것처럼 보입니다. 사용자는 사용 가능한 CPU를 신성쓰지 앟고 그저 프로그램만을 실행한다.이때 우리의 도전과제는 다음과 같습니다. 적은 CPU로 여러 개가 존재한다는 환상을 어떻게 제공하는..