728x90
반응형
출처 : https://www.youtube.com/watch?v=YCfP9I4K-8Y&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=27
Virtual Storage (Memory)
- Non-continuous allocation = 프로세스를 여러 개로 분할해서 메모리에 연속되지 않게 적재하는 memory allocation 기법
- 사용자 프로그램을 여러 개의 block으로 분할
- 실행 시, 필요한 block들만 메모리에 적재
- 나머지 block들은 swap device(=하드 디스크)에 존재
- 기법들
- Paging system
- Segmentation system
- Hybrid paging / segmentation system
Address Mapping
- Continuous allocation
- Relative address (상대 주소)
- 프로그램의 시작 주소를 0으로 가정한 주소
- Relocation (재배치)
- 메모리 할당 후, 할당된 주소 (allocation address)에 따라 상대 주소들을 조정하는 작업
- Relative address (상대 주소)
우리가 continuous allocation에서는 시작 주소가 0번이라고 가정하고 실제 메모리의 물리 주소를 업데이트 한 뒤에, 그 물리 주소 만큼 프로그램 코드들을 업데이트해서 메모리에 적재했다.
- Non-continuous allocation
- Virtual address (가상 주소) = relative address
- Logical address (논리 주소)
- 연속된 메모리 할당을 가정한 주소
- 우리가 실제로 메모리에 적재할 때는 나누어서 적재를 하지만, 연속되어있다고 가정하고 프로그램을 작성하는 것
- Real address (실제 주소) = absolute (physical)
- 실제 메모리에 적재된 주소
- Address mapping
- Virtual address -> real address. Virtual address를 real address로 바꾸어주는 것
- Virtual address (가상 주소) = relative address
- Non-continuous allocation
- 사용자 / 프로세스는 실행 프로그램 전체가 메모리에 연속적으로 적재되었다고 가정하고 실행할 수 있음
- Virtual address 상에 원하는 주소를 지정해서 access 한다.
- 실제로 적재되어있는 메모리 주소는 달라지므로 address mapping을 통해 virtual address를 real address로 바꿔준다.
Block Mapping
- 사용자 프로그램을 block 단위로 분할 / 관리
- 각 block에 대한 address mapping 정보 유지
- Virtual address : v = (b, d). virtual address는 b와 d로 구성되어있다.
- b = block number. 우리가 원하는 데이터가 있는 블록의 번호
- d = displacement(offset) in a block. 시작 주소로부터 얼마만큼 떨어져있는가
- Block map table(BMT)
- Address mapping 정보 관리
- 커널 공간에 프로세스마다 하나의 BMT를 가짐
- block의 번호
- residence bit
- 해당 블록이 실제로 메모리에 적재되었는지 여부 (0 : 적재 안됨 / 1 : 적재 됨)
- 전체 프로세스는 swap device에 있고, 이 중에 일부가 메모리에 올라가고, 나머지는 아직 메모리에 올라와있지 않다.
- real address
- residence bit가 1이라면 (메모리에 적재되어있다면), 어느 주소에 적재되어있는가
- Address mapping 정보 관리
Virtual address V는 b와 d로 이루어져있다. 우리가 어떤 데이터가 필요하면 V를 요청하게 된다.
요청받으면 BMT에 가서 block b의 residence bit를 확인하고, 1이라면 어디에 올라와있는지를 알 수 있다.
그리고 real address a와 displacement d를 더한 r (=a + d)를 찾아갈 수 있다.
정리하자면, Virtual address를 통해 요청이 들어왔을 때 Block Mapping 은 다음과 같은 단계를 거치게 된다.
- 프로세스의 BMT 접근
- BMT에서 block b에 대한 항목(entry)를 찾음
- Residence bit 검사
- Residence bit = 0 인 경우, swap device에서 해당 블록을 메모리로 가져 온다. BMT 업데이트 후 3-2 단계를 수행한다.
- Residence bit = 1인 경우, BMT에서 b에 대한 real address 값 a 를 확인한다.
- 실제 주소 r 을 계산한다. (r = a + d)
- r을 이용하여 메모리에 접근한다.
다음 장에서는 실제로 Virtual address system을 사용하는 Paging system을 알아본다.
728x90
반응형
'Study > 운영체제' 카테고리의 다른 글
운영체제 9. 가상 메모리 (3) - paging system (2) (0) | 2023.11.30 |
---|---|
운영체제 9. 가상 메모리 (2) - Paging system (0) | 2023.11.29 |
운영체제 8. 메모리(주 기억장치) 관리 (3) - Variable Partition Multi-programming (2) | 2023.11.27 |
운영체제 8. 메모리(주 기억장치) 관리 (2)- Fixed Partition Multiprogramming (0) | 2023.11.25 |
운영체제 8. 메모리(주 기억장치) 관리 (1) - Backgrounds (0) | 2023.11.25 |