목표
- 프로그래밍을 할 때 쉽게 메모리를 사용할 수 있도록 abstraction을 제공해주는 것
- minimal overhead로 성능을 최대한 이끌어낼 수 있도록 프로세스들 사이에서 부족한 메모리 자원을 적절히 잘 할당하는 것
- 프로세스들 사이에서 isolation을 제공(Memory Protection)
Step in Creating and Running Code
- "Source file → (Compile) → Object file → (Linker) → Executable file"
- "Executable file → (Loader) → memory"
- Link: HDD에 들어가 있는 다양한 library들을 실행하기 위해 연결해주는 과정
- 하나의 프로그램이 실행되기 위해서는 code, data, stack이 필요
- os는 이 실행파일을 메모리의 어디 부분에 올릴지를 결정 "MMU"
MMU
- Memory Management Unit
- 메모리 공간에서 빈 공간을 찾아 프로그램을 올릴 때 주소를 조절해주는 역할: MMU의 relocation register
메모리 낭비 방지
Dynamic Loading(동적 적재)
- 메모리의 효율성을 위해 필요한 루틴이 호출될 때 해당 루틴을 메모리에 적재하는 방식
- Loading : 메모리로 데이터(.exe / code, data)를 옮기는 것
Dynamic Linking(동적 연결)
- 여러 프로그램에 공통 사용되는 라이브러리를 관리하는 방법
Swapping
- 메모리에 적재되어 있으나 현재 사용되지 않고 있는 프로세스를 관리하는 역할
'Computer Science > Operating System' 카테고리의 다른 글
[개념] Memory Management 3(Paging) (0) | 2021.08.12 |
---|---|
[개념] Memory Management 2 (0) | 2021.08.12 |
[개념] Virtualization (0) | 2021.08.12 |
[개념] IPC (0) | 2021.08.12 |
[개념] I/O Management (0) | 2021.08.12 |