Linux的分節單元
80X86微處理器之所以會引進分節功能,是為了鼓勵程式設計人員將其應用程式切割成邏輯上相關的實體。
在Linux上所使用的分頁功能的方式較侷限,事實上分節跟分頁似乎沒有並行的必要,因為兩者都能用來分隔行程的實體位址空間: (分節可以指派不同的線性位址空間給每一個行程,而分頁可以把同一個線性位址空間對映到不同得實體位址空間。)
Linux愛用分頁甚於分節有以下原因
1.當所有行程都使用相同節區暫存器的值時,記憶體管理會比較簡單(也就是在共用同一組線性位址)
2.Linux的設計目標之一就是能夠移植到眾多架構之上,而RISC架構對分節的支援特別少,所以Linux比較喜歡用分頁。
**在Linux 2.6 時 只有在80X86架構需要時,才會使用分節功能。**
Linux GDT
在單處理器系統中,只有一份GDT,但是在多處理器上面,每一個CPU都會有一份GDT。所有的GDT都會儲存在cpu_gdt-table陣列中,然而GDT得位址和大小則儲存在cpu_gdt_descr陣列中。
每一個GDT中都包含了18個節區描述器,以及[null,未使用,保留]等14個。
**安插未使用項目的用意在於,因此可讓常被存取的節區描述器能一起放在硬體快取記憶體中同一條32-byte的快取線(Cache Line)內
每個GDT所包含的18個節區描述器都會指向下列節區
l 核心程式,核心資料,用戶程式,用戶資料等四個節區
留言列表