728x90

분류 전체보기 209

WEEK 12 PintOS TIL(6월2일 월요일)

[목표]pintos 카이스트 강의를 듣습니다. (다른 사람 벨로그 내용으로 대체 예정)깃북을 보고 개념을 이해합니다. (진행중) 정글에서 제공하는 키워드를 보고 정리합니다.노션을 만들어서 진행할 것인가? → 따로 적진 않을 것 같다.09:55 ~ 12:00어제에 이어서 키워드들을 정리해보도록 하겠습니다.12:00 ~ 13:00점심 식사를 하고, 휴식을 했습니다. 키워드 정리를 마무리 했습니다.13:00 ~ 13:30OS 특강 전에 키워드 정리를 마무리 했습니다.13:30 ~ 15:002번째 OS 특강을 들었습니다. 해당 내용은 정리를 해두었으므로 시간이 된다면 추후에 포스팅하도록 하겠습니다.15:10 ~ 17:00개념에 대해 정리한 내용을 벨로그에 사진을 추가하여 작성하고 있습니다. 개념이 10개가 넘어..

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())페이지 테이블에서 해당 페이지는 매..

Anonymous Page (익명 페이지)

Anonymous Page (익명 페이지)익명 페이지는 파일에 연결되지 않은 메모리 페이지를 말합니다.즉, 특정 파일을 백업으로 갖지 않고, 내용이 오직 메모리 안에만 존재하는 페이지입니다.용도Heap 영역: malloc() 이나 brk() 로 확장된 사용자 메모리에서 사용합니다.Stack 영역: 스택 프레임 추가 시 자동 생성되는 페이지에서 사용합니다.임시 버퍼: char *buf = malloc(1024) 같은 임시 저장공간 생성시 사용합니다.왜 Anonymous Page가 필요한가? (심화)1. 사용자 프로그램은 항상 파일만 사용하는 것이 아니기 때문입니다.현실에서 프로그램은 다음과 같은 메모리 공간을 필요로 합니다.메모리 구역설명파일 기반?코드 영역 (text)실행파일에서 가져옴O (file-ba..

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가 핸들러에서 해당 페이지 ..

Page Fault (페이지 폴트)

Page Fault (페이지 폴트)Page Fault는 CPU가 아직 메모리에 존재하지 않는 가상 주소를 접근하려고 할 때 발생하는 예외(Exception)입니다.발생하는 이유Lazy Loading: 프로그램 시작 시 전체 메모리를 로드하지 않고, 접근 시 로딩Swapping: 메모리가 부족해 디스크로 내린 페이지를 다시 올릴 때Stack Growth: 스택이 점진적으로 확장될 때잘못된 접근: 존재하지 않는 주소(NULL 등)에 접근시. (segmentation fault)처리 흐름페이지 폴트가 발생하면 다음과 같은 절차로 처리됩니다.CPU가 예외(Page Fault Exception)를 발생시킵니다.커널의 page fault handler 실행합니다.해당 가상 주소에 대한 원인을 다음과 같이 분석합니다..

TLB(Translation Lookaside Buffer)

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

728x90