Week 9: Address Translation

Week 9: Address Translation

Page fault, Segmentation fault, Null pointer exception

 

•What can you do if you can (selectively) gain control whenever a program reads or writes a particular memory location?
–With hardware support
–With compiler-level support
이건 뭔말이지

 

Physical address를 HDD뿐만 아니라 Network들 여러 곳으로 확장할 수 있다.

 

Implementing Virtual Memory:

Strategy Description
Base and Bounds Not fully virtual. Can not grow stack/heap as needed.
그리고 다른 method들은 protection또한 제공하지만 얘는 그렇지 않다.
virtual address : [ Offset under the bound ]
physical address : [ base + offset ]
Segmentation Multiple Base and Bounds.
memory allocation을 위해서는 적절한 allocation 위치를 찾는 작업이 필요하고 External fragment를 해결하기 위하여 주기적으로 garbage collecting을 할 필요가 있다.
virtual address : [ Segment number | Offset in the segment ]
physical address : [ getSegmentBase( Segment number ) + offset ]

Advanced feature:
Access permission기능도 추가할 수 있다.
Copy-On-Write: fork()를 하였을 때 parent의 모든 memory를 복사하여 child를 만드는 것이 아니라 child가 특정 segment에 wirte하려고 할 때 그제서야 그 segment를 복사하는 것.
Zero-On-Reference: 한 process가 남겨둔 정보를 다른 process에게 보여주지 않기 위하여 Kernel은  memory를 process에게 할당해 주기 전에 zero로 reset하여야 한다.
Paging Uniform-sized segmentation. All advanced features of segmentation can be applied to this.
Page size가 너무 작으면 page table의 entry가 너무 많아지고 너무 크면 internal fragmentation이 늘어난다.
virtual address : [ Page number | Offset in the segment ]
physical address : [ getPageAddress( Page number ) + offset ]

Process context switch에 save/restore되어야 할 것:
Pointer to page table/size of page table
Page table itself is in main memory.

 

Demand paging: 정말 필요할 때 까지 일을 안한다. -> Program이 해당 코드 부분을 참조할 때 까지 그 부분의 page를 disk로부터 읽어들이지 않는다.

 

Sparse Address Space

Multi-level Translation

Inverted Page table

 

Leave a Reply