Computer Science/운영체제
8강) 메모리 관리 (Memory Management)
열심히 사는 우진
2023. 1. 31. 21:33
반응형
** KOCW에서 반효경 교수님의 운영체제(2014년) 강의를 수강한 내용을 정리한 글입니다.
Address 종류
- Logical address (= Virtual address)
- 프로세스마다 독립적으로 가지는 주소 공간
- 각 프로세스마다 0번지부터 시작
- CPU가 보는 주소
- Physical address
- 메모리에 실제 올라가는 위치
- 주소 바인딩 : 주소를 결정하는 것
- Symbolic Address → Logical Address —(T)—> Physical address
- Symbolic Address? → 프로그래머 입장에서 사용하는 숫자가 아닌 변수, 함수 등
- T가 언제인가?
- Symbolic Address → Logical Address —(T)—> Physical address
주소 바인딩 (Address Binding)
- Complie time binding → 비효율적, 요즘은 잘 쓰지 않음 (프로그램을 하나만 실행하던 예전에만 사용)
- Load time binding → 실행 시 메모리 주소 결정
- Run time binding → Load time binding처럼 실행 시 주소 결정 → 실행 도중 바뀔 수 있음
Memory Management Unit (MMU)
- MMU : Logical address를 Physical address로 매핑해주는 Hardware device
- MMU scheme : CPU에서 수행되는 모든 주소값에 base register(=relocation register) 값을 더한다.
- User program은 logical address만 다루고, physical address를 볼 수 없고 알 필요도 없다.
- Limit register는 보안 문제도 해결 → 다른 프로그램 주소 요청은 에러
용어 설명
- Dynamic Loading
- Loding : 메모리로 올리는 것
- 프로세스 전체를 메모리에 미리 다 올리는 것이 아니라, 불려지는 루틴에 대해서만 메모리에 load
- 대개 프로그램 자체에서 구현 (라이브러리 활용)
- Dynamic Linking
- Linking을 실행 시간까지 미루는 기법
- Static Linking
- 라이브러리가 프로그램의 실행 파일 코드에 포함됨 → 실행 파일의 크기가 커짐
- 동일 라이브러리를 각각의 프로세스가 메모리에 올려 메모리 낭비 (eg. printf 함수의 라이브러리 코드)
- Dynamic Linking
- 라이브러리가 실행 시 연결됨
- 라이브러리 호출 부분에 라이브러리 루틴의 위치를 찾기 위한 stub이라는 작은 코드를 둠
- 라이브러리가 이미 메모리에 있으면 그 루틴의 주소로, 없으면 디스크에서 읽어옴
- 운영체제의 도움이 필요
- Overlays
- 프로그래머가 수작업으로 구현
- 프로세스에서 실제 필요한 정보만 Loading
- Swapping
- 프로세스를 일시적으로 메모리에서 Backing store(=swap area)로 쫓아내는 것
- Backing store : 디스크
Allocation of Physical Memory
Contiguous allocation
- 전체를 밀기 보다는, 최소한의 이동만으로 적당히 큰 hole을 만드는 것도 방법일 수 있음
- 현대 운영체제에서 사용하는 방식은 Noncontiguous allocation
Paging
- Page의 주소는 바뀌지만, Page 내부에서 할당된 상대적 주소는 바뀌지 않는다.
- TLB : 자주 사용되는 Page table의 내용을 가지고 있는 Cache의 일종
- TLB(Associative register) 사용을 안했다면 → Memory cycle time x 2 = 2 였을 것
- 입실론은 알파에 비해 매우 작은 값이라, 실제 주소 접근 시간은 많이 감소한다.
Two-Level Page Table
- 시간, 공간적 손해이지만, 사용되지 않는 주소 공간에 대한 Outer page table의 엔트리 값이 NULL이므로, Outer page table은 전체 길이에 대해 생기지만, Inner page table이 상당 부분 생성되지 않아 메모리 효율이 좋다!
Memory Protection
Inverted Page Table
Shared Page
Segmentation
- Paging에서는 보안이 쉽지 않았음
메모리 관리에서 운영체제의 역할은?
- 대부분의 내용은 주소 변환 → OS의 역할은 없음, 모두 하드웨어가 해줘야 할 일
- 주소 변환할 때마다 OS가 개입한다면 비효율적
다음 강의에서 배울 가상 메모리에서는 운영체제의 역할이 확실히 있다!
반응형