CS/OS
[Operating System] Memory 부분 정리
Code Song
2023. 12. 9. 17:50
많은 도움을 받은 블로그: Dev_Pingu
Memory Part 정리
Segmentation
- 궁금한 것:
왜 16KB-> 14bits? 2^(4+10): 14Bytes인데.... 1bit로 1Byte를 나타낼 수 있는 건가
Context Switch에서.. 어떻게 구체적으로 저장 및 복원? 그러니까 process가 바뀌면 아예 저장된 지역이 달라지고 한 번에 저장하는게 아니라는건가? 아하 그러니까 Dynamic Relocation에서는 약간 Block처럼 저장을 해서 중간을 못 썼다면 이제는 Stack을 위로 올렸기 때문에 ㄱㄴ하다는 거구나! ok.. 그럼 Reg이 계속 바뀌고 이거는 어케 알 수가 있을까? 아하..
- 가상주소 VA -> PA in Segment 코드
// 상위 2 비트를 가지고 옵니다.
Segment = (VirtualAddress & SEG_MASK) >> SEG_SHIFT
// 하위 12 비트로 offset을 구합니다.
Offset = VirtualAddress & OFFSET_MASK
// Offset이 limit을 넘는지 확인합니다.
if (Offset >= Limit[Segment])
RaiseException(PROTECTION_FAULT)
else
PhysicalAddress = Base[Segment] + Offset
Register = AccessMemory(PhysicalAddress)
Free Space Management
Segment에서 external Fragmentation의 해결방안으로 등장하였다.
Splitting, Coalescing.
??? Embedding a Freelist 이해못함