【操作系統(tǒng)】操作系統(tǒng)接口&系統(tǒng)調用的原理

第二課? 操作系統(tǒng)接口

上一章回顧:在操作系統(tǒng)啟動后內存會變?yōu)槿缦碌臉幼樱?/p>

內存初始化之后的大致模樣

操作系統(tǒng)接口的概念:上層應用通過接口來使用操作系統(tǒng)提供的功能使用硬件

用戶如何使用計算機?

1.命令行(主要通過shell敲命令行)

①在操作系統(tǒng)啟動的過程中,執(zhí)行到main.c函數(shù)之后便執(zhí)行啟動shell的命令,此時跳出shell界面

②shell的程序如下圖所示,循環(huán)打印cmd等待輸入命令行,并對其進行執(zhí)行

2.圖形按鈕

采用消息隊列機制:

當硬件有輸入時候,將該輸入添加到系統(tǒng)消息隊列中。

然后應用程序中不斷循環(huán)的從系統(tǒng)消息隊列中獲取消息,對不同的消息調用不同的函數(shù)進行相應的操作。

什么是操作系統(tǒng)接口?


第三課 系統(tǒng)調用的原理

1.為什么要將內存分為內核態(tài)和用戶態(tài)?

出于安全方面的考慮,防止系統(tǒng)root用戶名密碼,重要文檔信息的丟失。

2.如何做到內核態(tài)和用戶態(tài)之間的隔離?

通過特權級的方式實現(xiàn)用戶態(tài)和內核態(tài)之間的隔離,特權級規(guī)則:

DPL:要訪問的目標內核段特權級(內核態(tài)的DPL為0)

CPL:當前特權級

當DPL>=CPL時候,該指令才能被運行。

通過該方式進而實現(xiàn)用戶態(tài)只能訪問用戶態(tài)而不能訪問內核態(tài);而內核態(tài)可以訪問任何數(shù)據(jù)。

3.被隔離后,如何實現(xiàn)用戶態(tài)對內核態(tài)的訪問?

中斷指令是用戶態(tài)進入內核態(tài)的唯一方法。系統(tǒng)調用實際上是一段包含中斷的即int指令的代碼。(且為0x80中斷)

printf的調用過程

中斷int0x80通過初始化int0x80的DPL為3來實現(xiàn)用戶態(tài)對內核態(tài)的訪問。


總結:

用戶態(tài)中的main函數(shù)調用whoani系統(tǒng)調用之后在內存中發(fā)生了什么?

調用系統(tǒng)調用whoani()不能直接訪問到內核態(tài)中的相對應的代碼,而是要經(jīng)過以下步驟:

1.通過庫函數(shù)將whoani擴展為包含0x80的代碼,并指定系統(tǒng)調用號eax。int 0x80通過將DPL設置為3,而當前的CPL也為3來實現(xiàn)對內核的訪問。進入內核后CPL變?yōu)?。

2.通過查表sys_call_table,找到需要調用的函數(shù)為sys_whoami。

3.執(zhí)行sys_whoami中的內容。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1.接口是什么? 接口就是插座,將信號進行轉換,屏蔽細節(jié),抽象表現(xiàn). 對于計算機而言,接口就是一些重要的函數(shù)調用,...
    諸葛清風閱讀 1,298評論 0 1
  • 一 系統(tǒng)調用的意義 在操作系統(tǒng)內存中,肯定存在很多敏感的數(shù)據(jù),只希望在特定的場景下才能訪問。例如linux登錄之后...
    清雨季閱讀 2,205評論 0 3
  • 操作系統(tǒng)期末預習筆記 whye 本課程教學采用的是32位操作系統(tǒng) 什么是操作系統(tǒng) 通用圖靈機:操作+數(shù)據(jù)等于處理結...
    jun123123閱讀 2,026評論 0 1
  • 最近心血來潮趁著端午又學了一遍操作系統(tǒng):https://www.icourse163.org/course/HIT...
    木小易Ying閱讀 1,345評論 1 1
  • 2.3 系統(tǒng)調用的實現(xiàn) 1 內核態(tài)和用戶態(tài)(1)內核態(tài):操作系統(tǒng)代碼執(zhí)行時的狀態(tài)。(2)用戶態(tài):應用程序代碼執(zhí)行時...
    hapcat閱讀 797評論 0 0

友情鏈接更多精彩內容