Linux Kernel資料

 

中斷向量表和中斷描述符表IDT

http://blog.csdn.net/yxc135/article/details/8734452

點擊打開鏈接

    該篇文章主要介紹中斷向量表和中斷描述符表的區別和形成,摘錄了幾句(這幾句可是解決了我好長時間的困惑),如下:

    (一)、當80x86微機啓動時,ROM BIOS中的程序會在物理內存開始地址0x0000:0x0000處初始化並設置中斷向量表而各中斷的默認中斷服務程序則在BIOS中給出。

    (二)、對於Linux系統,除了在剛開始加載內核時需要用到BIOS提供的顯示和磁盤讀操作中斷功能(在閱讀Linux內核源碼時,發現(bootsect.s,setup.s,head.s)這三個彙編程序最終會將內存中0x0000:0x0000地址之後的一片內存區域覆蓋掉,當時感覺怎麼會這樣,因爲在0x0000:0x0000之後的1024個字節內都是中斷向量表,覆蓋了之後,Linux系統該如何調用中斷服務程序了,當時就很困惑,之後,自己查了些資料,感覺找這個原因就像是大海撈針一般,之後想明白了,原來是Linux內核又重新寫了相應的中斷,不用BIOS裏的中斷服務程序了在內核正常運行之前則會在setup.s程序中重新初始化8259A芯片並且在head.s程序中重新設置一張中斷向量表(中斷描述符表)。完全拋棄了BIOS所提供的中斷服務功能。

    (三)、IDT表可以駐留在線性地址空間的任何地方,處理器使用IDTR寄存器來定位IDT表的位置。

    (四)、個人感覺:中斷向量表和中斷描述符表都是用來查詢中段服務程序的入口地址的,所以說從功能上來說都是一樣的,只不過是中斷向量表是在實模式下的名字,而中斷描述符表是32位保護模式下的名字。

 

中斷描述符表

http://book.51cto.com/art/200812/103255.htm

點擊打開鏈接

    該篇文章主要介紹中斷描述符表和IDTR寄存器的關係(通過IDTR寄存器中的IDT基地址[32位]IDT限長[16位]來分析)

 

Linux內核中斷內幕

https://www.ibm.com/developerworks/cn/linux/l-cn-linuxkernelint/#toggle

點擊打開鏈接

    本篇文章中從兩類中斷控制器(8259A、APIC)的角度來分析中斷,不過就是文章後面的部分領會不了。

 

Linux 彙編語言開發指南

http://www.ibm.com/developerworks/cn/linux/l-assembly/

點擊打開鏈接

 

Linux 中 x86 的內聯彙編

http://www.ibm.com/developerworks/cn/linux/sdk/assemble/inline/index.html

點擊打開鏈接

 

Linux System Call Table

http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html#size_t

點擊打開鏈接

 

DOS System Call Table

http://blog.csdn.net/xiaominthere/article/details/17190685

點擊打開鏈接 


郭大俠的博客(關於BIOS)

http://guoshaoguang.com/blog/tag/bios/

點擊打開鏈接


A20地址線

http://chuanwang66.iteye.com/blog/1069889

點擊打開鏈接


對A20 GATE的思考

點擊打開鏈接

 

 Linux fork()函數詳解

http://blog.csdn.net/jason314/article/details/5640969

點擊打開鏈接

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章