<Address Binding> = Address translation = instruction이나 data주소를 알아내는 것
instruction의 내부는 모두 logical address이다. (399~402p)
Compile time: 컴파일러 logical address 생성시, physical과 동일하게 주소를 넣어주는 것
Load time: process를 메모리에 넣어줄 때(load 시) physical address로 바꾸는 것
Execution time: compile, load 시에는 그대로 logical이지만, instruction 실행시 physical address를 알아내는 것
<Relocation>
swapping이나 compaction을 이용해 절대적 메모리 공간을 차지하게 하는 것
compile, load binding 시에는 process code 내 physical address가 나오면 안됨
execution binding 시에는 process code 내 physical address가 바뀌어도 괜찮음
<Addresses>
<Paging>: external fragment를 사용할 수 없을까?에서 착안된 방식
page: process의 전체공간을 작은 크기의 메모리 조각으로 나누는 것
(page) frame: memory를 나눈 것으로 frame 안의 process조각을 page라 하는 것
logical address는 page# (page number)과 offset으로 이루어져 있다.
<Paging Table>★★★★★★★
process마다 하나씩 만들어지기에 PCB에 저장된다.
<Virtual Memory>: disk같은 보조기억장치에 가상메모리를 생성, 실행필요부분만 main memory에서 실행
메인+보조로 마치 메모리가 늘어난 것처럼 사용해 실행대상의 ready상태 process가 많아져 better throughput의 장점이 있다.
process가 main memory크기에 구애받지 않고 실행가능한데 이를 portability라 한다.
Real memory = main memory // real address = physical address = absolute address
Virtual memory = secondary storage(disk) // logical address = virtual address
<Program의 실행과정>
OS가 process일부를 메모리로 가져옴 (resident set: process 中 main memory에 있는 부분)
CPU에 의해 interrupt가 발생 (software interrupt 즉, trap중 page fault 발생)
OS가 process가 block state(단, 중단(kill)은 되지 않음)로 만들어버림.
OS가 context switch로 다른 process를 실행함
disk I/O로 장치에의한 interrupt가 발생하면 3번 상태가 Ready state로 바뀜
<Locality의 principle>
program실행시 특정부분을 반복실행(for, while)하는데 특정부분을 메인메모리로 가져와
반복실행, access하고 한동안 main memory에 남겨두는데, 이때 가상메모리방법으로 main ⇋ disk가 많이 발생하지 않게되어 page fault interrupt 발생이 하지 않게 됨
cf. turn around time: process가 시작~끝까지 걸리는 시간
<Demand Paging>
virtual memory를 구현하기 위해 2가지 방법이 있는데, paging을 이용한 demand paging과 segmentation을 이용한 demand segmentation방법이 있다.
paging방법에 기반한 demand paging은 page table을 이용해 logical(virtual) address를 physical address로 map(translate)하는 것이다.
<Address Translation in Demand Paging>
page table의 시작주소는 main memory의 PCB에 저장되는데 이를 가져오기엔 시간이 오래걸린다.
- context switch 발생 시, CPU에 있는 page table base register에 page table 시작주소를 저장한다.
<Page Table Entry>: page table의 한 칸을 Entry라 한다.
cf. modify bit의 page table: 빈공간이 없을 때, 메모리에서 빼서 보조기억장치로 write해야하는데,
만약 변경내용이 달라지지 않아서 disk write를 하고싶지 않다면?
=> 시간의 절약을 위해 변경의 유무를 modify bit에 표시해 disk write를 안해도 되는 page를 구분.
<Sharing of Pages>
shared memory와는 다른데,
shared memory는 사람이 필요에 의해 OS에 요청하는 것이지만
Sharing page의 경우 OS의 메모리관리기능이 알아서 해주는 것이다.
'Computer System > 운영체제' 카테고리의 다른 글
this->OS.code(14) (0) | 2022.12.21 |
---|---|
this->OS.code(13) (0) | 2022.12.21 |
this->OS.code(11) (2) | 2022.12.21 |
this->OS.code(10) (0) | 2022.12.21 |
this->OS.code(9) (0) | 2022.12.21 |