Designs
Birds View - Which memories are being dealt?
stateDiagram [*] --> RAM [*] --> Dedicated_I/O_region [*] --> Hard_Disk
Abstraction of the RAM
Heap Abstraction
The Heap has been divided into 2 sections.
A part dedicated for the Kernel heap allocations and a part dedicated for loading user programs
Each user program can grow their heap.
Paging
The Page Manager uses descriptors to keep track of allocated and free pages.
The Page manager can help you allocate or deallocate a cotiguous group of pages. Each Page is 4096 bytes large.
Memory initialization is the process of demarcating the heap into balnced Descriptors and Pages.
Descriptor Ordering
Wrong orders
Paging Process
graph LR page_request --> allocation subgraph allocation start -->|Request x amount of pages| Desciptor_scanner Desciptor_scanner -->|looks for x contiguous empty descriptors| C1{did it find a block?} C1 -->|Yes| Populator C1 -->|No| Return_exception Populator -->|updates the descriptors| Success Success -->|Returns the address of the first Page| End end
Byte allocation
Byte allocation happens within the Page. A linked List is used to keep track of which bytes have been allocated