세그먼테이션 (Segmentation)

세그먼테이션 (Segmentation) 세그먼테이션(Segmentation)은 운영체제의 메모리 관리 기법 중 하나로, 프로세스를 논리적 단위인 세그먼트로 나누어 관리하는 방식이다. 세그먼테이션의 기본 개념을 이해하기 위해, 먼저 프로그램의 구조를 생각해보자. 일반적인 프로그램은 코드 영역, 데이터 영역, 스택 영역 등 서로 다른 목적을 가진 영역들로 구성된다. 세그먼테이션은 이러한 논리적 단위들을 각각의 세그먼트로 관리한다. Source: https://www.geeksforgeeks.org/segmentation-in-operating-system/ 세그먼테이션의 주요 구성 요소와 작동 방식 세그먼트 테이블(Segment Table): 1 2 3 4 5 6 7 8 9 10 struct SegmentTableEntry { uint32_t base; // 세그먼트의 시작 주소 uint32_t limit; // 세그먼트의 크기 bool present; // 메모리 존재 여부 struct { bool read; // 읽기 권한 bool write; // 쓰기 권한 bool execute; // 실행 권한 } protection; }; 주소 변환 과정: 논리적 주소는 다음과 같이 구성된다: ...

October 1, 2024 · 2 min · Me

페이징 (Paging)

페이징 (Paging) 먼저 페이징이 필요한 배경을 이해해보자. 초기 컴퓨터 시스템에서는 프로그램 전체가 물리 메모리에 연속적으로 적재되어야 했다. 이는 두 가지 큰 문제를 발생시켰다: 큰 프로그램은 메모리에 적재하기 어려웠다. 메모리 단편화(fragmentation)가 심각했다. 이러한 문제를 해결하기 위해 페이징이 도입되었다. 페이징의 기본 개념은 프로그램의 논리적 주소 공간과 물리적 메모리를 동일한 크기의 작은 단위로 나누어 관리하는 것이다. 이때 논리적 주소 공간의 단위를 ‘페이지(page)‘라 하고, 물리적 메모리의 단위를 ‘프레임(frame)‘이라고 한다. Source: https://www.geeksforgeeks.org/paging-in-operating-system/ 페이징 시스템의 주요 구성 요소 페이지 테이블(Page Table): ...

October 1, 2024 · 4 min · Me