linux0.12核心的記憶體組織和進程結構

來源:互聯網
上載者:User

標籤:style   blog   c   ext   http   a   

進程結構

Linux0.12中的每個進程都有如下的結構:

  1. 在gdt中佔有兩項,一項是tss段描述符,一項是ldt段描述符。

  2. 在task數組中佔有一項,指向一頁實體記憶體,該實體記憶體低端是進程式控制制塊task_struct(裡麵包括tss段和ldt段),其餘部分是進程的核心態堆棧。

  3. 在頁目錄表和頁表中設定有相關項目。

Linux0.12中,最多隻有64個進程,task數組大小也定義成了64,每個進程與一個task數組中的項一一對應。雖然gdt中有256項,但是並不是都用到。第一個gdt項保留不用,核心用2個項,然後系統為每個進程保留2項。這樣一個進程與2個gdt項一一對應。也就是linux0.12中task數組和gdt的分配是定死的,比如一個進程的任務數組項好為nr,即它的進程式控制制塊由task[nr]指向,那麼它的tss描述符和ldt描述符分別位於gdtr+3*8+nr*16和gdtr+3*8+nr*16+8處。

Linux0.12記憶體物理地址0處開始放著一頁頁目錄表和四頁頁表。這一個頁目錄表是所有進程共用的。其後的四頁頁表正好映射16M實體記憶體,是核心和進程0的頁表。以後建立進程時頁表需要從主記憶體區申請,而頁目錄項直接從頁目錄表中取。這樣進程和頁目錄表頁存在這一一對應關係,任務號為nr的進程,對應頁目錄的第nr*16~(nr+1)*16一共16個目錄項。這樣4G的線性空間由64個進程共用,每個進程分到64M。

三個結構的一一對應關係



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.