日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

《LINUX内核设计与实现》第五章学习总结

發(fā)布時間:2024/4/17 linux 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《LINUX内核设计与实现》第五章学习总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

一、與內核通信

系統(tǒng)調用:用戶控件進程和硬件設備之間添加了一個中間層

系統(tǒng)調用的三個主要作用:

  • 為用戶空間提供了一種硬件的抽象接口
  • 系統(tǒng)調用保證了系統(tǒng)的穩(wěn)定和安全
  • 每個進程都運行在虛擬系統(tǒng)中,而在用戶控件和系統(tǒng)的其余部分提供這樣一層公共接口
  • 注意:在Linux中,系統(tǒng)調用是用戶控件訪問內核的唯一手段;除異常和陷入外,他們是內核唯一的合法入口。

    ?

    二、APIPOSIXC


    POSIX-Unix世界中最流行的應用編程接口是給予POSIX標準的。
    Linux的系統(tǒng)調用作為C庫的一部分提供。
    C庫實現了Unix系統(tǒng)的主要API,包括標準C庫函數和系統(tǒng)調用接口,即POSIXdM大部分API。

    Unix的接口設計——“提供機制而不是策略”

    ?

    三、系統(tǒng)調用

    (一)要訪問系統(tǒng)調用(syscall),通常通過C庫中定義的函數調用來進行系統(tǒng)調用。

    (二)系統(tǒng)調用通過返回一個long型的返回值來表示成功或者錯誤?,用一個負的返回值來表明錯誤,返回0代表成功。系統(tǒng)調用出現錯誤的時候會把錯誤碼寫入errno全局變量 ,?通過perror()庫函數可以把該變量翻譯成用戶可以理解的錯誤字符串

    (三)定義系統(tǒng)調用:asmlinkage?long?sys_getpid(void) ?(asmlingkage是一個編譯指令,通知編譯器僅從棧中提取該函數的參數。所有的系統(tǒng)調用都需要這個限定詞。 其次, 返回值long。 為了保證32位和64位系統(tǒng)的兼容,系統(tǒng)調用在用戶空間返回值int,內核空間long 。最后,注意系統(tǒng)調用getpid()在內核中被定義成sys_getpid().

    系統(tǒng)調用號:

    每個系統(tǒng)調用號獨一無二,一旦分配就不能再有任何變更。
    執(zhí)行系統(tǒng)調用時,通過系統(tǒng)調用號指明,進程不會提及系統(tǒng)調用的名稱。
    未實現系統(tǒng)調用——sys_ni_syscall(),返回-ENOSYS,針對無用的系統(tǒng)調用。

    系統(tǒng)調用的性能:

    設計原則:簡潔、高效

    原因:

    • 上下文切換時間短
    • 系統(tǒng)調用處理程序和每個系統(tǒng)調用本身都很簡潔

    四、系統(tǒng)調用處理程序

    通知內核的機制是軟中斷:通過引發(fā)一個異常來促使系統(tǒng)切換到內核態(tài)中去執(zhí)行異常處理程序,即系統(tǒng)調用處理程序system_call()。

    中斷號128,指令如下:int?128 或者?int?0x80 退出是iret

    (一)指定恰當的系統(tǒng)調用

    • eax寄存器:將系統(tǒng)調用號傳遞給內核
    • system_call():與NR_syscall比較,檢查有效性
    • call *sys_call_table(,%rax,8):執(zhí)行相應的系統(tǒng)調用

    (二)參數傳遞

    • x86系統(tǒng),ebx,ecx,edx,esi,edi按順序存放前五個參數。
    • 需要6個及以上參數,應用一個單獨的寄存器存放指向這些參數在用戶空間地址的指針。
    • 返回值存放在eax。

    ?

    轉載于:https://www.cnblogs.com/20135223heweiqin/p/5300215.html

    總結

    以上是生活随笔為你收集整理的《LINUX内核设计与实现》第五章学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。