728x90

책/운영체제 33

운영체제 13. 빈공간 관리

운영체제 13. 빈공간 관리 빈공간 관리는 관리하고 있는 공간이 고정 크기의 단위로 나누어져 있는 경우 쉽다. 그런 경우 고정 크기 단위의 리스트를 유지하면 된다. 클라이언트가 그 중 하나를 요청하면 첫 번째 항목을 반환하면 된다. 빈공간 관리가 더 어렵고 흥미로운 경우는 관리하는 공간이 가변 크기 빈 공간들의 집합으로 구성되어 있는 경우다. 이 경우 malloc()과 free()에서 처럼 사용자 수준 메모리 할당 라이브러리에서 그리고 세그멘테이션으로 물리 메모리를 관리하는 운영체제에서 발생한다. 어느 경우에도 외부 단편화가 존재한다. 13.1 가정 malloc()과 free()에서 제공하는 것과 같은 기본 인터페이스를 가정한다. 이 라이브러리가 관리하는 공간은 역사적으로 힙으로 불리며, 힙의 빈공간을 ..

책/운영체제 2024.03.10

운영체제 12. 세그멘테이션

운영체제 12. 세그멘테이션 스택과 힙 사이의 공간은 사용되지 않더라도 주소 공간을 물리메모리에 재배치 할 때 물리 메모리를 차지한다. 베이스 바운드 레지스터 방식은 메모리 낭비가 심하다. 또한, 주소 공간이 물리 메모리보다 큰 경우 실행이 매우 어렵다. 이런 측면에서 베이스와 바운드 방식은 유연성이 없다. 12.1 세그멘테이션 : 베이스/바운드의 일반화 세그멘테이션 아이디어는 MMU에 하나의 베이스와 바운드 값이 존재하는 것이 아니라 세그멘트마다 베이스와 바운드 값이 존재한다. 세그멘트는 특정 길이를 가지는 연속적인 주소 공간이다. 우리가 기준으로 삼은 주소 공간에는 코드, 스택, 힙의 세 종류의 세그멘트가 있다. 세그멘테이션을 사용하면 운영체제는 각 세그멘트를 물리 메모리의 각기 다른 위치에 배치할 ..

책/운영체제 2024.03.09

운영체제 11. 주소변환의 원리

운영체제 11. 주소변환의 원리 메모리 가상화는 가상화를 제공하는 동시에 효율성과 제어 모두를 추구한다. 효율성을 높이려면 하드웨어 지원을 활용할 수 밖에 없다. 제어는 응용 프로그램이 자기 자신의 메모리 이외에는 다른 메모리에 접근하지 못한다는 것을 운영체제가 보장하는 것을 의미한다. 유연성 측면에서 프로그래머가 원하는대로 주소공간을 사용하고 프로그래밍 하기 쉬운 시스템을 만들기를 원한다. 주소변환(Address translation)을 통해 하드웨어는 명령어 반입, 탑재, 저장 등의 가상주소를 정보가 실제 존재하는 물리주소로 변환한다. 프로그램의 모든 메모리 참조를 실제 메모리 위치로 재지정하기 위하여 하드웨어가 주소를 변환한다. 운영체제는 메모리의 빈 공간과 사용중인 공간을 항상 알고 있어야 하고,..

책/운영체제 2024.03.09

운영체제 10. 막간 : 메모리 관리 API

10. 막간 : 메모리 관리 API 10.1 메모리 공간의 종류 C 프로그램이 실행되면, 두 가지 유형의 메모리 공간이 할당된다. 첫번째는 스택(Stack) 메모리라고 불리며 할당과 반환은 프로그래머를 위해 컴파일러에 의해 암묵적으로 이루어진다. 이러한 이유 때문에 때로는 자동 C automatic() 메모리라고 불린다. 함수를 선언하면 C프로그램에서 스택에 메모리를 할당한다. 함수에서 리턴하면 컴파일러는 프로그래머 대신에 메모리를 반환한다. 함수 리턴 이후에도 유지되어야 하는 정보는 스택에 저장하지 않는 것이 좋다. 오랫동안 값이 유지되어야 하는 변수를 위해 힙(heap) 메모리라고 불리는 두 번째 유형의 메모리가 필요하다. 모든 할당과 반환이 프로그래머에 의해 명시적으로 처리된다. void func(..

책/운영체제 2024.03.07

운영체제 9. 주소공간의 개념

9. 주소공간의 개념 9.1 초기 시스템 운영체제는 메모리에 상주하는 루틴의 집합이었다. 물리메모리에 하나의 실행중인 프로그램(프로세스)이 존재하였고 나머지 메모리를 사용하였다. 9.2 멀티프로그래밍과 시분할 여러 프로세스가 실행준비 상태에 있고 운영체제는 그들을 전환하면서 실행하였다. 이런 전환은 CPU 이용률을 증가시켰다. 당시에는 이런 효율성의 개선이 중요했다. 많은 사람들이 일괄처리 방식 컴퓨팅의 한계를 인식하였다. 많은 사용자가 동시에 컴퓨터를 사용하고 현재 실행 중인 작업으로부터 즉시 응답을 원하기 때문에 대화식 이용(interactivity)의 개념이 중요하게 되었다. 시분할을 구현하는 한 가지 방법은 하나의 프로세스를 짧은 시간동안 실행시키는 것이다. 해당 기간 동안 프로세스에게 모든 메모..

책/운영체제 2024.03.05

운영체제 8. 멀티 프로세서 스케줄링(Multi Processor Scheduling)

운영체제 멀티 프로세서 스케줄링(Multi Processor Scheduling) 8.1 배경 : 멀티프로세서 구조 단일 CPU 시스템에는 하드웨어 캐시 계층이 존재한다. 캐시는 지역성(locality)에 기반한다. 지역성에는 시간지역성(temporal locality)과 공간지역성(spartial locality)의 두 종류가 있다. 시간적 지역성의 기본아이디어는 데이터가 한번 접근되면 가까운 미래에 다시 접근되기 쉽다는 것이다. 멀티프로세서 시스템에서 캐시를 사용하는 것은 훨씬 더 복잡하다. 캐시일관성(cache coherence) 문제가 생길 수 있다. 기본적인 해결책은 하드웨어에 의해 제공된다. 하드웨어는 메모리 주소를 계속 감시하고 항상 ‘올바른’ 순서로 처리되도록 시스템을 관리한다. 특히, 여..

책/운영체제 2024.03.04

운영체제 7. 스케줄링 : 비례 배분 (Proportional Share) 스케줄러, 공정 배분(fair share) 스케줄러

7. 스케줄링 : 비례 배분 (Proportional Share) 스케줄러, 공정 배분(fair share) 스케줄러 반환 시간이나 응답시간을 최적화 하는 대신 스케줄러가 각 작업에게 CPU의 일정 비율을 보장하는 것이 목적이다. 비례 배분 스케줄링의 좋은예로 추첨 스케줄링(lottery scheduling)이 있다. 기본 아이디어는 다음 실행될 프로세스를 추첨을 통해 결정하고 더 자주 수행되어야 할 프로세스는 당첨기회를 더 많이 주는 것이다. 7.1 기본 개념 : 추첨권이 당신의 지분이다. 추첨권(티켓)이라는 기본적인 개념이 추첨 스케줄링의 근간을 이룬다. 추첨권은 경품권의 개념과 유사하다. 추첨권은 특정 자원에 대한 프로세스에게(또는 사용자 또는 그 무엇이든) 할당될 몫(지분)을 나타낸다. 프로세스가..

책/운영체제 2024.03.03

운영체제 6. 스케줄링 : 멀티 레벨 피드백 큐(MLFQ : Multi-Level Feedback Queue)

6. 스케줄링 : 멀티 레벨 피드백 큐(MLFQ : Multi-Level Feedback Queue) 멀티 레벨 피드백 큐 스케줄러는 Compatible Time-Sharing System(CTSS)에 사용된다. MLFQ가 해결하려고 하는 기본적인 문제는 두 가지이다. 첫째, 짧은 작업을 먼저 실행시켜 반환시간을 최적화 하고자 한다. 둘째, 응답 시간을 최적화한다. 6.1 MLFQ : 기본 규칙 MLFQ는 여러 개의 큐로 구성되며, 각각 다른 우선 순위(Priority level)가 배정된다. 실행준비가 된 프로세스는 이 중 하나의 큐에 존재한다. MLFQ는 실행할 프로세스를 결정하기 위하여 우선순위를 사용한다. 높은 우선 순위를 가진 작업이 선택된다. 큐에 둘 이상의 작업이 존재 할 수 있다. 이들은 ..

책/운영체제 2024.03.03

운영체제 5. 스케줄링 : 개요

5. 스케줄링 : 개요 5.1 워크로드에 대한 가정 프로세스가 동작하는 일련의 행위를 워크로드(Work load)라 한다. 워크로드에 대한 이해도가 높을수록 그에 최적화된 스케줄링 정책을 정교하게 개발할 수 있다. 우리는 시스템에서 실행 중인 프로세스 혹은 작업(job)에 대해 다음과 같은 가정을 한다 모든 작업은 같은 시간동안 실행된다. 모든 작업은 동시에 도착한다. 작업은 일단 시작하면 최종적으로 종료될 때 까지 실행된다. 모든 작업은 CPU만 사용한다.(즉, 입출력을 수행하지 않는다.) 각 작업의 실행시간은 사전에 알려져 있다. 5.2 스케줄링 평가 항목 스케줄링 정책의 평가를 위해 스케줄링 평가항목(Scheduling metric)을 결정해야 한다. 반환시간은 (turnaround time) 작업..

책/운영체제 2024.03.02

운영체제 4. 제한적 직접 실행 원리(Limited Direct Execution)

3. 제한적 직접 실행 원리(Limited Direct Execution) CPU를 가상화하기 위해서 운영체제는 여러 작업들이 동시에 실행되는 것처럼 보이도록 물리적인 CPU를 공유한다. 이러한 가상화 기법을 구현하기 위해서는 두 가지 문제를 해결해야 한다. 성능저하 제어문제 제어권을 유지하면서 성능 저하가 없도록 하는 것이 운영체제를 구축하는데 핵심적인 도전 과제이다. 3.1 기본원리 : 제한적 직접 실행 운영체제 개발자들은 프로그램을 빠르게 실행하기 위하여 제한적 직접 실행이라는 기법을 개발했다. 운영체제가 프로그램을 실행하기 시작할 때 프로세스 목록에 해당 프로세스 항목을 만들고 메모리를 할당하면 프로그램 코드를 디스크에서 탑재하고 진입점을 찾아 그 지점으로 분기하여 사용자 코드를 실행하기 시작한다..

책/운영체제 2024.03.01
728x90