操作系統(tǒng)學習筆記(十)

系統(tǒng)調用

用戶界面的定義

OS提供給用戶控制計算機的機制,又稱用戶接口。

操作界面

系統(tǒng)調用(System Call,系統(tǒng)功能調用,程序界面)



例一:linux;兩個整數相加;函數add()

#include <stdio.h>
{
return (a+b);
}
int main(void)
{
int sum = add(100,300);
}

例二:Dos;21h中斷顯示字符串(09號功能)

String DB 'Hello!'  :定義要顯示的字符串
........
Mov DX,string     :DX<——字符串地址
Mov AH,09H :AH<——09H號功能
INT 21h

特點:09號功能涉及外設(顯卡)操作

例三:linux 打印一個字符串(printf)

#include <stdio.h>
int main(void)
{
printf("Hello world");
exit(0);
}

特點:函數涉及外設(顯卡)操作,涉及進程操作

系統(tǒng)調用的定義

操作系統(tǒng)內核為應用程序提供的服務/函數
21h(09),printf(),exit()


系統(tǒng)調用的特點

  • 一般涉及資源完成或硬件的操作
  • 運行于核態(tài)
  • 每個系統(tǒng)調用具有唯一的編號:ID
  • 調用過程會產生中斷:自愿中斷


系統(tǒng)調用的中斷過程

Dos利用INT 21h中斷實現系統(tǒng)調用
string DB'Hello!'  :定義顯示的字符串
......
MOV DX,string  :DX<——字符串地址
MOV AH,09h  ;AH<——09H號子功能
INT 21h

特點:利用AH寄存器存放在系統(tǒng)調用的編號。

Dos利用INT 21h中斷實現系統(tǒng)調用

  • 01:程序終止
  • 02:鍵盤輸入并且顯示
  • 03:顯示輸出
  • 04:異步通信輸入
    ·····
  • 08:鍵盤輸入無回顯
  • 09:顯示字符串
    ······
  • 39:建立子目錄
  • 3A:刪除子目錄
  • 3B:改變當前目錄
  • 3C:異步通信輸入
    ······
  • 3F:讀文件
  • 40:寫文件
    ······

Linux利用INT 80h中斷實現系統(tǒng)調用

輸出字符串:Hello world:

MOV EBX,1   ;EBX送1表示stdout
MOV ECX,MSG  ;字符串的首地址送入ecx
MOV EDX,14  ;字符串的長度送入edx
MOV EAX,4   ;指定系統(tǒng)調用的編號
INT 80h     ;中斷;輸出字串
MSG :DB “Hello world!”

特點:利用EAX寄存器存放系統(tǒng)調用的編號。
···
例:

include <stdio.h>

int main(void)
{
printf("Hello world");
exit(0);
}
···
特點:

  • 類似API函數
  • 在高級語言中使用
  • 含有“INT 80h”中斷指令,執(zhí)行相應的系統(tǒng)調用

隱式系統(tǒng)調用

編譯時隱式系統(tǒng)調用轉化為顯示的系統(tǒng)調用:INT 80h


linux系統(tǒng)調用的工作原理


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

相關閱讀更多精彩內容

友情鏈接更多精彩內容