Non continuous allocation
- 사용자 프로그램을 여러 개의 block으로 분할함.
- 실행시에 필요한 block들만 메모리에 적재함 (나머지 block들은 swap device에 존재함)
Non continuous allocation 기법들
- Paging system
- Segmentation system
- Hybrid paging/segmentation system
Address mapping
메모리 할당을 하게 되면 address mapping을 하게 됨.
continuous allocation에서의 Address Mapping
Relative address (상대 주소) :프로그램의 시작 주소를 0으로 가정한 주소
Relocation (재배치): 메모리 할당된 후, 할당된 주소에 따라 상대 주소들을 조정하는 작업
0부터시작한다고 가정하고 컴파일러가 프로그램을 만들면, 시작점이 400일때 적대된 위치에 맞추어 주소를 수정한다.
=> address mapping
Non continuous allocation에서의 Address Mapping
- Virtual address (가상주소) = relative address
- 연속된 메모리를 할당을 가정한 주소
- Real address(실제주소) = absolute(physical)
- 실제 메모리에 적재된 주소
Address Mapping : virtual address-> real address
- 메모리 공간은 연속된 공간이라고 가정한다.
- 내가 원하는 것이 있으면 vitrual address로 요청함.
- 실제로 메모리가 올라간 위치는 다름
- 누군가가 real address로 바꿔줘야 함.
- 이 과정을 Addr Mapping이라고 한다.
Block mapping
- 사용자 프로그램은 block단위로 분할/관리 (각 block에 대한 address mapping정보 유지)
- 실제 address로 어떻게 매칭하는지..
Virtual address : v =(b,d)
- b=블록의 번호
- d = displacement (offset) in a block (시작점으로부터 얼마나 떨어져 있는가)
실제로 이런 정보들이 어떻게 관리되고 있을까? => block map table
Block map table (BMT)
- Address Mapping 정보 관리
- 커널 공간에 프로세스마다 하나의 BMT를 가짐
block number(블록번호), residence bit(실제로 메모리에 올라갔는지 확인), real address(실제 메모리 저장 주소)
BMT를 이용해서 어떻게 주소를 찾아가는지 알아보자.
Block Mapping 과정
- 일단 block을 찾아가기 위해 BMT에 가서 메모리에 올라가 있는지 찾는다.
- 올라가 있다면 어느 메모리 시작점 주소로 올라가 있는지 알 수 있다.
- 시작점으로부터 d만큼 떨어진 거리를 더하면 실제로 원하는 real address를 찾을 수 있다.
Block Mapping 과정 정리
- 프로세스의 BMT접근
- BMT에서 block에 대한 항목(entry)를 찾는다
- Residence bit검사
- Residence bit = 0 경우, swap device에서 해당 블록을 메모리로 가져옴 BMT업데이트 후 3-2 수행
- Residence bit = 1 경우, BMT에서 b에 대한 real address 값 a확인
- 실제 주소 r 계산 (r=a+d)
- r을 이용하여 메모리에 접근
본 포스트는 KOREATECH의 HPC LAB. Duksu Kim 교수님 OS강의를 기반으로 정리한 내용입니다.
상업적 의도가 아닌 공부한 것을 정리해 놓은 목적으로 게시한 포스트입니다.
아래의 출처에서 자세한 내용을 수강하실 수 있습니다.
https://www.youtube.com/playlist?list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN
'CS > OS' 카테고리의 다른 글
[OS] 9. Virtual Memory - Segmentation System (0) | 2022.04.19 |
---|---|
[OS] 9. Virtual Memory - Paging system (0) | 2022.04.17 |
[OS] 8. 메모리 관리 - Variable Partition Multi-programming (0) | 2022.04.13 |
[OS] 8. 메모리 관리 - Fixed Partition Multi-programming (0) | 2022.04.11 |
[OS] 8. 메모리 관리 - Backgrounds, address binding (0) | 2022.04.10 |