728x90

CS 15

PML4 (Page Mapping Level 4)

PML4PML4는 x86_64 아키텍처에서 사용하는 4단계 페이지 테이블의 가장 상위 레벨입니다.즉, 64비트 가상 주소 → 물리 주소 변환 시, PML4는 첫 번째 인덱스로 접근되는 테이블입니다. (PML4는 "주소 변환의 첫 번째 인덱스")필요성64비트 주소는 최대 2⁶⁴개의 주소 공간을 다룰 수 있습니다. 하지만, 현실에서는 그렇게 큰 테이블을 한 번에 만수 없기 때문에, 4단계로 나누어 계층적으로 접근합니다. 이 구조는 페이지 테이블을 부족하게 만들고, 메모리를 절약할 수 있게 해줍니다.주소 변환 구조 (x86-64)가상 주소 48비트는 다음과 같이 나뉩니다.비트 범위테이블설명47–39PML4 index최상위 테이블38–30PDPT indexPage Directory Pointer Table29–..

Direct Memory Access (DMA)

Direct Memory Access (DMA)DMA는 CPU를 거치지 않고 장치 (디스크, 네트워크 카드 등)가 메모리와 직접 데이터 전송을 수행할 수 있게 하는 하드웨어 매커니즘입니다.→ CPU가 일일이 데이터를 복사하지 않아도, I/O 장치가 메모리에 직접 읽고 쓸 수 있게 해주는 기술입니다.특징DMA는 interrupt-driven I/O와 결합되어 효과적입니다.대량 데이터 전송에 적합하며, CPU는 그동안 다른 계산을 수행할 수 있습니다.인터럽트 + DMA 조합이 일반적인 현대 시스템 구조입니다.필요성CPU 복사 방식은 비효율적입니다. 원래는 다음과 같은 절차로 메모리에 복사됩니다.디스크가 데이터를 CPU로 보냅니다.CPU가 데이터를 RAM에 복사합니다.다시 CPU가 디바이스에 보냅니다.→ 이러..

File-backed Page

File-backed PageFile-backed Page는 파일 내용을 메모리에 매핑하여 사용하는 페이지 입니다. 즉, 특정 파일의 일부가 가상 주소 공간에 직접 연결되어, 메모리처럼 접근 가능한 구조입니다.→ 디스크의 파일 내용을 메모리에 올린 것이라고 이해하면 됩니다.필요성프로그램 실행: 실행파일(ELF)의 코드 / 데이터를 메모리에 매핑합니다. ( exec() )공간 절약: 여러 프로세스가 같은 파일 내용을 공유 가능합니다. (공용 C 라이브러리 등)지연 로딩: 파일 내용을 미리 다 읽지 않고, 접근할 때만 페이지 폴트로 로딩합니다.mmap 구현: 사용자 요청으로 파일을 메모리에 매핑합니다.흐름exec()이 ELF 파일을 파싱합니다.load_segment()에서 각 segment를 file-bac..

Swap Disk

Swap DiskSwap Disk는 운영체제가 메모리가 부족할 때, 일시적으로 데이터를 저장하는 디스크 영역입니다.필요성운영체제는 가상 메모리 때문에 실제 물리 메모리보다 더 큰 메모리 공간을 지원할 수 있습니다. 그런데 실제로 RAM이 부족하다면 사용하지 않는 페이지를 디스크로 내보내야합니다. 그러고 나중에 다시 필요할 때 swap-in 하면 됩니다.→ swap은 더 많은 프로세스가 동시에 실행, 프로그램 실행 중 힙 / 스택 확장을 허용합니다. 또한 메모리 사용량의 유연한 조절이 가능하게 합니다.흐름도페이지 교체 (eviction) 대상이 선택됩니다.해당 페이지가 익명 페이지고, 파일 백업이 없다면페이지의 내용을 swap 공간에 저장합니다. (→ swap_out())페이지 테이블에서 해당 페이지는 매..

Page Replacement Policy

Page Replacement Policy말 그대로 페이지 교체 정책입니다. 운영체제가 메모리 부족 상황에서 어떤 페이지를 제거할지 결정하는 전략입니다.필요성운영체제는 가상 메모리 덕분에 물리 메모리보다 큰 주소 공간을 다룰 수 있습니다. 하지만 모든 페이지를 동시에 물리 메모리에 유지할 수 없기 때문에, 새로운 페이지를 메모리에 불러와야 할 때는 기존 페이지 중 일부를 제거해야합니다.→ 여기서 어떤 페이지를 제거할지 결정하는 기준이 Page Replacement Policy 입니다.정책 종류와 개념4개의 정책 종류가 있습니다.FIFO: 가장 오래된 페이지를 제거합니다.LRU: 가장 오랫동안 사용되지 않은 페이지를 제거합니다.Clock: FIFO를 순환 큐로 개선합니다. 사용 비트를 확인합니다.Rando..

카테고리 없음 2025.06.08

Lazy Loading(지연 로딩)

Lazy Loading(지연 로딩)Lazy Loading은 데이터를 즉시 로드하지 않고, 진짜 필요한 순간에 로딩하는 기법입니다. 운영체제에서는 페이지 접근 시점까지 메모리에 내용을 로딩하지 않는 방식을 말합니다.왜 사용하는가?성능 최적화: 실제로 사용되지 않는 페이지는 로딩하지 않아서 I/O 비용을 절감합니다.메모리 절약: 전체 프로그램을 로드하지 않고, 필요한 페이지만 메모리에 할당합니다.시작 속도 향상: exec() 후 빠르게 실행 시작 가능합니다. (나중에 필요한 부분만 로딩)동작 흐름프로그램 시작 시 전체 페이지를 즉시 로딩하지 않습니다.필요한 페이지만 페이지 테이블에 등록합니다. (placeholder)해당 주소를 실제로 접근할 때 Page Fault 발생합니다.OS가 핸들러에서 해당 페이지 ..

TLB(Translation Lookaside Buffer)

TLB(Translation Lookaside Buffer)TLB는 가상 주소 → 물리 주소 변환 정보를 캐시해 놓는 하드웨어 캐시입니다.주소 변환 시 매번 페이지 테이블을 참조하면 느리기 때문에, 자주 접근하는 페이지 매핑 정보를 빠르게 제공하기 위해 존재합니다.→ [ TLB = 주소 변환 캐시 ] 라고 생각하면 좋습니다.필요성페이지 테이블 탐색은 메모리 접근이 여러 번 필요하기 때문에 느릴 수 있습니다. 특히 x86-64에서는 4단계 페이지 테이블 구조를 사용하기 때문에 사용합니다.하나의 VA 변환 = 최대 4번의 메모리 접근 필요→ 그래서 자주 쓰는 VA 매핑을 TLB에 저장해두고, 먼저 확인합니다.동작 흐름CPU가 가상 주소(VA)를 생성TLB에서 해당 VA의 페이지 번호(VPN) 매핑을 검색있으..

Page Table

Page Table페이지 테이블은 가상 주소를 물리 주소로 변환하기 위해 운영체제가 유지하는 자료 구조입니다.목적가상 주소 공간을 물리 주소 공간으로 매핑하기 위해 존재합니다.페이지 단위로 메모리를 관리하기 위한 핵심 메커니즘입니다.프로세스마다 개별적으로 존재합니다. (주소 공간 격리)동작 방식가상 주소는 다음과 같은 구조를 가집니다.+----------------+-------------+| Virtual Page # | Offset || (상위 비트) | (하위 비트) |+----------------+-------------+Virtual Page Number (VPN): 어떤 페이지인지를 식별합니다.offset: 해당 페이지 내에서의 위치를 의미합니다.운영체제는 VPN → ..

VM (가상메모리)

가상메모리가상 메모리는 프로세스가 자신만의 연속적인 메모리 공간을 가지는 것처럼 보이도록 만들어주는 추상화입니다. 실제 물리 메모리는 제한적이고, 여러 프로세스가 동시에 실행될 수 있도록 하기 위해 운영체제는 이 가상 메모리를 물리 메모리에 “매핑”하는 작업을 수행합니다.핵심 개념Virtual Address (VA): 사용자 프로그램이 사용하는 주소. illusion (환상)Physical Address (PA): 실제 RAM의 주소Address Translation: VA를 PA로 변환하는 과정Page: 고정 크기(예: 4KB)의 메모리 블록 단위Page Table: VA → PA로 변환하는 매핑 정보를 담는 자료구조TLB (Translation Lookaside Buffer): 자주 쓰는 주소 변환 ..

컴퓨터 시스템 8장(8.5)(예외 상황, 시그널)

8.1 예외 상황프로세서에 전원을 처음 공급한 시점부터 전원을 끌 때까지 프로그램 카운터(실행할 기계어 코드 위치 지정)는 연속된 값들을 가정한다. 제어흐름 케이스보통의 경우→ 점진적인 순서로 두개의 메모리가 서로 나란히 있는 경우이다. 변화가 생기는 경우→ jump, call 리턴 같은 프로그램 인스트럭션에 의해 발생된다. 이러한 명령어들은 프로그램 변수에 의해 상태 변화에 반응하도록 하기 위해 필요하다.예외적 변화흐름 처리의 예시시스템들은 내부 프로그램 변수에 의해 표시되지 않음. 실행과 관련되어 있지 않은 시스템 상태에도 반응할 수 있어야함.[ex]H / W timer: 인터럽트를 발생시켜 규칙적인 간격으로 꺼짐(너무 오래실행되는 걸 방지), 이걸 시스템이 정기적으로 처리해줘야함.Network: ..

728x90