深入理解系統呼叫與庫函式呼叫

2021-04-12 23:33:50 字數 723 閱讀 6695

今天對系統呼叫和庫函式呼叫進行了一次總結!在這裡把心得寫出來,如果有什麼錯誤希望大家能指出

我們假設unix系統 庫函式有c編譯器提供 , 而你有用彙編編寫c庫函式的能力!

首先要知道巨集觀上知道系統呼叫和庫函式的區別:系統呼叫由作業系統提供,我門假設用彙編編寫的

而庫函式是編譯器提供

而我們知道系統呼叫是會通過一種陷阱的機制陷入核心而執行相應的處理程式

為什麼要陷入核心哪,因為系統分為核心態和使用者態,比如我們對某i/o進行相應的操作,假設利用組合語言,只有在核心態時才能使用這些訪問i/o指令.

這樣的話我們就知道當進行i/o訪問時(控制硬體,或對核心資料訪問,系統狀態的訪問,程序的管理一類)都要陷入核心,才能使用有關指令

而象我門所說的庫函式或api使用者程式設計介面並不是系統呼叫,他們只是當涉及到需要陷入核心才能完成的功能才呼叫相應功能的系統呼叫,例如printf()函式就呼叫了系統呼叫的weite().進入核心而完成功能.

象一些abs()一類的函式(對使用者資料操作)就無須陷入核心,而在庫函式中也就無須進行系統呼叫.因為他們是對使用者空間的資料(程式的正文,資料區和堆疊區)進行訪問.

當你自己用彙編進行庫函式的編寫時同樣要進行bios中斷,來實現一些核心完成的任務,bios中斷就已經是進入核心了.如果你自己直接對i/o埠位址進行訪問,比如直接寫屏,前提你要開cpu中斷 cld/std 這也已經進入核心了

在這裡感謝一位朋友的幫助,同時希望大家如果發現有錯誤能夠告訴我.謝謝!

深入理解系統呼叫

一.實驗要求 二.實驗環境搭建 1.安裝開發工具 sudo apt install build essential sudo apt install qemu install qemu sudo apt install libncurses5 dev bison ex libssl dev libe...

系統呼叫與庫函式呼叫

linux下對檔案操作有兩種方式 系統呼叫 system call 和庫函式呼叫 library functions 系統呼叫實際上就是指最底層的乙個呼叫,在linux程式設計裡面就是底層呼叫的意思。面向的是硬體。而庫函式呼叫則面向的是應用開發的,相當於應用程式的api,採用這樣的方式有很多種原因,...

深入理解Linux系統呼叫

環境準備 1.安裝環境 1 sudo apt install build essential 2 sudo apt install qemu install qemu 3 sudo apt install libncurses5 dev bison flex libssl dev libelf de...