본문 바로가기
Computer Science/운영체제

[운영체제] ep6) Memory Management

by 클레어몬트 2024. 7. 2.

7단원은 8단원 VM(Virtual Memory)를 위한 빌드업이라 생각하면 된다

메모리 관리에 있어서 중요한 요점 3가지

- Relocation: 기준이 1000번지면 모든 주소에 1000을 더해 Relocation이 필요하다

[Relative Address + Base Resister -> Physical Address]

- Protection: 무슨 일이 있어도 프로그램을 실행할 때는 이 프로그램이 자기에게 할당된 메모리 영역 외에는 Access 하면 안 된다

- Sharing

 

 

 

 

메모리를 관리하는(나누는) 방법 2가지

1. Fixed Partitioning

- Equal-size partitions

- Unequal-size partitions

 

 

2. Dynamic Partitioning

External fragmentation problem: 메모리 프로그램 외부 사이사이에 남는 공간이 생기는 현상 e.g. 프로그램이 100개면 대략 100개

- compaction(프로그램들을 다 위로 붙이는 것)을 이용해 해결할 수 있다

 

 

 

 

 

Dynamic Partitioning Placement Algorithm: fit을 찾는 알고리즘

매번 compaction을 하는데 시간이 너무 오래 걸려서 나온 알고리즘이다

 

Best-fit: 공간을 모두 탐색하고 찾은 Best-fit (시간이 오래 걸린다)

First-fit: 최상단을 기점으로 탐색해 찾은 첫 first-fit

Next-fit: 마지막 할당받은 블럭을 기점으로 탐색해 찾은 첫 Next-fit

Worst-fit: 공간을 모두 탐색하고 찾은 Worst-fit = 가장 큰 공간을 찾겠다는 의미 (시간이 오래 걸린다)

 

(First-fit과 Next-fit은 남는 공간들이 다 Linked-list로 연결되어 있다)

16MByte 블럭을 할당하는 상황

 

 

 

ㅇBuddy System: 정해진 규칙의 크기를 동적으로 할당한다

fixed partitioning + dynamic partitioning

Buddy: 친구, 짝

 

 

 

공간을 다시 합치는 건 Buddy끼리만 가능하다

 

 

 

 

 

ㅁ3가지 주소 개념

Logical address(논리 주소): 연속적일 필요 x

Relative address(상대 주소): 연속적인 주소

Physical address / absolute address(물리적 주소 / 절대 주소): 실제 메모리 주소

 

Relocation: Relative Address + Base Resister -> Physical Address

Relative address를 Physical address로 변환하는 방법

 

(참고)

변위: EA = A + (R)

베이스-레지스터 주소 지정 방식

https://claremont.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B5%AC%EC%A1%B0-ep4-CPU%EC%99%80-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8

 

[컴퓨터 구조] ep4) CPU와 인터럽트

컴퓨터의 두뇌 CPU == 프로세서 에 대해서 자세히 알아보자 CPU(Central Processing Unit) = ALU + 제어장치 + 레지스터 ㅇALU(Arithmetic Logic Unit) 산술연산장치 ALU는 플래그를 내보낸다 아래의 표를 보자 이 플

claremont.tistory.com

 

 

 

 

 

기술이 발달하면서 이전과 같이 프로그램을 연속된 공간에 할당하지 않는 방법이 있다!

프로그램을 잘라서 메모리에 적재하는 방식인데 크게 페이징(Paging) 기법과 세그멘테이션(Segmentation) 기법이 있다

ㅇ페이징(Paging): 내용 상관없이 모두 동일한 크기로 짜름 - 관리 easy

 

 

(페이징 과정)

 

 

프로세스 하나마다 Page Table을 이용한다

페이지 번호와 offset을 이용하는 논리 주소를 사용한다

 

 

ㅇPage Table Entry(PTE): 페이지 테이블 각각의 행을 의미한다

 

 

ㅇPage Fault: 프로세스가 실행 중 필요한 페이지가 메모리에 없는 경우 발생하는 이벤트

 

 

 

 

 

 

ㅇ세그멘테이션(Segmentation): 관련이 있는 함수를 고려해 짜름 - 관리 hard

- 최대 세그먼트 길이가 존재

- 세그먼트 번호와 offset을 이용하는 논리 주소를 사용한다

- Dynamic partitioning과 유사하다

 

 

 

각각의 논리 주소 비교

1K는 1000이 아닌 1024인 것을 유념

 

 

페이징(Paging)

Relocation: Logical Address + Base Resister -> Physical Address

 

 

 

세그멘테이션(Segmentation)

Relocation: Logical Address + Base Resister -> Physical Address

 

 

 

 

 

 

 

 

 

 

 

참고 및 출처: Operating Systems: Internals and Design Principles(William Stalling), Operating System Concepts(Silberschatz, Abraham), 혼공컴운(강민철)