OSTEP 8

[운영체제] 19. TLB

핵심 질문: 주소 변환 속도를 어떻게 향상할까? 🔹 흐름 정리 지난 블로깅에서 페이징 기법에 대해 알아보았다. 페이징은 프로세스 주소 공간을 작은 고정된 크기(page)로 나누고, 각 페이지의 실제 위치를 메모리에 저장한다. 매핑 정보를 저장하는 자료 구조를 페이지 테이블이라 한다. 매핑 정보 저장을 위해서는 더 큰 메모리 공간이 요구된다. 그런데 여기서 문제가 생겼었다. 가상 주소에서 물리 주소로의 주소 변환을 하려면 메모리에 존재하는 매핑 정보를 읽어야 한다. 모든 load/store 명령어 실행이 추가적인 메모리 읽기를 수반하는 것이다. 이 문제를 해결하기 위해서 하드웨어의 도움을 받는다. TLB에 대해 알아보자. 🔹 TLB란? TLB는 Translation-lookaside buffer의 약자로 ..

운영체제 2024.04.23

[운영체제] 17. Free Space Management 빈 공간 관리

앞장에서 세그멘테이션에서 발생할 수 있는 문제를 제기하며 끝났다. 첫 번째 문제는 외부 단편화(external fragmentation)였다. 아무리 세그멘테이션으로 물리 메모리를 관리하더라도 빈 공간이 단편화되어 사실 상 사용하기 어렵게 된다는 문제가 발생한다. 두 번째 문제는 세그멘테이션이 아직 유연하지 못해서 sparse한 구조에서 비효율적이라는 것이다. 이번 장에서는 외부 단편화를 해결하기 위한 방법으로 free list에 대해 알아볼 것이다. 17장의 핵심 질문 : 빈 공간을 어떻게 관리하는가? • 가변 크기의 요구를 충족시켜야 할 때, 빈 공간은 어떻게 관리되어야 하는가? • 단편화를 최소화하기 위해 어떤 전략을 사용할 수 있는가? • 여러 대안들의 시간과 공간의 오버헤드는 어떻게 되는가? 1..

운영체제 2024.04.23

[운영체제] 07. 스케줄러

Korean translation of Operating Systems: Three Easy Pieces Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau(University of Wisconsin-Madison), translation by Youjip Won, Minkyu Park, Sungjin Lee 위 교재를 읽고 공부하며 작성한 글으로, 잘못된 내용이 있을 수 있습니다. 글에서 사용된 이미지의 출처는 위 교재입니다. 07장의 핵심 질문 : 스케줄링 정책은 어떻게 개발하는가? 📍 워크로드에 대한 5가지 가정 다음에 어떤 프로세스를 실행할 지는 스케줄링 정책(Scheduling policy)에 의해 결정된다. 먼저 프로세스에 대해 5가지의 가정을 하고,..

운영체제 2024.04.23

[운영체제] 18. Paging

18장의 핵심 질문 : 페이지를 사용하여 어떻게 메모리를 가상화할 수 있을까? 🔹 흐름 정리 우리는 메모리 공간 관리를 위해 세그멘테이션 기법을 도입하였다. 세그멘테이션에서는 세그멘트 단위(예, 코드, 힙, 스택)로 주소 공간을 나눴기 때문에 다양한 크기의 덩어리로 구분해주어야 했는데, 이로 인해 외부 단편화(external fragmentation)문제가 발생했다. 외부 단편화 문제는 공간이 할당되는 것을 점점 더 어렵게 했다. 그래서 나온 새로운 방식이 페이징(paging)이다. 우리는 이번 글에서 페이징 기법에 대해 알아볼 것이다. 🔹 페이징(paging)이란? 세그멘테이션에서 발생한 외부 단편화의 근본적인 원인은 공간을 다양한 크기의 덩어리로 분할한다는 것에 있다. 그래서 페이징은 공간을 동일한 ..

운영체제 2024.04.07

[운영체제] 06. 제한적 직접 실행(LDE, Limited Direct Execution)

이번 장의 핵심질문은 제어를 유지하면서 효과적으로 CPU를 가상화하는 방법이다. 프로세스가 제어권을 가지지 못하도록 해야하는 것이 매우 중요한데, 그러기 위해서는 하드웨어와 운영체제의 지원이 필수적이다. 초기에는 직접 실행(Direct Execution) 방식이었다. 이는 프로그램을 CPU 상에서 그냥 직접 실행시키는 것이다. 프로세스가 CPU를 제때 잘 반납하면 좋겠지만 현실은 그렇지 않다. 악의적인 프로그램이 컴퓨터를 장악할 수도 있고, CPU를 가상화하는 데 필요한 시분할(time sharing)기법을 구현할 수도 없다. '제한적 직접 실행'으로 이 문제들을 해결할 수 있다. 직접 실행의 문제점과 해결방안에 대해서 차근차근 살펴보자. 📍 직접 실행 프로토콜의 문제점 1 : 제한된 연산 ➪ 커널모드와..

운영체제 2024.03.31

[운영체제] 16. segmentation 세그멘테이션

지금까지 메모리 가상화가 필요한 이유와 목적, 가상화를 하기 위한 동적 재배치 방법에 대해 알아보았다. 동적 재배치는 베이스/바운드 방식을 이용했다. 그런데 주소 공간에서 스택과 힙 사이에 사용되지 않는 빈 공간이 존재하는 것을 보았을 것이다. 그 사이의 빈 공간은 사용되지 않더라도 재배치할 때 물리 메모리를 차지한다. 따라서 메모리 낭비가 심하고, 주소 공간이 물리 메모리보다 크면 실행할 수 없다. 이러한 측면에서 베이스/바운드 방식은 유연성이 없다. 이를 해결하기 위해 등장한 아이디어가 세그멘테이션(segmentaition)이다. 16.1 세그멘테이션: 베이스/바운드(base/bound)의 일반화 이 아이디어는 MMU안에 오직 하나의 베이스/바운드 쌍만 존재하는 것이 아니라 주소 공간의 논리적인 세그..

운영체제 2024.03.24

[운영체제] 15. vm mechanism 주소 변환의 원리

앞서 메모리 가상화가 필요한 이유와 목표에 대해 살펴보았다. 그렇다면 어떻게 효율적이고 유연하게 메모리를 가상화할 수 있을까? 우리가 다룰 기법은 하드웨어 기반 주소 변환(hardware-based address translation), 짧게 말해서 주소 변환(address translation)이다. 하드웨어는 주소 변환을 통해 Load, Store, Fetch 등의 가상 주소를 실제 존재하는 물리 주소로 변환한다. 하지만 하드웨어만으로 메모리 가상화를 구현할 수는 없다. 운영체제가 관여한다. 15.1 가정 몇 가지 비현실적인 가정을 설정하고 시작해보자. 사용자 주소 공간은 물리 메모리에 연속적으로 배치되어야 하며, 주소 공간의 크기는 물리 메모리보다 작고, 각 주소 공간의 크기는 같다. 이렇게 가정하..

운영체제 2024.03.24

[운영체제] 13. Address Space 주소 공간

13.1 초기 시스템 초기의 시스템의 메모리는 매우 단순했다. 0~64KB의 메모리를 운영체제가 사용했고, 나머지 메모리는 하나의 실행 중인 프로그램(프로세스)가 사용했다. 13.2 멀티 프로그래밍과 시분할 하지만 컴퓨터를 더 효과적으로 사용하기 위해 멀티 프로그래밍(multi-programming)이 등장했다. 멀티 프로그래밍이란 하나의 CPU를 가지고 작업하던 중 어느 프로세스가 I/O 처리를 하게 되었을 때, 그 입출력 결과를 무한히 기다리는 대신 다음 프로세스 작업을 진행하는 것이다. 준비 상태에 있는 프로세스로 전환하는 것은 운영체제의 몫이다. 따라서 CPU의 이용률이 늘어나게 되었다. 그 이후 시분할(time-sharing) 방식도 도입되었다. 시분할을 구현하는 한 가지 방법은 하나의 프로세스..

운영체제 2024.03.23