OS 범위는 넓고 넓어서 하나씩 카테고리별로 정리하고자 한다.
우선 메모리에 대해서 정리를 해보겠다
Memory Hierarchy
메모리 계층의 구조
1. Register
레지스터는 CPU 내부에 존재하는 가장 빠른 메모리이다. 이 메모리는 극히 제한된 용량 (수십 바이트)만을 가지며, CPU가 데이터를 즉시 처리하기 위해 사용된다.
2. Cache Memory
CPU와 RAM 사이에 위치한 고속 메모리이다. 캐시 메모리는 자주 사용되는 데이터를 저장하여 CPU가 빠르게 접근할 수 있도록 도와준다. 캐시 메모리는 속도와 용량에 따라 L1, L2, L3 캐시로 구분되며 각 계층은 다른 캐시보다 느리지만 더 큰 용량을 가진다.
3. Main Memory, RAM
시스템에서 실행되는 프로그램과 데이터를 저장하는 기본 메모리이다. RAM은 캐시 메모리보다 크지만 상대적으로 느리다. 주 메모리는 프로그램이 실행될 때 필요한 데이터를 저장하며, CPU는 이 데이터를 처리하기 위해 주 메모리에 자주 접근한다.
4. Secondary Storage
보조 저장 장치는 주로 영구적인 데이터 저장을 담당한다. HDD나 SSD와 같은 장치가 이 계층에 속하며 용량은 크지만 데이터 접근 속도는 주 메모리에 비래 느리다. 보조 저장 장치는 프로그램이나 파일을 영구적으로 저장하는 데 사용되며, 필요 시 주 메모리로 데이터를 로드한다.
5. Virtual Memory
물리적 메모리의 한계를 극복하기 위한 기법이다. 가상 메모리는 보조 저장 장치의 일부를 주 메모리처럼 사용하여 물리 메모리보다 큰 프로그램을 실행 할 수 있도록 한다. 이는 운영체제가 관리하며, 필요한 메모리만 물리 메모리에 로드함으로 써 실제 메모리 사용을 최적화한다.
Cache Memory
캐시 메모리는 CPU와 주 메모리 사이에 자주 사용되는 데이터를 저장한다.
- L1 캐시는 CPU 코어 내부에 위치한 가장 빠르고 작은 캐시 메모리이다. L1 캐시는 CPU가 가장 자주 사용하는 데이터를 저장하며, 접근 속도가 매우 빠르다. 그러나 용량이 작기 때문에 제한된 양의 데이터만을 저장할 수 있다.
- L2 캐시는 L1 캐시보다 크지만 속도가 약간 느리다. L2 캐시는 CPU 코어 내부 또는 외부에 위치할 수 있으며, L1 캐시가 다루지 못하는 더 넓은 범위의 데이터를 저장한다.
- L3 캐시는 여러 CPU 코어가 공유하는 캐시로, L1과 L2 캐시보다 크고 느리다. L3 캐시는 CPU 코어 간의 데이터 공유를 가능하게 하며, 주 메모리보다 빠르게 데이터를 제공할 수 있다.
캐시 메모리는 캐시 관리 정책을 통해 데이터를 관리한다. 캐시는 자주 사용되는 데이터를 효율적으로 저장하고, 캐시가 가득 찼을 때 어떤 데이터를 교체할지 결정하는 LRU, LFU, FIFO 등의 알고리즘을 사용한다.
Locality
캐시 메모리는 메모리의 Locality 개념을 기반으로 동작한다. 지역성은 프로그램이 실행될 때 시간 적 공간적 패턴에 따라 메모리에 접근하는 특성이다. 예를 들어, 2차원 배열을 가로로 탐색할 때, 연속된 메모리 주소에 접근하게 되므로 공간적 지역성을 잘 활용할 수 있다. 반면에 세로로 탐색할 경우 비연속적인 메모리 접근으로 인해 캐시 미스가 증가하여 성능이 저하될 수 있다.
- Temporal Locality: 특정 데이터가 한 번 사용되면 가까운 시간 내에 다시 사용될 가능성이 높다는 것을 의미한다.
- Spatial Locality: 특정 메모리 주소에 접근하면 그 근처의 주소에 접근할 가능성이 높다는 것을 의미한다.
Virtual Memory
가상 메모리는 물리적 메모리의 크기에 상관없이 프로그램이 실핼될 수 있도록 해주는 메모리 관리 기법이다. 가상 메모리는 프로세스마다 독립적인 주소 공간을 제공하여 메모리 보호를 강화하고, 물리 메모리보다 큰 프로그램을 실행할 수 있게 한다.
가상 메모리는 가상 주소와 물리 주소를 분리하여 운영된다. 프로그램이 사용하는 가상 주소는 실제 메모리의 물리 주소와 다르며, 이 주소 변환은 Page Table을 통해 이루어진다. 페이지 테이블은 가상 메모리의 페이지와 물리 메모리의 프레임을 매핑하는 데이터 구조이다.
Page Table
1. 가상 주소 분할: 가상 주소는 두 부분으로 나뉜다. 하나는 page number, 다른 하나는 offset이다. 페이지 번호는 페이지 테이블 인덱스로 사용되며, 오프셋은 페이지 내에서 특정 데이터를 찾는 데 사용된다.
2. 페이지 테이블 조회: CPU가 특정 가상 주소를 접근할 때, 해당 가상 주소의 페이지 번호를 사용하여 페이지 테이블에서 물리 주소를 찾는다.
3. 물리 주소 계산: 페이지 테이블에서 찾은 물리 주소의 Frame Number와 가상 주소의 오프셋을 결합하여 실제 물리 주소를 계산한다. 이 주소를 사용하여 실제 메모리에 접근하게 된다.
Page Fault
페이지 폴트는 프로세스가 접근하려는 가상 페이지가 현재 물리 메모리에 없는 경우 발생한다. 이는 일반적으로 해당 페이지가 디스크에 저장되어 있을 때 발생한다. page fault는 성능에 영향을 줄 수 있지만, 가상 메모리 시스템의 정상적인 동작 과정의 일부이다.
1. 페이지 폴트 발생 확인: CPU가 페이지 테이블을 조회했을 때, 유효 비트(Valid Bit)가 0인 경우 해당 페이지가 물리 메모리에 없음을 나타내며, 이때 페이지 폴트가 발생한다.
2. 디스크에서 페이지 로드: 운영체제는 디스크에서 해당 페이지를 찾아 물리 메모리의 빈 프레임에 로드한다. 이 과정에서 빈 프레임이 없을 경우, 페이지 교체 알고리즘에 따라 메모리에서 덜 중요한 페이지를 내보내고 그 자리에 새로운 페이지를 로드한다.
페이지 테이블 업데이트: 새로 로드된 페이지의 물리 주소를 페이지 테이블에 기록하고, 유효 비트를 1로 설정하여 해당 페이지가 이제 물리 메모리에 있음을 나타낸다.
3. 프로세스 재시작: 페이지가 물리 메모리에 로드되면, 중단되었던 프로세스의 명령이 다시 실행되어 정상적으로 진행된다.
페이지 크기 Trade-Off
페이지 크기가 큰 경우
장점: 페이지 테이블의 크기가 줄어들며, 운영체제가 관리해야 할 페이지 수가 줄어들어 관리 오버헤드가 감소한다. 또한, 한 번의 디스크 I/O로 더 많은 데이터를 로드할 수 있어 페이지 폴트가 줄어들 수 있다.
단점: 내부 단편화(Internal Fragmentation)가 증가할 수 있다. 큰 페이지 크기는 페이지 내에서 사용되지 않는 공간이 증가할 수 있어 메모리 낭비를 초래할 수 있다. 또한, 너무 큰 페이지 크기는 캐시의 효율을 떨어뜨릴 수 있다.
페이지 크기가 작은 경우:
장점: 내부 단편화 문제가 줄어들며, 메모리 공간을 더 효율적으로 사용할 수 있다. 작은 페이지 크기는 더 세밀한 메모리 관리가 가능하게 한다.
단점: 페이지 테이블이 커지고, 페이지 폴트가 발생할 가능성이 높아지며, 디스크 I/O가 증가할 수 있습니다. 이는 시스템 성능에 부정적인 영향을 미칠 수 있다.
Segmentation
세그멘테이션(Segmentation)은 가상 메모리와는 다른 메모리 관리 기법이지만, 둘은 함께 사용될 수 있다. 세그멘테이션은 프로세스를 코드, 데이터, 스택 등의 논리적 단위로 나누고, 각 단위(세그먼트)에 가변 크기의 메모리 블록을 할당하는 방식이다.
가상 메모리와 세그멘테이션의 통합: 세그멘테이션은 각 세그먼트가 독립적인 주소 공간을 가지며, 이 세그먼트들은 가상 메모리에서 관리될 수 있다. 세그멘테이션과 가상 메모리를 통합하여 사용하면, 세그먼트의 가상 주소가 페이지로 나뉘고, 각 페이지가 물리 메모리의 프레임에 매핑된다.
세그멘테이션의 장점
보안성: 프로세스 간의 메모리 접근을 제어하여 보안성을 높일 수 있다. 예를 들어, 한 프로세스의 세그먼트가 다른 프로세스의 세그먼트에 접근하지 못하도록 할 수 있다. 유연성: 프로그램의 논리적 구조에 맞춰 메모리를 할당할 수 있어, 코드나 데이터, 스택을 별도로 관리할 수 있다.
세그멘테이션의 단점
외부 단편화(External Fragmentation): 가변 크기의 세그먼트를 사용하기 때문에, 메모리 공간에 빈틈이 생기는 외부 단편화 문제가 발생할 수 있다. 이는 메모리 공간의 비효율적인 사용으로 이어질 수 있다. 세그멘트 테이블의 오버헤드: 세그멘트를 관리하기 위해 세그멘트 테이블이 필요하며, 이는 추가적인 메모리 오버헤드를 발생시킬 수 있다.
'전공 > 운영체제' 카테고리의 다른 글
TLB와 MMU (feat. 가상메모리와 페이지 테이블까지) (0) | 2024.12.31 |
---|