<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 addresspage# (page number)offset으로 이루어져 있다.

 
 

<Paging Table>★★★★★★★

process마다 하나씩 만들어지기에 PCB에 저장된다.

 

 
 
 

<Virtual Memory>: disk같은 보조기억장치에 가상메모리를 생성, 실행필요부분만 main memory에서 실행

메인+보조로 마치 메모리가 늘어난 것처럼 사용해 실행대상의 ready상태 process가 많아져 better throughput의 장점이 있다.

processmain memory크기에 구애받지 않고 실행가능한데 이를 portability라 한다.

Real memory = main memory // real address = physical address = absolute address

Virtual memory = secondary storage(disk) // logical address = virtual address

 

<Program의 실행과정>

OSprocess일부를 메모리로 가져옴 (resident set: process main memory에 있는 부분)

CPU에 의해 interrupt가 발생 (software interrupt , trappage fault 발생)

OSprocessblock state(, 중단(kill)은 되지 않음)로 만들어버림.

OScontext switch로 다른 process를 실행함

disk I/O로 장치에의한 interrupt가 발생하면 3번 상태가 Ready state로 바뀜

 

<Localityprinciple>

program실행시 특정부분을 반복실행(for, while)하는데 특정부분을 메인메모리로 가져와

반복실행, access하고 한동안 main memory에 남겨두는데, 이때 가상메모리방법으로 main disk가 많이 발생하지 않게되어 page fault interrupt 발생이 하지 않게 됨

cf. turn around time: process가 시작~끝까지 걸리는 시간

 

<Demand Paging>

virtual memory를 구현하기 위해 2가지 방법이 있는데, paging을 이용한 demand pagingsegmentation을 이용한 demand segmentation방법이 있다.

paging방법에 기반한 demand pagingpage table을 이용해 logical(virtual) addressphysical addressmap(translate)하는 것이다.

 

<Address Translation in Demand Paging>

page table의 시작주소는 main memoryPCB에 저장되는데 이를 가져오기엔 시간이 오래걸린다.

- context switch 발생 시, CPU에 있는 page table base registerpage table 시작주소를 저장한다.

 

<Page Table Entry>: page table의 한 칸을 Entry라 한다.

cf. modify bitpage 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

+ Recent posts