public class Rand49 {
private int[][] num49;
private int[] Rand6=new int[6];
Linux採用了一種共同的分頁模型,可適用於32位元和64位元架構。
因為32位元架構有兩層分頁就夠了,但64位元架構需要較多酚頁層。所以到2.6.10版時,Linux採用了三層分頁模型。到2.6.11版起,Linux採用了四層分頁模型。
l 頁面全域目錄(Page Global Directory)
l 頁面上層目錄(Page Upper Directory)
分頁單元會把線性位址轉譯成實體位址。分頁單元的關鍵任務之一是檢查被請求的存取類型是否合於線性位址的存取權限。如果記憶體位存取並非有效,分頁單元就會產生一個[頁面失誤例外事件](Page Falut Exception)
為了效率起見,線性位址以長度固定的間隔被切割成眾多頁面(Page)
80X86微處理器之所以會引進分節功能,是為了鼓勵程式設計人員將其應用程式切割成邏輯上相關的實體。
在Linux上所使用的分頁功能的方式較侷限,事實上分節跟分頁似乎沒有並行的必要,因為兩者都能用來分隔行程的實體位址空間: (分節可以指派不同的線性位址空間給每一個行程,而分頁可以把同一個線性位址空間對映到不同得實體位址空間。)
Linux愛用分頁甚於分節有以下原因
- 邏輯位置(Logical Address)
- 邏輯位置屬於機械語言指令的一部分,可用來指定一個運算元(Operand)或是一個指令(Instruction)的位置。
- 這種位置採用80X86的分節式架構(Segmented Architecture),迫使M$ Windows的程式設計員必須將他們的程式切成許多Segment(節區)。
- 每一個邏輯位置由一個Segment和一個Offset(偏移量) 或是 Displacement(位移量) 組成 ; 而Offset 指出了節區起始處到實際位置之間的距離。
- 線性位置
- 由一個32位元的無號數(unsigned)整數定址 可定址到4GB的記憶單元(4,294,967,296) 。
- 線性位址通常以十六進位制(Hexadecimal)的符號來表示。
- 其範圍0x00000000~0xffffffff。