사전지식
- 프로세스와 메모리
메모리관리 개념
- 메모리에 적재된 프로세스에 대한 관리
: 프로그램이 프로세스가 되어 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
'Computer Science > OS' 카테고리의 다른 글
파일시스템의 종류 (0) | 2021.02.05 |
---|---|
운영체제의 입출력 관리 (0) | 2021.02.05 |
CPU - 제어유닛 (Control Unit) (0) | 2021.02.05 |
CPU - 산술 연산 장치 (ALU)의 구조와 기능 (0) | 2021.02.05 |
CPU의 구조와 명령어 수행 과정 (0) | 2021.02.05 |