Brief description of the "new machine"Here is how the machine starts to looks like:
Data Bus : 16 bits
Address Buss : 24 bits
Main Memory : SRAM up to 16 MB
Virtual Linear Space : From 0 to 2^24 - 1
Paging mechanism : 128Kx16 SRAM Translation Matrix not in Addr Space.
Max symultaneous processes : 32
All-for-One Policy
As stated before, the System commits all Linear address space to each application running at a given time. User applications are linked to produce Linear Addresses relative to the beginning of the designated code block, starting with address cero. Maximun address is 2^24 - 1.
Linear Address and Paging
A Linear address is 24 bits wide. It is broken into two 12 bits fields: PAGE and OFFSET.
Physical memory is broken into 4 KB blocks of contiguous addresses called "Page Frames". The page frame constitutes the memory allocation unit.
Each page frame is described (and translated) by the corresponding entry (or "Frame") in the Trans Table, as illustrated bellow.
Each process processes its own Trans Table. System Software (OS) is responsible for keeping them updated at boot-up and run-time.
Multi-dimensional Trans Matrix
Trans Tables are not in Main memory but in a separate circuit called "Trans Matrix" (or simply "Matrix") which is 16 bits wide and 128K rows deep regardless the amount of physical memory installed in the machine.
The Matrix is said to be "multi-dimensional" because it contains the Trans Tables for all 32 allowed processes. This way, each process runs in its own "dimension" of the Linear space. The OS distributes physical memory among processes dynamically by filling in the Matrix.
The following diagram illustrates how it works.
( + ) and (REG * 4096) circles are shown for illustrative purposes only. In practice REG will simply contribute the most significant bits to the Matrix row decoder whereas the PAGE field of the Linear address will contribute the least significant ones. Same for: PAGE FRAME BASE ADDRESS + OFFSET = PHYSICAL ADDRESS.
Super-Linear space
Unlike user processes, that always work in Linear space (within its own "dimension"), Kernel code needs access to all processes memory meaning that it needs access to the whole Trans Matrix.
With this purpose, we define a "Super-Linear Space" that ranges from cero to the size of the Trans Matrix times the size of a page frame.
Using the limits we have established, the size of the Super-Linear Space can be calculated like this:
SL_Size = (Page_Frame) (Trans_Table_Entries_per_Process) (Max_Processes)
= (4KB) (4096) (32)
= (2^12) (2^12) (2^5)
= 2^29
= 512 M
The following diagram illustrates the relationship between Linear and Super-Linear address.
|