chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探索操作系統(tǒng)底層的關(guān)鍵接口

? 來源:jf_57394773 ? 2025-11-08 12:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、前言

為什么用戶程序不能直接訪問系統(tǒng)內(nèi)核模式提供的服務(wù)?

linux中,將程序的運(yùn)行空間分為內(nèi)核空間與用戶空間(內(nèi)核態(tài)和用戶態(tài)),在邏輯上它們之間是相互隔離的,因此用戶程序不能訪問內(nèi)核數(shù)據(jù),也無法使用內(nèi)核函數(shù)。當(dāng)用戶進(jìn)程必須訪問內(nèi)核或使用某個內(nèi)核函數(shù)時,就得使用系統(tǒng)調(diào)用(System Call)。在Linux中,系統(tǒng)調(diào)用是用戶空間訪問內(nèi)核空間的唯一途徑。

什么是系統(tǒng)調(diào)用?

答:系統(tǒng)調(diào)用就是一種特殊的接口。通過這個接口,用戶可以訪問內(nèi)核空間。系統(tǒng)調(diào)用規(guī)定了用戶進(jìn)程進(jìn)入內(nèi)核的具體位置。系統(tǒng)調(diào)用是用戶進(jìn)程進(jìn)入內(nèi)核的接口層,它本身并非內(nèi)核函數(shù),但它是由內(nèi)核函數(shù)實(shí)現(xiàn),進(jìn)入內(nèi)核后,不同的系統(tǒng)調(diào)用會找到各自對應(yīng)的內(nèi)核函數(shù),這些內(nèi)核函數(shù)被稱為系統(tǒng)調(diào)用的“服務(wù)例程”。比如系統(tǒng)調(diào)用getpid實(shí)際調(diào)用了服務(wù)例程為sys_getpid(),或者說系統(tǒng)調(diào)用getpid是服務(wù)例程sys_getpid()的“封裝例程”。

具體步驟:用戶進(jìn)程-->系統(tǒng)調(diào)用-->內(nèi)核-->返回用戶空間。

系統(tǒng)調(diào)用就是為了解決上述問題而引入的,是提供給用戶的“特殊接口”,系統(tǒng)調(diào)用規(guī)定用戶進(jìn)程進(jìn)入內(nèi)核空間的具體位置。

1.程序運(yùn)行空間從用戶空間進(jìn)入內(nèi)核空間。

2.處理完后再返回用戶空間。

什么是API

答:應(yīng)用程序接口API(Application Programming Interface) ,是程序員在用戶空間下可以直接使用的函數(shù)接口。是一些預(yù)定義的函數(shù),比如常用的read()、malloc()、free()、abs()函數(shù)等,這些函數(shù)都具有一定功能,說明了如何獲得一個給定的服務(wù),跟內(nèi)核沒有必然的聯(lián)系。提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件的以訪問一組例程的能力,而又無需訪問源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。

兩者的區(qū)別

答:區(qū)別:api是函數(shù)的定義,規(guī)定了這個函數(shù)的功能,跟內(nèi)核無直接關(guān)系。而系統(tǒng)調(diào)用是通過中斷向內(nèi)核發(fā)請求,實(shí)現(xiàn)內(nèi)核提供的某些服務(wù)。

聯(lián)系:程序員調(diào)用的是API(API函數(shù)),然后通過與系統(tǒng)調(diào)用共同完成函數(shù)的功能。 因此,API是一個提供給應(yīng)用程序的接口,一組函數(shù),是與程序員進(jìn)行直接交互的。系統(tǒng)調(diào)用則不與程序員進(jìn)行交互的,它是根據(jù)API函數(shù),通過一個軟中斷機(jī)制向內(nèi)核提交請求,以獲取內(nèi)核服務(wù)的接口。

有時候,某些API所提供的功能會涉及到與內(nèi)核空間進(jìn)行交互。那么,這類API內(nèi)部會封裝系統(tǒng)調(diào)用。而不涉及與內(nèi)核進(jìn)行交互的API則不會封裝系統(tǒng)調(diào)用。也就是說,API和系統(tǒng)調(diào)用并沒有嚴(yán)格的一一對應(yīng)關(guān)系,一個API可能恰好只對應(yīng)一個系統(tǒng)調(diào)用,比如read()系統(tǒng)調(diào)用和read();一個API也可能由多個系統(tǒng)調(diào)用實(shí)現(xiàn);有時候,一個API的功能可能并不需要內(nèi)核提供的服務(wù),那么此時這個API也就不需要任何的系統(tǒng)調(diào)用,比如abs()。另外,一個系統(tǒng)調(diào)用可能還被多個API內(nèi)部調(diào)用。

對于編程者來說,系統(tǒng)調(diào)用和API都是一組函數(shù),并無什么兩樣,二者關(guān)注的都是函數(shù)名、參數(shù)類型及返回值的含義;但是事實(shí)上,系統(tǒng)調(diào)用的實(shí)現(xiàn)是在內(nèi)核完成的,API則是在函數(shù)庫中實(shí)現(xiàn)的。

例如: 在內(nèi)核中實(shí)現(xiàn)了write系統(tǒng)調(diào)用。

AI寫代碼

在庫函數(shù)中通過宏定義的方式實(shí)現(xiàn)write API。可以在unistd.h中看到write到系統(tǒng)調(diào)用的轉(zhuǎn)換。

API是用戶程序直接可以使用的函數(shù)接口,但如果每個操作系統(tǒng)都擁有只屬于自己的API,那么應(yīng)用程序的移植性將會很差。基于POSIX(Portable Operating System Interface)標(biāo)準(zhǔn)的API擁有很好的可移植性,它定義了一套POSIX兼容標(biāo)準(zhǔn),這使得按這個標(biāo)準(zhǔn)實(shí)現(xiàn)的API可以在各種版本的UNIX中使用?,F(xiàn)如今,它也可以在除UNIX之外的操作系統(tǒng)中使用,比如Linux,Windows NT等。

二、系統(tǒng)調(diào)用

操作系統(tǒng)負(fù)責(zé)管理和分配所有的計(jì)算機(jī)資源。為了更好地服務(wù)于應(yīng)用程序,操作系統(tǒng)提供了一組特殊接口———系統(tǒng)調(diào)用。用戶程序可以通過這組特殊的接口來獲取操作系統(tǒng)內(nèi)核提供的各種功能,如分配內(nèi)存、創(chuàng)建進(jìn)程、實(shí)現(xiàn)進(jìn)程之間的通信等。

系統(tǒng)調(diào)用(system call) 其實(shí)是 Linux 內(nèi)核提供給應(yīng)用層的應(yīng)用編程接口(API) , 是 Linux 應(yīng)用層進(jìn)入內(nèi)核的入口。不止 Linux 系統(tǒng),所有的操作系統(tǒng)都會向應(yīng)用層提供系統(tǒng)調(diào)用,應(yīng)用程序通過系統(tǒng)調(diào)用來使用操作系統(tǒng)提供的各種服務(wù)。

通過系統(tǒng)調(diào)用, Linux 應(yīng)用程序可以請求內(nèi)核以自己的名義執(zhí)行某些事情,譬如打開磁盤中的文件、讀寫文件、關(guān)閉文件以及控制其它硬件外設(shè)。

通過系統(tǒng)調(diào)用 API,應(yīng)用層可以實(shí)現(xiàn)與內(nèi)核的交互,其關(guān)系可通過下圖簡單描述:

內(nèi)核提供了一系列的服務(wù)、資源、支持一系列功能,應(yīng)用程序通過調(diào)用系統(tǒng)調(diào)用 API 函數(shù)來使用內(nèi)核提供的服務(wù)、資源以及各種各樣的功能, 如果大家接觸過其它操作系統(tǒng)編程,想必對此并不陌生,譬如Windows 應(yīng)用編程,操作系統(tǒng)內(nèi)核一般都會向應(yīng)用程序提供應(yīng)用編程接口 API,否則我們將我無法使用操作系統(tǒng)。

為什么用戶程序不能直接訪問系統(tǒng)內(nèi)核提供的服務(wù)呢?答案是不安全。

單片機(jī)開發(fā)中,由于不需要操作系統(tǒng),只需要知道寄存器的地址,代碼通過指針直接操作硬件,所以開發(fā)人員可以編寫代碼直接訪問硬件。硬件>>>>>>代碼直接在內(nèi)存中運(yùn)行操作硬件。

而在嵌入式系統(tǒng)中通常都要運(yùn)行操作系統(tǒng),程序訪問資源的方式就發(fā)生了改變。操作系統(tǒng)基本上都支持多任務(wù),即同時可以運(yùn)行多個程序。如果允許程序直接訪問系統(tǒng)資源,肯定會帶來很多問題。因此,所有軟硬件資源的管理和分配都由操作系統(tǒng)負(fù)責(zé)。程序要獲取資源(如分配內(nèi)存、讀寫串口)必須通過操作系統(tǒng)來完成,即用戶程序向操作系統(tǒng)發(fā)出服務(wù)請求,操作系統(tǒng)收到請求后執(zhí)行相關(guān)的代碼來處理。硬件>>>>>>>操作系統(tǒng)>>>>>>>代碼

還有更重要的一點(diǎn)是,在Linux中,為了更好地保護(hù)內(nèi)核空間,將程序的運(yùn)行空間分為用戶空間和內(nèi)核空間(也就是常稱的用戶態(tài)和內(nèi)核態(tài)),它們分別運(yùn)行在不同的級別上,邏輯上是相互分離的。因此,用戶進(jìn)程通常情況下不允許訪問內(nèi)核數(shù)據(jù),也無法使用內(nèi)核函數(shù),它們只能在用戶空間操作用戶數(shù)據(jù),調(diào)用用戶空間的函數(shù)。但是,在有些情況下,用戶空間的進(jìn)程需要獲得內(nèi)核的系統(tǒng)服務(wù)(調(diào)用內(nèi)核空間程序),這時操作系統(tǒng)就必須利用系統(tǒng)提供用戶的特殊接口———”系統(tǒng)調(diào)用”規(guī)定用戶進(jìn)程進(jìn)入內(nèi)核空間的具體位置。在進(jìn)行系統(tǒng)調(diào)用時,程序運(yùn)行空間需要從用戶空間進(jìn)入內(nèi)核空間,處理完成后再返回用戶空間。

用戶程序向操作系統(tǒng)提出請求的接口就是系統(tǒng)調(diào)用。所有的操作系統(tǒng)都會提供系統(tǒng)調(diào)用接口,只不過不同的操作系統(tǒng)提供的系統(tǒng)調(diào)用接口各不相同。Linux系統(tǒng)調(diào)用接口非常精簡(只有250個左右),它繼承了UNIX系統(tǒng)調(diào)用中最基本和最有用的部分。這些系統(tǒng)調(diào)用按照功能大致可分為進(jìn)程控制、進(jìn)程間通信、文件系統(tǒng)控制、存儲管理、網(wǎng)絡(luò)管理、套接字控制、用戶管理等。

應(yīng)用編程與裸機(jī)編程、驅(qū)動編程有什么區(qū)別?

在學(xué)習(xí)應(yīng)用編程之前,相信大家都有過軟件開發(fā)經(jīng)驗(yàn),譬如 51、 STM32單片機(jī)軟件開發(fā)、 以及嵌入式 Linux 硬件平臺下的驅(qū)動開發(fā)等, 51、 STM32 這類單片機(jī)的軟件開發(fā)通常是裸機(jī)程序開發(fā),并不會涉及到操作系統(tǒng)的概念,那應(yīng)用編程與裸機(jī)編程以及驅(qū)動開發(fā)有什么區(qū)別呢?

就拿嵌入式 Linux 硬件平臺下的軟件開發(fā)來說,我們大可將編程分為三種,分別為裸機(jī)編程、 Linux 驅(qū)動編程以及 Linux 應(yīng)用編程。首先對于裸機(jī)編程這個概念來說很好理解,一般把沒有操作系統(tǒng)支持的編程環(huán)境稱為裸機(jī)編程環(huán)境,譬如單片機(jī)上的編程開發(fā),編寫直接在硬件上運(yùn)行的程序,沒有操作系統(tǒng)支持; 狹義上 Linux 驅(qū)動編程指的是基于內(nèi)核驅(qū)動框架開發(fā)驅(qū)動程序, 驅(qū)動開發(fā)工程師通過調(diào)用 Linux 內(nèi)核提供的接口完成設(shè)備驅(qū)動的注冊, 驅(qū)動程序負(fù)責(zé)底層硬件操作相關(guān)邏輯, 如果學(xué)習(xí)過 Linux 驅(qū)動開發(fā)的讀者,想必對此并不陌生; 而 Linux 應(yīng)用編程(系統(tǒng)編程)則指的是基于 Linux 操作系統(tǒng)的應(yīng)用編程,在應(yīng)用程序中通過調(diào)用系統(tǒng)調(diào)用 API 完成應(yīng)用程序的功能和邏輯, 應(yīng)用程序運(yùn)行于操作系統(tǒng)之上。通常在操作系統(tǒng)下有兩種不同的狀態(tài):內(nèi)核態(tài)和用戶態(tài),應(yīng)用程序運(yùn)行在用戶態(tài)、而內(nèi)核則運(yùn)行在內(nèi)核態(tài)。

三、用戶編程接口(API)---C庫

前面提到利用系統(tǒng)調(diào)用接口程序可以訪問各種資源,但并不直接與程序員進(jìn)行交互,它僅僅是一個通過軟中斷機(jī)制向內(nèi)核提交請求以獲取內(nèi)核服務(wù)的接口。但在實(shí)際開發(fā)中程序并不直接使用系統(tǒng)調(diào)用接口,而是使用用戶程序編程接口(API)。例如,創(chuàng)建進(jìn)程的API函數(shù)fork()函數(shù)對應(yīng)于內(nèi)核空間的sys_fork()系統(tǒng)調(diào)用,但并不是所有的函數(shù)都對應(yīng)一個系統(tǒng)調(diào)用。有時,一個API函數(shù)會需要幾個系統(tǒng)調(diào)用來共同完成函數(shù)的功能,甚至還有一些API函數(shù)不需要調(diào)用相應(yīng)的系統(tǒng)調(diào)用(因此它所完成的不是內(nèi)核提供的服務(wù))。

前面給大家介紹了系統(tǒng)調(diào)用,系統(tǒng)調(diào)用是內(nèi)核直接向應(yīng)用層提供的應(yīng)用編程接口, 譬如 open、 write、read、 close 等。編寫應(yīng)用程序除了使用系統(tǒng)調(diào)用之外,我們還可以使用庫函數(shù)。

庫函數(shù)也就是 C 語言庫函數(shù), C 語言庫是應(yīng)用層使用的一套函數(shù)庫, 在 Linux 下,通常以動態(tài)(.so)庫文件的形式提供,存放在根文件系統(tǒng)/lib 目錄下, C 語言庫函數(shù)構(gòu)建于系統(tǒng)調(diào)用之上,也就是說庫函數(shù)其實(shí)是由系統(tǒng)調(diào)用封裝而來的,當(dāng)然也不能完全這么說, 原因在于有些庫函數(shù)并不調(diào)用任何系統(tǒng)調(diào)用,譬如一些字符串處理函數(shù) strlen()、 strcat()、 memcpy()、 memset()、 strchr()等等; 而有些庫函數(shù)則會使用系統(tǒng)調(diào)用來幫它完成實(shí)際的操作,譬如庫函數(shù) fopen 內(nèi)部調(diào)用了系統(tǒng)調(diào)用 open()來幫它打開文件、庫函數(shù) fread()就利用了系統(tǒng)調(diào)用 read()來完成讀文件操作、 fwrite()就利用了系統(tǒng)調(diào)用 write()來完成寫文件操作。

庫函數(shù)可以理解為是對系統(tǒng)調(diào)用的一層封裝。系統(tǒng)調(diào)用作為內(nèi)核提供給用戶程序的接口,它的執(zhí)行效率是比較高效而精簡的,但有時我們需要對獲取的信息進(jìn)行更復(fù)雜的處理,或更人性化的需要,我們把這些處理過程封裝成一個函數(shù)再提供給程序員,更方便于程序猿編碼。庫函數(shù)有可能包含有一個系統(tǒng)調(diào)用,有可能有好幾個系統(tǒng)調(diào)用,當(dāng)然也有可能沒有系統(tǒng)調(diào)用,比如有些操作不需要涉及內(nèi)核的功能??梢詤⒖枷聢D來理解庫函數(shù)與系統(tǒng)調(diào)用的關(guān)系。

Linux 系統(tǒng)內(nèi)核提供了一系列的系統(tǒng)調(diào)用供應(yīng)用層使用, 我們直接使用系統(tǒng)調(diào)用就可以了呀,那為何還要設(shè)計(jì)出庫函數(shù)呢?事實(shí)上, 有些系統(tǒng)調(diào)用使用起來并不是很方便, 于是就出現(xiàn)了 C 語言庫,這些 C 語言庫函數(shù)的設(shè)計(jì)是為了提供比底層系統(tǒng)調(diào)用更為方便、更為好用、 且更具有可移植性的調(diào)用接口。

來看一看它們之間的區(qū)別:

庫函數(shù)是屬于應(yīng)用層,而系統(tǒng)調(diào)用是內(nèi)核提供給應(yīng)用層的編程接口,屬于系統(tǒng)內(nèi)核的一部分;

庫函數(shù)運(yùn)行在用戶空間,調(diào)用系統(tǒng)調(diào)用會由用戶空間(用戶態(tài))陷入到內(nèi)核空間(內(nèi)核態(tài));

庫函數(shù)通常是有緩存的,而系統(tǒng)調(diào)用是無緩存的,所以在性能、效率上,庫函數(shù)通常要優(yōu)于系統(tǒng)調(diào)用;

可移植性:庫函數(shù)相比于系統(tǒng)調(diào)用具有更好的可移植性,通常對于不同的操作系統(tǒng),其內(nèi)核向應(yīng)用層提供的系統(tǒng)調(diào)用往往都是不同,譬如系統(tǒng)調(diào)用的定義、功能、參數(shù)列表、返回值等往往都是不一樣的;而對于 C 語言庫函數(shù)來說,由于很多操作系統(tǒng)都實(shí)現(xiàn)了 C 語言庫, C 語言庫在不同的操作系統(tǒng)之間其接口定義幾乎是一樣的,所以庫函數(shù)在不同操作系統(tǒng)之間相比于系統(tǒng)調(diào)用具有更好的可移植性。

以上便上它們之間一個大致的區(qū)別, 從實(shí)現(xiàn)者的角度來看,系統(tǒng)調(diào)用與庫函數(shù)之間有根本的區(qū)別,但從用戶使用角度來看,其區(qū)別并不重要,它們都是 C 語言函數(shù)。 在實(shí)際應(yīng)用編程中,庫函數(shù)和系統(tǒng)調(diào)用都會使用到,所以對于我們來說,直接把它們當(dāng)做是 C 函數(shù)即可,知道你自己調(diào)用的函數(shù)是系統(tǒng)調(diào)用還是庫函數(shù)即可,不用太過于區(qū)分它們之間的差別,所以應(yīng)用編程簡單點(diǎn)來說就是:開發(fā) Linux 應(yīng)用程序,通過調(diào)用內(nèi)核提供的系統(tǒng)調(diào)用或使用 C 庫函數(shù)來開發(fā)具有相應(yīng)功能的應(yīng)用程序。

為什么不直接使用系統(tǒng)調(diào)用接口了。原因如下:

系統(tǒng)調(diào)用接口功能非常簡單,無法滿足程序的要求

不同操作系統(tǒng)的系統(tǒng)調(diào)用接口不兼容,程序移植時工作量大。

用戶程序編程接口通俗的解釋就是各種庫(最重要的就是C庫)中的函數(shù)。為了提高開發(fā)效率,C庫中實(shí)現(xiàn)了很多函數(shù)。這些函數(shù)實(shí)現(xiàn)了常用的功能,供程序員調(diào)用。這樣一來,程序員就不需要自己編寫這些代碼。直接調(diào)用庫函數(shù)就可以實(shí)現(xiàn)基本功能,提高了代碼的復(fù)用率。使用用戶程序編程接口好友一個好處就是:程序具有良好的可移植性。幾乎所有的操作系統(tǒng)上都實(shí)現(xiàn)了C庫,所以程序通常只需要重新編譯一下就可以在其它操作系統(tǒng)下運(yùn)行。

在Linux中,用戶程序編程接口(API)遵循了UNIX中最流行的應(yīng)用編程界面標(biāo)準(zhǔn)———POSIX標(biāo)準(zhǔn)。POSIX標(biāo)準(zhǔn)是由IEEE和ISO/IEC共同開發(fā)的標(biāo)準(zhǔn)系統(tǒng),該標(biāo)準(zhǔn)基于當(dāng)時的UNIX實(shí)踐和經(jīng)驗(yàn),描述了操作系統(tǒng)的系統(tǒng)調(diào)用編程接口(實(shí)際上就是API),用于保證應(yīng)用程序可以在源代碼一級上在多種操作系統(tǒng)上移植運(yùn)行。這些系統(tǒng)調(diào)用編程接口主要是通過C庫(libc)實(shí)現(xiàn)的。

3.1系統(tǒng)命令

每一個系統(tǒng)命令其實(shí)就是一個可執(zhí)行的程序,這些可執(zhí)行程序的實(shí)現(xiàn)調(diào)用了某些系統(tǒng)調(diào)用。并且,這些可執(zhí)行程序又分為普通用戶可使用的命令和管理員可使用的命令。根據(jù)上述分類,普通用戶可用的命令和管理可用的命令分別被存放于/bin和/sbin目錄下。

系統(tǒng)命令相對于API更高了一層,它實(shí)際上是一個可執(zhí)行程序,它的內(nèi)部引用了用戶編程接口(API)來實(shí)現(xiàn)相應(yīng)的功能,它們之間的關(guān)系如下圖:

3.2內(nèi)核函數(shù)

內(nèi)核函數(shù)和用戶空間中函數(shù)并無兩樣,只不過內(nèi)核函數(shù)是在內(nèi)核中實(shí)現(xiàn)。雖然系統(tǒng)調(diào)用是用戶進(jìn)程進(jìn)入內(nèi)核的唯一途徑,但是系統(tǒng)調(diào)用函數(shù)內(nèi)部并不真正實(shí)現(xiàn)其功能,而是通過對內(nèi)核函數(shù)的封裝。也就是說,用戶程序通過某個系統(tǒng)調(diào)用進(jìn)入內(nèi)核后,會接著去執(zhí)行這個系統(tǒng)調(diào)用對應(yīng)的內(nèi)核函數(shù)。這個內(nèi)核函數(shù)也稱為系統(tǒng)調(diào)用的服務(wù)例程。

由于內(nèi)核函數(shù)是在內(nèi)核中實(shí)現(xiàn)的,因此它必須符合內(nèi)核編程的規(guī)則,比如函數(shù)名以sys_開始,函數(shù)定義時候需加asmlinkage標(biāo)識符等。

四、標(biāo)準(zhǔn)C程序的實(shí)例

首先,C程序調(diào)用API函數(shù)printf;

printf 函數(shù)的調(diào)用引發(fā)了對應(yīng)的系統(tǒng)調(diào)用write的執(zhí)行;

write執(zhí)行結(jié)束時的返回值傳遞回用戶程序;

4.1操作系統(tǒng)的模式

(1)雙重模式(DUAL MODE)

現(xiàn)代計(jì)算機(jī)系統(tǒng)有一個特殊的硬件,用于劃分系統(tǒng)的運(yùn)行狀態(tài),至少需要兩種單獨(dú)運(yùn)行模式:

用戶模式(user mode):執(zhí)行用戶代碼

內(nèi)核模式(kernel mode):執(zhí)行操作系統(tǒng)代碼

目的:確保操作系統(tǒng)正確的運(yùn)行

實(shí)現(xiàn)方式:用一個硬件模式位來表示當(dāng)前模式:0表示內(nèi)核模式,1表示用戶模式

(2)運(yùn)行模式的切換

程序執(zhí)行流剛開始在“用戶模式”運(yùn)行,當(dāng)發(fā)生系統(tǒng)調(diào)用的時候,需要從“用戶模式”切換到“內(nèi)核模式”運(yùn)行。

這種模式切換的機(jī)制稱為:陷阱(Trap)機(jī)制。

4.2系統(tǒng)調(diào)用的實(shí)現(xiàn)機(jī)制

如遇任何疑問或有進(jìn)一步的需求,請隨時與我私信或者評論聯(lián)系。

版權(quán)聲明:本文為CSDN博主「xie13307907056」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/xie13307907056/article/details/154171834

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11622

    瀏覽量

    217824
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7325

    瀏覽量

    128564
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    單片機(jī)的操作系統(tǒng)

    。 ? ? RT-Thread ?:國產(chǎn)開源系統(tǒng),集成GUI、網(wǎng)絡(luò)協(xié)議棧、文件系統(tǒng)等組件,兼容POSIX接口,適合物聯(lián)網(wǎng)設(shè)備。 ? 嵌入式操作系統(tǒng) ? μClinux ?:針對無M
    發(fā)表于 11-14 06:18

    深入了解系統(tǒng)調(diào)用API:探索操作系統(tǒng)底層關(guān)鍵接口

    ,也無法使用內(nèi)核函數(shù)。當(dāng)用戶進(jìn)程必須訪問內(nèi)核或使用某個內(nèi)核函數(shù)時,就得使用系統(tǒng)調(diào)用(System Call)。在Linux中,系統(tǒng)調(diào)用是用戶空間訪問內(nèi)核空間的唯一途徑。 什么是系統(tǒng)調(diào)用? 答:
    的頭像 發(fā)表于 11-03 09:20 ?398次閱讀

    樹莓派操作系統(tǒng):版本、特性及設(shè)置完整指南!

    樹莓派操作系統(tǒng)是什么?樹莓派操作系統(tǒng)是由樹莓派基金會專為樹莓派開發(fā)的官方操作系統(tǒng)。它基于DebianLinux發(fā)行版,并針對樹莓派的ARM架構(gòu)進(jìn)行了專門優(yōu)化。樹莓派操作系統(tǒng)有多個版本,
    的頭像 發(fā)表于 07-28 18:26 ?801次閱讀
    樹莓派<b class='flag-5'>操作系統(tǒng)</b>:版本、特性及設(shè)置完整指南!

    深度智能 基座躍遷 鴻道Intewell,面向“AI+智造”的新型工業(yè)操作系統(tǒng)

    科東軟件受邀參加“數(shù)字化與智能制造技術(shù)論壇”,帶來“AI+智造”的精彩分享。在“AI+智造”深度融合的時代洪流中,工業(yè)操作系統(tǒng)作為底層基座的重要性日益凸顯。鴻道Intewell操作系統(tǒng)已成為驅(qū)動中國制造業(yè)智能化躍遷的
    的頭像 發(fā)表于 07-23 17:02 ?417次閱讀
    深度智能 基座躍遷  鴻道Intewell,面向“AI+智造”的新型工業(yè)<b class='flag-5'>操作系統(tǒng)</b>

    揭秘LuatOS:實(shí)時操作系統(tǒng)RTOS核心庫的關(guān)鍵技術(shù)剖析!

    電機(jī)控制、傳感器采集等實(shí)時數(shù)據(jù)處理場景。 在LuatOS開發(fā)中, 用于實(shí)時操作系統(tǒng)(RTOS)相關(guān)功能的核心庫 ——提供了定時器管理、系統(tǒng)控制、內(nèi)存監(jiān)控、路徑配置等底層操作
    的頭像 發(fā)表于 05-21 16:02 ?497次閱讀
    揭秘LuatOS:實(shí)時<b class='flag-5'>操作系統(tǒng)</b>RTOS核心庫的<b class='flag-5'>關(guān)鍵</b>技術(shù)剖析!

    鴻道Intewell操作系統(tǒng):人形機(jī)器人底層操作系統(tǒng)

    操作系統(tǒng)的實(shí)時性賦能東土科技的鴻道(Intewell)工業(yè)操作系統(tǒng)作為國內(nèi)唯一通過汽車、工業(yè)控制、醫(yī)療、軌道交通四項(xiàng)功能安全認(rèn)證的系統(tǒng),為標(biāo)準(zhǔn)體系中的技術(shù)層架構(gòu)提供了底層支持。其微內(nèi)核
    的頭像 發(fā)表于 05-16 14:44 ?534次閱讀

    理想汽車智駕操作系統(tǒng)解讀

    (HaloOS),基于“資源集中與共享、極致性能、快速迭代、高安全性”四大設(shè)計(jì)原則,打通了底層硬件與上層智能應(yīng)用的隔閡,為自動駕駛技術(shù)提供了強(qiáng)大而可靠的系統(tǒng)底座。 在過去的幾十年里,汽車操作系統(tǒng)的發(fā)展與汽車電子電氣架構(gòu)的演變緊
    的頭像 發(fā)表于 05-13 10:54 ?866次閱讀
    理想汽車智駕<b class='flag-5'>操作系統(tǒng)</b>解讀

    KaihongOS操作系統(tǒng):導(dǎo)入接口模塊介紹

    導(dǎo)入接口模塊 在KaihongOS中,接口模塊是指一組定義了特定功能和行為的API(應(yīng)用程序編程接口)集合,它們允許開發(fā)者訪問和控制操作系統(tǒng)的特定功能或硬件特性。
    發(fā)表于 04-25 08:16

    模型原生操作系統(tǒng):機(jī)遇、挑戰(zhàn)與展望 CCCF精選

    本文立足人工智能時代用戶、應(yīng)用和系統(tǒng)的需求,分析“外掛式模型”演進(jìn)路徑下的操作系統(tǒng)發(fā)展困局,提出通過“模型-系統(tǒng)-芯片”的全棧協(xié)同設(shè)計(jì)來構(gòu)建模型原生操作系統(tǒng),并進(jìn)一步探討了面臨的機(jī)遇與
    的頭像 發(fā)表于 03-14 17:46 ?912次閱讀
    模型原生<b class='flag-5'>操作系統(tǒng)</b>:機(jī)遇、挑戰(zhàn)與展望  CCCF精選

    【「鴻蒙操作系統(tǒng)設(shè)計(jì)原理與架構(gòu)」閱讀體驗(yàn)】01-初始華為鴻蒙

    依靠操作系統(tǒng)進(jìn)行定義和抽象。同時,人和計(jì)算機(jī)之間、計(jì)算機(jī)和計(jì)算機(jī)之間的基本交互邏輯也需要依靠操作系統(tǒng)進(jìn)行定義和抽象。計(jì)算機(jī)硬件廠商需要按照操作系統(tǒng)定義和抽象的接口來設(shè)計(jì)與
    發(fā)表于 01-25 11:05

    國產(chǎn)銀河麒麟操作系統(tǒng)V10和星光麒麟V1.0操作系統(tǒng)如何選擇?

    國產(chǎn)銀河麒麟操作系統(tǒng)和星光麒麟操作系統(tǒng)都是由中國電子旗下科技企業(yè)麒麟軟件有限公司(簡稱“麒麟軟件”)開發(fā)的國產(chǎn)自主可控的操作系統(tǒng)。麒麟軟件介紹:麒麟軟件以安全可信操作系統(tǒng)技術(shù)為核心,面
    的頭像 發(fā)表于 01-24 09:14 ?4147次閱讀
    國產(chǎn)銀河麒麟<b class='flag-5'>操作系統(tǒng)</b>V10和星光麒麟V1.0<b class='flag-5'>操作系統(tǒng)</b>如何選擇?

    鴻道Intewell工業(yè)操作系統(tǒng),三大關(guān)鍵技術(shù),領(lǐng)跑行業(yè)前沿

    鴻道工業(yè)操作系統(tǒng),是軟件定義控制的工業(yè)實(shí)時操作系統(tǒng),具備三大關(guān)鍵技術(shù):1、確定性計(jì)算與高實(shí)時響應(yīng)(微秒級、關(guān)鍵指標(biāo))提供確定性的計(jì)算與高實(shí)時的系統(tǒng)
    的頭像 發(fā)表于 12-25 14:46 ?772次閱讀

    deepin操作系統(tǒng)介紹

    希望從自己的能力和對桌面操作系統(tǒng)的理解,能給 Linux 的用戶與開發(fā)者更多的選擇。我們也相信 deepin 能夠得到更多用戶的認(rèn)可與喜愛,成為開源世界的最佳選擇。? 一、 deepin 操作系統(tǒng) 先說 Linux 操作系統(tǒng),它
    的頭像 發(fā)表于 12-23 09:08 ?3201次閱讀
    deepin<b class='flag-5'>操作系統(tǒng)</b>介紹

    名單公布!【書籍評測活動NO.53】鴻蒙操作系統(tǒng)設(shè)計(jì)原理與架構(gòu)

    底層設(shè)計(jì)邏輯出發(fā),針對不同關(guān)鍵子系統(tǒng)的目標(biāo)功能和實(shí)現(xiàn)路徑做實(shí)際分析解讀,幫助開發(fā)者理解鴻蒙操作系統(tǒng)底層邏輯,開發(fā)更適合系統(tǒng)邏輯的架構(gòu)代碼
    發(fā)表于 12-16 15:10

    如何在windows上emulate不同操作系統(tǒng)

    一、虛擬化技術(shù)概述 虛擬化技術(shù)允許在單個物理機(jī)器上創(chuàng)建多個虛擬機(jī),每個虛擬機(jī)都可以運(yùn)行不同的操作系統(tǒng)。這使得我們可以在Windows系統(tǒng)上模擬其他操作系統(tǒng),而無需購買額外的硬件。虛擬化技術(shù)的關(guān)
    的頭像 發(fā)表于 12-05 15:50 ?1353次閱讀