운영체제의 메모리 관리
사전지식
- 프로세스와 메모리
프로세스와 메모리
프로세스와 메모리 주 기억장치 (메모리) - RAM (Random-Access-Memory) : 전력 공급이 끊길 경우 데이터가 소거되는 휘발성 메모리 - ROM (Read-Only-Memory) : 메모리 내의 데이터에 대해 읽기만 가능한 비휘발
2mukee.tistory.com
메모리관리 개념
- 메모리에 적재된 프로세스에 대한 관리
: 프로그램이 프로세스가 되어 CPU에 적재되기 전, 프로세스를 메모리에 적재하는 과정이 필요하기 때문
- 메모리 관리 정책의 종류
: 적재 정책 = 디스크에서 메모리로의 프로세스 적재에 대한 관리
: 배치 정책 = 프로세스의 적재 위치에 대한 관리
: 대치 정책 = 메모리가 충분하지 않을때 제거할 프로세스 결정 방법
메모리 주소의 종루
- 논리적 주소 (가상주소)
: CPU가 생성한 가상 주소로 프로세스마다 독립적으로 가지는 주소 공간 (0X123456)
: 프로그램에서 사용하는 배열, 구조체 등이 저장
- 물리적 주소 (실제주소)
: 메모리가 취급하는 주소 (메모리주소 레지스터(MAR)에 저장되는 주소)
=> 논리적 주소와 물리적 주소의 변환은 MMU에서 담당
MMU (Memory Management Unit)
- 논리적 주소를 물리적 주소로 매핑해주는 Hard Ware
- Relocation Register
: 접근할 수 있는 물리적 메모리의 최소값
- Limit Register
: 논리적 주소가 존재할 수 있는 범위 (오류방지를 위함)
주소할당 (Address Binding)
- 변수와 함수 등의 데이터를 실제 메모리 주소에 할당하는 것
: 프로그램이 메모리 어느 부분에 적재될지 결정
: 논리적 주소에서 물리적 주소로의 바인딩
- 컴파일 시간 바인딩 (Compile Time Binding)
: 컴파일이 진행될때 할당
: 한번 결정된 주소는 바뀔 수 없음
: 하나의 프로세스만 존재하는 경우에 사용 (ex) 임베디드)
- 적재 시간 바인딩 (Load Time Binding)
: 프로그램을 메모리에 적재할 때 할당
: 컴파일러가 주소를 재배치할 수 있음
: 멀티프로그래밍이 가능하나, 메모리 로딩시간의 지연 문제 발생
=> 프로그램 코드가 일일이 메모리를 참조해주기 때문
- 실행 시간 바인딩 (Execution Binding / Runtime Binding)
: 프로그램을 실행시킬때 할당
: CPU가 주소를 참조할 때마다 바인딩 상태를 점검해야하는데 이때 MMU를 이용하여 수행
=> CPU에서 논리적 주소로 메모리에 접근할때 MMU에서 물리적 주소로 매핑 수행
Dynamic Loading (동적적재)
- 프로세스 전체를 메모리에 미리 올리지 않고 해당 함수가 불려질때 마다 메모리에 적재 하는 방법
: 운영체제의 지원없이 프로그램 자체에서 구현 가능
Dynamic Linking (동적연결)
- Linking을 실행시간때까지 미루는 방법
- Lingking
: 컴파일 이후 링크를 통해 프로그램을 실행하는 과정
: Link = 흩어진 프로그램 파일을 하나로 묶는 작업
Swapping (스와핑)
- 프로세스를 일시적으로 메모리에서 디스크의 일정영역에 잠시 저장하는 것
- Swap in
: 디스크 -> 메모리
- Swap out
: 메모리 -> 디스크
가상메모리
- 메모리 부족 현상을 방지하기 위해 디스크 공간을 주 기억장치로 활용하는 것
- 운영체제의 메모리 관리
: 프로세스에서 필요한 부분만 메모리로 적재하고
나머지 부분은 디스크에 생성된 가상메모리 영역에 적재
Paging (페이징)
- 프로그램 전체를 연속된 공간에 적재하지 않고 일정 크기의 단위로 나누어서 분산 하여 적재 하는 방법
: 물리메모리를 일정한 크기인 Frame으로 나눈다
: 논리메모리도 같은 크기의 Page로 나눈다
: 프로세스에는 페이지번호와 offset 정보가 포함 되어있음
: CPU에서 프로세스를 실행할때 운영체제의 PageTable을 참조하여 데이터를 로딩
=> 빈공간이 발생하는 단편화 현상 해결
Segmentation (세그먼테이션)
- 프로그램의 주소공간을 논리적 단위로 나누는 방법
: 변수, 함수, 스택, 객체 등 논리적인 단위로 나누어 각 세그멘테이션간의 침범을 방
: 세그먼트에는 세그먼트 테이블을 통해 세그먼트 번호와 오프셋이 지정됨
: 페이지와 달리 세그먼트의 길이가 일정하지 않음
=> 페이징에서 발생할 수 있는 공유, 보안, 접근, 권한 문제 해결
Paged Segmentation
- 세그먼트를 페이지로 나누어 적재
: 세그먼트 기법과 페이징 기법에서 발생하는 문제를 해결
Refference
메모리 관리(Memory Management) 개념 및 설명
메모리 관리 개념 어떤 프로그램이든 프로세스가 되어 프로세서에 적재되기 위해서는 메모리에 적재되어야 실행이 가능하다. 따라서 메모리는 중요한 작업 공간이고 한정된 메모리를 다중 프
www.crocus.co.kr
[운영체제 OS]Address binding 로드타임 바인딩(load time binding), 실행타임(execution time) 바인딩 (run time bi
안녕하세요 여러분 오랜만에 들고 온 운영체제 관련 글입니다. ㅎㅎ [운영체제 OS 완전정복 목차] 저번 시간에는, 1. 물리적 주소란 (physical address) 2. 주소 바인딩이란 (Address binding) 3. 절대 코드란
jhnyang.tistory.com
[OS] 운영체제 9. Memory Management : 논리/물리 주소, MMU(Memory Management Unit)
메모리의 주소를 크게 두가지로 나눌 수 있다 Logical address(=virtual address) - 프로세스마다 독립적으로 가지는 주소 공간 - 각 프로세스마다 0번지부터 시작 - CPU가 보는 주소는 logical address Physical..
developyo.tistory.com
[운영체제] 8장 메모리 관리 전략
* 메모리는 각각 주소가 할당 된 일련의 워드 또는 바이트들로 구성된다. * 주 메모리와 프로세서 자체에 ...
blog.naver.com
8강. 메모리 관리
8강. Memory Management 메모리란? 주소를 통해 접근하는 객체로 Main Memory는 주 기억장치를 의미한다. 주소의 종류 Logical Address(Virtual Address) 프로세스마다 독립적으로 갖는 공간. 0번지부터 시작한다...
marlinbar.tistory.com
[21] 페이징(Paging)과 세그멘테이션(Segmentation)
페이징(Paging)과 세그멘테이션(Segmentation) 메모리 관리와 관련하여 페이징과 세그멘테이션을 수없이 많이 들어 본 것을 보면 분명 중요한 토픽일거라는 생각에 페이징과 세그멘테이션 부분은 따
developerhenrycho.tistory.com