7. 메모리 관리
7.1. 메모리 계층 구조
메모리 계층 구조는 컴퓨터 시스템에서 메모리가 계층적으로 구성되어 있는 방식을 설명. 이 계층 구조는 성능과 비용을 고려하여 설계.
- 레지스터: CPU 내부에 있는 매우 빠른 메모리로, 가장 빠르지만 용량이 매우 적다.
- 캐시: CPU와 메인 메모리 사이에 위치한 빠른 메모리로, 자주 사용되는 데이터를 저장하여 접근 속도를 높인다.
- 주기억 장치 (RAM): 실행 중인 프로그램과 데이터를 저장하는 빠른 메모리.
- 보조 기억 장치: 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD) 등 영구적인 저장 장치.
- 외부 저장 장치: USB 드라이브, 외장 하드 드라이브.
7.2. 메모리 할당 방법
- 단일 할당 (Single Allocation): 하나의 프로세스가 메모리 전체를 사용하는 방식. 초기 시스템에서 사용되었으며, 매우 비효율적.
- 분할 할당 (Partitioned Allocation): 메모리를 여러 개의 고정된 크기 또는 가변적인 크기로 나누어 사용하는 방식.
- 고정 분할: 메모리를 고정된 크기의 여러 파티션으로 나누어 각 파티션에 프로세스를 할당.
- 가변 분할: 메모리를 가변적인 크기의 파티션으로 나누어 프로세스의 크기에 맞게 할당.
- 페이징 (Paging): 메모리를 동일한 크기의 페이지로 나누고, 프로세스의 주소 공간을 페이지 단위로 나누어 물리 메모리에 할당하는 방식.
- 세그멘테이션 (Segmentation): 메모리를 크기가 다른 세그먼트로 나누어 각 세그먼트를 프로세스의 논리적 단위(예: 코드, 데이터, 스택)로 할당하는 방식.
7.3. 가상 메모리 개념
가상 메모리: 물리적 메모리보다 큰 주소 공간을 제공하기 위해 디스크 공간을 사용하여 메모리를 확장하는 기술. 이를 통해 프로세스는 더 큰 메모리 공간을 사용할 수 있으며, 메모리 관리의 효율성이 높아진다. 가상 메모리는 페이징과 세그멘테이션 기법을 통해 구현.
7.4. 페이지 교체 알고리즘
페이지 교체 알고리즘은 가상 메모리 시스템에서 새로운 페이지를 메모리에 로드할 때, 어떤 페이지를 내보낼지를 결정하는 방식.
- FIFO (First-In, First-Out): 가장 먼저 들어온 페이지를 먼저 내보내는 방식.
- LRU (Least Recently Used): 가장 오랫동안 사용되지 않은 페이지를 내보내는 방식.
- LFU (Least Frequently Used): 가장 적게 사용된 페이지를 내보내는 방식.
7.5. 스와핑과 메모리 압축
- 스와핑 (Swapping): 프로세스를 주기억 장치에서 보조 기억 장치로 이동시키고, 필요할 때 다시 주기억 장치로 가져오는 방식. 이를 통해 메모리의 효율성을 높인다.
- 메모리 압축: 메모리 공간을 효율적으로 사용하기 위해 메모리에 저장된 데이터를 압축하는 방식. 이를 통해 메모리 사용량을 줄일 수 있다.
8. 저장 장치 관리
8.1. 파일 시스템 구조
파일 시스템은 데이터를 파일 형태로 저장하고 관리하는 시스템. 파일 시스템 구조는 다음과 같은 계층으로 이루어져 있다.
- 파일: 데이터를 저장하는 기본 단위.
- 디렉터리: 파일을 논리적으로 그룹화하여 계층 구조로 관리하는 단위.
- 볼륨: 하나의 파일 시스템을 포함하는 저장 장치의 논리적 단위.
8.2. 파일 개념과 속성
파일 개념: 파일은 이름을 가진 데이터의 집합으로, 프로그램이나 사용자가 접근할 수 있다.
파일 속성: 파일 이름, 파일 유형, 크기, 생성 날짜, 수정 날짜, 권한(읽기, 쓰기, 실행) 등이 포함된다.
8.3. 파일 시스템 구현
- 디렉터리 구조: 파일을 논리적으로 그룹화하여 계층적으로 관리.
- 단일 수준 디렉터리: 모든 파일이 하나의 디렉터리에 포함.
- 2단계 디렉터리: 사용자별로 디렉터리를 제공하여 파일을 관리.
- 트리 구조 디렉터리: 디렉터리가 트리 형태로 구성되어 파일과 하위 디렉터리를 포함할 수 있다.
- 비순환 그래프 디렉터리: 파일과 디렉터리를 그래프 형태로 구성할 수 있다.
- 할당 방법: 파일을 디스크에 할당하는 방법.
- 연속 할당: 파일이 연속된 디스크 블록에 저장.
- 연결 할당: 파일의 각 블록이 연결 리스트로 연결.
- 인덱스 할당: 파일의 모든 블록 주소를 인덱스 블록에 저장하여 관리.
8.4. 디스크 스케줄링 알고리즘
디스크 스케줄링 알고리즘은 디스크 접근 순서를 결정하여 디스크 I/O 효율성을 높이는 방법.
- FCFS (First-Come, First-Served): 요청이 들어온 순서대로 처리.
- SSTF (Shortest Seek Time First): 현재 헤드 위치에서 가장 가까운 요청을 먼저 처리.
- SCAN: 디스크 헤드가 한쪽 끝에서 다른 쪽 끝으로 이동하면서 요청을 처리.
- C-SCAN (Circular SCAN): 디스크 헤드가 한쪽 끝에서 다른 쪽 끝으로 이동하면서 요청을 처리한 후, 다시 처음으로 돌아가서 반복.
8.5. RAID 구조와 유형
RAID(Redundant Array of Independent Disks)는 여러 디스크를 병렬로 연결하여 성능과 데이터 안정성을 높이는 기술.
- RAID 0: 데이터 스트라이핑을 통해 성능을 높이지만, 데이터 복구 기능이 없다.
- RAID 1: 데이터 미러링을 통해 데이터 복구 기능을 제공.
- RAID 5: 데이터 스트라이핑과 패리티 정보를 통해 성능과 데이터 복구 기능을 제공.
- RAID 6: RAID 5와 유사하지만, 추가 패리티 블록을 사용하여 더 높은 데이터 복구 기능을 제공.
- RAID 10: RAID 0과 RAID 1을 결합하여 성능과 데이터 복구 기능을 동시에 제공.