7주차 키워드 정리
🖥️ 운영체제 및 메모리 관리 핵심 정리 1. 시스템 콜 (System Call) 개념: 사용자 프로세스가 운영체제(OS) 커널이 제공하는 서비스를 이용하기 위해 커널 함수를 호출하는 인터페이스입니다. 필요성: 응용 프로그램은 하드웨어(CPU, 메모
🖥️ 운영체제 및 메모리 관리 핵심 정리
1. 시스템 콜 (System Call)
개념: 사용자 프로세스가 운영체제(OS) 커널이 제공하는 서비스를 이용하기 위해 커널 함수를 호출하는 인터페이스입니다.
- 필요성: 응용 프로그램은 하드웨어(CPU, 메모리, 디스크 등)에 직접 접근할 수 없습니다. 보안과 안정성을 위해 OS가 자원을 관리하며, 응용 프로그램은 ‘요청’을 통해서만 자원을 사용할 수 있습니다.
- 작동 원리:
- 사용자 모드(User Mode)에서 실행 중인 프로그램이 시스템 콜을 호출합니다.
- 트랩(Trap)이 발생해 커널 모드(Kernel Mode)로 전환됩니다.
- 커널이 요청을 처리한 뒤 사용자 모드로 복귀합니다.
- 주요 예시: fork()(프로세스 생성), read()/write()(파일 I/O), exit()(종료).
2. 데이터 세그먼트 (Data Segment)
개념: 프로세스의 가상 메모리 공간 중 전역 변수와 정적 변수(static)가 저장되는 영역입니다.
- 메모리 구조 내 위치: 보통 코드(Text) 세그먼트 위에 있고, 힙(Heap) 세그먼트 아래에 위치합니다.
- 세부 분류:
- Data 세그먼트 (Initialized): 초기화된 전역 변수 및 정적 변수가 저장됩니다. (예: int a = 10;)
- BSS 세그먼트 (Uninitialized): 초기화되지 않은 전역 변수 및 정적 변수가 저장됩니다. 프로그램 시작 시 0으로 초기화됩니다. (예: int b;)
- 특징: 프로그램 시작 시 할당되며 종료 시 해제됩니다.
3. 메모리 단편화 (Memory Fragmentation)
개념: 메모리가 할당·해제되는 과정에서 총 메모리 공간은 충분하지만, 실제로는 할당할 수 없는 작은 조각들이 생기는 현상입니다.
① 내부 단편화 (Internal Fragmentation)
- 상황: 할당된 메모리 블록이 요청한 크기보다 클 때 발생합니다.
- 결과: 할당된 블록 내부에 남는 공간이 생겨 낭비됩니다.
② 외부 단편화 (External Fragmentation)
- 상황: 메모리 사이사이에 남은 작은 공간들의 합은 충분하지만, 연속된 공간이 아니라서 큰 프로세스를 할당하지 못하는 상태입니다.
- 해결책: 페이징(Paging), 압축(Compaction), 세그멘테이션(Segmentation).
4. sbrk와 mmap (힙 확장 방식)
메모리 할당자(malloc 등)가 커널로부터 더 많은 메모리를 확보하기 위해 사용하는 시스템 콜입니다.
① sbrk (Set Program Break)
- 방식: 데이터 세그먼트의 끝을 나타내는 ‘program break’ 주소를 위로 올리거나 아래로 내려 힙 공간을 확장·축소합니다.
- 특징: 메모리가 연속적으로 할당되며, 주로 작은 크기의 메모리 할당에 사용됩니다.
② mmap (Memory Map)
- 방식: 특정 파일이나 익명 메모리 공간(Anonymous Memory)을 프로세스의 가상 메모리 주소 공간에 직접 매핑합니다.
- 특징:
- 힙 영역이 아닌 별도의 메모리 매핑 영역에 할당됩니다.
- 주로 큰 크기의 메모리 할당(보통 128KB 이상)에 사용됩니다.
- 메모리를 해제하면 즉시 커널에 반환할 수 있어 단편화 방지에 유리합니다.
💡 요약 비교표
구분 sbrk mmap
| 주요 용도 | 작은 메모리 할당 (연속적) | 큰 메모리 할당 (비연속적/독립적) |
| 작동 방식 | heap의 끝 포인터를 이동 | 가상 메모리에 새 매핑 영역 생성 |
| 장점 | 오버헤드가 적음 | 메모리 반환이 유연함, 공유 메모리 가능 |