컴퓨터 스케줄링과 메모리 관리에 대한 이해
컴퓨터 시스템에서 스케줄링은 작업들을 언제 수행할지를 결정하는 중요한 과정입니다.
이는 효율성과 공정성 사이에 있는 균형을 유지해야 합니다.
- 응답시간 최소화: 각 작업의 대기 시간을 최소화하고, 작업이 도착한 순간부터 완료될 때까지 걸리는 시간을 최소화합니다.
- 시스템 처리율 극대화: 문맥 전환 등의 오버헤드를 고려하여 시스템의 전반적인 처리율을 극대화합니다.
최적성을 보장하는 스케줄링 알고리즘들이 있지만, 이러한 알고리즘들이 항상 공정하지는 않을 수 있습니다.
- SJF (Shortest Job First): 작업량이 가장 적은 작업을 먼저 처리합니다.
- SRTF (Shortest Remaining Time First): 현재 남은 작업량이 가장 적은 작업을 우선적으로 처리합니다.
메모리 관리는 컴퓨터 시스템 자원의 추상화를 통해 이루어집니다. 프로세스, 가상메모리, 파일시스템 등을 통해 프로그래머는 일관된 방식으로 자원을 조작할 수 있습니다.
- 메모리 계층 구조와 가상메모리: 레지스터부터 보조기억장치까지의 계층 구조를 가지며, 각 메모리는 하드웨어에 의해 제어되며 운영체제와의 협력을 통해 가상화됩니다.
가상메모리와 스케줄링: 운영체제의 핵심 역할
가상메모리는 운영체제의 중요한 부분 중 하나입니다. 프로세스에게 할당된 메모리와 반환된 메모리를 관리하고, 서로 다른 프로세스 간의 메모리 침범을 방지하는 역할을 수행합니다. 이는 운영체제의 주요 책임 중 하나로, 시스템의 안정성과 보안을 유지하는 데 중요한 역할을 합니다.
요구 페이징과 교체 기법
요구 페이징은 페이지 폴트를 줄이는 것이 매우 중요합니다. 이를 위해 지역성에 근거하여 메모리 페이지를 관리하고, 페이지 교체 기법을 사용하여 메모리의 효율성을 향상시킵니다. 특히 LRU(least recently used) 및 이를 근사화한 알고리즘을 사용하여 페이지를 교체합니다.
파일 시스템의 역할
파일 시스템은 저장장치를 관리하는 또 다른 중요한 부분입니다. 운영체제는 저장장치를 파일 시스템으로 추상화하여 디스크 드라이브를 관리하고, 파일의 형태로 데이터를 추상화하여 제공합니다. 이를 통해 프로그래머는 일관된 방식으로 파일을 다룰 수 있으며, UNIX 계열의 운영체제에서는 장치를 파일로 간주하여 일관된 방법으로 접근할 수 있습니다.
장치 관리자의 역할
장치 관리자는 하드웨어 제조사에 의해 제공되기도 하지만, 주로 운영체제의 일부로 간주됩니다. 이는 커널의 문맥에서 실행되며, 각 장치의 입력/출력 및 기타 제어를 담당합니다. 이를 통해 운영체제는 시스템 자원을 효율적으로 관리하고, 사용자에게 일관된 인터페이스를 제공합니다.
-스케줄링
스케줄링 문제 - 어느 순간 어느 작업을 수행할 것인지를 결정하는 문제
효율성과 공정성 사이의 이해득실 관계
응단시간을 최소화
각 작업이 도착했을때로부터 완료된 때까지의 시간이 중요
시스템 처리율을 극대화
문맥전환을 오버헤드를 고려하면 응단시간과 같은 기준이 아님
공정성을 해치지 말 것: 자칫 우선순위가 낮은 작업은 영원히 기다려야 할 수도
-스케줄링 알고리즘의 예 FCFS
First-come first served scheduling
소요시간과 대기시간을 제외하고 들어온 순서대로 작업
-최적성 보장 스케줄링 알고리즘들
SJF(Shortest Job First)
지금 시작할 수 있는 작업들 중 , 작업량이 가장 적은 것을 선택하여 스케줄
SRTF(Shortest Remaining Time First
새로운 작업이 도착하고, 이것을 더 일찍 끝낼 수 있다면 -> 문맥전환
매 순간, 남아 있는 작업량이 가장 적은 것을 선택하여 스케줄
평균 응답 시간 측면에서 최적의 알고리즘
수학적으로 증명되어 있음
금방 끝낼 수 있을 작업을 우선 처리하므로, 직관적으로도 당연
그러나, 이 방법이 공정한가?
2-8. 메모리와 입출력 관리 (1)
-컴퓨팅 시스템 자원의 추상화
프로세스: CPU 시간에 대한 추상화
각 프로세스는 자신에게 CPU 시간이 전체 중 일부가 주어지는 것으로 가상할 수 있음
가상메모리: 메모리 공간에 대한 추상화
각 프로세스는 전체 주소 공간을 모두 자신에게 할당된 메모리로 사용할 수 있는 것으로 가상할 수 있음
파일시스템: 입출력 장치들을 일관된 인터페이스로 추상화
각 프로세스는 실제 입출력 장치의 동작 방식과는 무관하게 파일을 조작하는 것1과 동일한 일관된 방법을 통하 여 서로 다른 장치의 입출력을 이용할 수 있음
-메모리 계층 구조와 가상메모리
레지스터: cpu 안에 있으며, 하드웨어에 의하여 제어
캐시 메모리: CPU 안 또는 매우 가까이 있으며, 하드웨어에 의하여 제어
주기억장치(메인 메모리): cpu와 메모리 버스로 연겨로디어 있으면 하드웨어에 의하여 제어
보조기억장치(스토리지): 운영체제와 하드웨어의 협력에 의하여 주기억장치에 대한 가상화를 제공
-가상메모리
프로세스에게 메모리를 할당해 주고 프로세스가 반환하는 메모리를 “이용 가능한 것”을 으로 관리하고 서로 다른 프로세스가 남의 메모리를 침범하지 못하도록 하는 일들은,모두 운영체제의 몫
2-9. 메모리와 입출력 관리
-페이징에 의한 가상 메모리 주소 변환
-요구 페이징
페이지 폴트를 줄이는 것은 전체 시스템 성능 향상에 매우 중요
지역성에 근거하여 메모리 페이지들을 저장 장치로부터 읽어들여 메모리에 적재
캐시 메모리의 관리와 유사한 방법
교체 기법에 LRU(least recently used) 및 이를 근사화한 알고리즘을 적용
참조의 지역성
시간적 지역성: 지금 참조된 주소는 가까운 미래에 또 다시 참조될 가증성이 매우 높음
공간적 지역성: 지금 참조된 주소와 가까운 주소가 미래에 참조될 가능성이 매우 높음
-파일 시스템
저장장치는 입출력장치와는 조금 다른 특성을 가짐
단지 데이터를 입출력하는 것 외에 메모리 서브시스템의 일부로서의 역할 기능을 가지기 때문에
운영체제는 저장장치를 파일시스템으로 추상화
디스크 드라이브는 입출력 장치 관리 방법에 의하여 관리되며, 이 장치를 이용하여 “파일”의 형태로 추상화된 데이터 집합을 이용할 수 있는 운영체제의 일부를 구현
특히 UNIX 계열의 운영체제에서는 많은 종류의 장치들을 파일로 간주하는 추상화 방식을 통하여 일관된 방법으로 장치에 접근할 수 있도록 관리
장치 관리자가 커널의 문맥에서 실행하면서 각장치의 입력/출력 및 기타 제어를 담당
-장치 관리자
장치 관리자는 하드웨어 제조사에 의하여 제공되는 경우도 많지만 운영체제의 일보로 보는것이 타당