一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

淺析從寄存器到用戶態(tài)與內(nèi)核態(tài)

jf_78858299 ? 來(lái)源: Hoeller ? 作者: Hoeller ? 2023-01-30 15:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

寄存器CPU內(nèi)部重要的組成部分,寄存器內(nèi)部由N個(gè)觸發(fā)器組成,每個(gè)觸發(fā)器可以保存1位二進(jìn)制數(shù),所以16位寄存器可以保存16個(gè)bit。

CPU內(nèi)部一般有不同類型的多個(gè)寄存器,我們需要使用CPU對(duì)應(yīng)的機(jī)器指令來(lái)操作這些寄存器,當(dāng)然像內(nèi)存、磁盤這些也是通過(guò)機(jī)器指令來(lái)操作的。

而CPU為了安全性,比如x86的CPU將機(jī)器指令分為了一般指令和特權(quán)指令,比如操作磁盤的指令就是特權(quán)指令,只有CPU處于某種特殊狀態(tài)下才能執(zhí)行特權(quán)指令。

x86 CPU利用內(nèi)部一個(gè)特殊寄存器,用來(lái)標(biāo)記此時(shí)的CPU能不能執(zhí)行特權(quán)指令,這個(gè)特殊寄存器中可以存四種狀態(tài),ring0、ring1、ring2、ring3。

Windows、Linux操作系統(tǒng)中只用了ring0和ring3兩種狀態(tài),如果處于ring0,表示CPU可以執(zhí)行所有指令,包括特權(quán)指令,如果處于ring3,表示CPU不能執(zhí)行特權(quán)指令,ring0等級(jí)高,ring3等級(jí)低。

不管是操作系統(tǒng)還是運(yùn)行在操作系統(tǒng)之上的軟件,都是用高級(jí)語(yǔ)言開(kāi)發(fā)出來(lái)的,最終都需要翻譯為機(jī)器指令。

所以本質(zhì)上來(lái)說(shuō),我們自己用c或java開(kāi)發(fā)的軟件,只要翻譯成了機(jī)器指令,也是可以直接操作寄存器的,操作磁盤的。

但是我們不會(huì)這么來(lái)做,也肯定不需要每個(gè)軟件自己去實(shí)現(xiàn)這么底層并通用的功能,所以我們通常會(huì)調(diào)用操作系統(tǒng)的函數(shù)來(lái)操作磁盤。

操作系統(tǒng)就相當(dāng)于一個(gè)中間層。

同時(shí)操作系統(tǒng)為了保護(hù)系統(tǒng),就設(shè)計(jì)了內(nèi)核態(tài)和用戶態(tài)。

當(dāng)我們電腦啟動(dòng)時(shí),CPU處于ring0狀態(tài),這時(shí)所有指令都可以執(zhí)行,從而啟動(dòng)引導(dǎo)程序,從而啟動(dòng)操作系統(tǒng),操作系統(tǒng)在啟動(dòng)時(shí),會(huì)對(duì)內(nèi)存就行劃分,劃出一部分內(nèi)存只能被操作系統(tǒng)自己使用,其他內(nèi)存可以給應(yīng)用軟件使用。

操作系統(tǒng)啟動(dòng)完了之后,CPU狀態(tài)就改為ring3,開(kāi)始運(yùn)行應(yīng)用軟件。

由于此時(shí)cpu處于ring3,所以應(yīng)用軟件想要運(yùn)行一些特殊指令肯定是不行的。

當(dāng)我們調(diào)用操作系統(tǒng)的提供的函數(shù)時(shí),操作系統(tǒng)會(huì)來(lái)執(zhí)行特權(quán)指令,可是操作系統(tǒng)不也是c語(yǔ)言寫的代碼嗎,要執(zhí)行特權(quán)指令需要ring0,如何把ring3切換成ring0呢?

系統(tǒng)中斷,其實(shí)就是一條指令,比如int 0x80。

系統(tǒng)中斷,cpu會(huì)自動(dòng)切回到ring0狀態(tài),然后執(zhí)行操作系統(tǒng)在系統(tǒng)啟動(dòng)時(shí)所設(shè)置好的代碼,而這段代碼可以根據(jù)中斷之前所執(zhí)行的代碼來(lái)繼續(xù)執(zhí)行后續(xù)邏輯,并且此時(shí)cpu已經(jīng)處于在ring0狀態(tài)了,可以正常執(zhí)行了。

而CPU處于ring0狀態(tài)就是我們說(shuō)的內(nèi)核態(tài),處于ring3狀態(tài)就是我們說(shuō)的用戶態(tài)。

總結(jié),當(dāng)我們自己寫的程序要操作磁盤時(shí),因?yàn)橐獔?zhí)行特權(quán)指令,但是CPU處于ring3,無(wú)法直接執(zhí)行特殊指令,需要調(diào)用操作系統(tǒng)函數(shù),從而會(huì)修改CPU處于ring0,從而進(jìn)去內(nèi)核態(tài)。

用戶態(tài)時(shí),CPU只能執(zhí)行一些普通指令,內(nèi)核態(tài)時(shí),CPU能執(zhí)行所有指令。

今天就聊到這,拋磚引玉,如果有不對(duì)的地方,歡迎大佬們指出。

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

    關(guān)注

    31

    文章

    5433

    瀏覽量

    124426
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11076

    瀏覽量

    217008
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11509

    瀏覽量

    213722
  • WINDOWS
    +關(guān)注

    關(guān)注

    4

    文章

    3613

    瀏覽量

    91387
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    2039

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    為什么gv7601在spi用戶態(tài)訪問(wèn)寄存器時(shí),讀取音頻寄存器讀不到信息,是要設(shè)置什么嗎?

    為什么gv7601在spi用戶態(tài)訪問(wèn)寄存器時(shí)。讀取視頻寄存器正常。讀取音頻寄存器讀不到信息。是要設(shè)置什么嗎?
    發(fā)表于 11-04 08:21

    操作系統(tǒng)為什么分內(nèi)核態(tài)用戶態(tài)?這兩者如何切換?

    操作系統(tǒng)為什么分內(nèi)核態(tài)用戶態(tài),這兩者如何切換?進(jìn)程在地址空間會(huì)劃分為哪些區(qū)域?堆和棧有什么區(qū)別?
    發(fā)表于 07-23 09:01

    請(qǐng)問(wèn)CPU與寄存器,內(nèi)核態(tài)用戶態(tài)及如何切換?

    計(jì)算機(jī)硬件系統(tǒng)由哪幾部分構(gòu)成?編程語(yǔ)言的作用及與操作系統(tǒng)和硬件的關(guān)系是什么?請(qǐng)問(wèn)CPU與寄存器,內(nèi)核態(tài)用戶態(tài)及如何切換?
    發(fā)表于 10-25 06:31

    74HC595D_3態(tài)8位移位寄存器

    74HC595是一顆高速CMOS 8位3態(tài)移位寄存器/輸出鎖存芯片,采用CMOS硅柵工藝。該器件包含一個(gè)8位串行輸入與并行輸出移位寄存器并提供一個(gè)8位D型存儲(chǔ)
    發(fā)表于 07-12 11:54 ?14次下載

    Linux內(nèi)核用戶態(tài)是如何睡眠的

    clock_nanosleep系統(tǒng)調(diào)用來(lái)進(jìn)行睡眠(也就是說(shuō)用戶態(tài)任務(wù)睡眠需要調(diào)用系統(tǒng)調(diào)用陷入內(nèi)核)。 下面我們來(lái)研究下clock_nanosleep的實(shí)現(xiàn)(這里集中睡眠的實(shí)現(xiàn),先忽略
    的頭像 發(fā)表于 08-16 15:06 ?2207次閱讀

    8位通用移位寄存器;三態(tài)-74HC299

    8位通用移位寄存器;三態(tài)-74HC299
    發(fā)表于 02-16 20:28 ?1次下載
    8位通用移位<b class='flag-5'>寄存器</b>;三<b class='flag-5'>態(tài)</b>-74HC299

    20 位寄存器驅(qū)動(dòng),帶反向寄存器使能;三態(tài)-74ALVC16836A

    20 位寄存器驅(qū)動(dòng),帶反向寄存器使能;三態(tài)-74ALVC16836A
    發(fā)表于 02-21 18:51 ?0次下載
    20 位<b class='flag-5'>寄存器</b>驅(qū)動(dòng)<b class='flag-5'>器</b>,帶反向<b class='flag-5'>寄存器</b>使能;三<b class='flag-5'>態(tài)</b>-74ALVC16836A

    16位總線收發(fā)/寄存器;三態(tài)-74ALVCH16646

    16位總線收發(fā)/寄存器;三態(tài)-74ALVCH16646
    發(fā)表于 02-21 18:52 ?0次下載
    16位總線收發(fā)<b class='flag-5'>器</b>/<b class='flag-5'>寄存器</b>;三<b class='flag-5'>態(tài)</b>-74ALVCH16646

    18 位寄存器驅(qū)動(dòng),帶反向寄存器使能;三態(tài)-74ALVC16834A

    18 位寄存器驅(qū)動(dòng),帶反向寄存器使能;三態(tài)-74ALVC16834A
    發(fā)表于 02-23 19:07 ?0次下載
    18 位<b class='flag-5'>寄存器</b>驅(qū)動(dòng)<b class='flag-5'>器</b>,帶反向<b class='flag-5'>寄存器</b>使能;三<b class='flag-5'>態(tài)</b>-74ALVC16834A

    具有三態(tài)輸出寄存器的 SNx4HC595 8位移位寄存器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《具有三態(tài)輸出寄存器的 SNx4HC595 8位移位寄存器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 04-30 10:22 ?1次下載
    具有三<b class='flag-5'>態(tài)</b>輸出<b class='flag-5'>寄存器</b>的 SNx4HC595 8位移位<b class='flag-5'>寄存器</b>數(shù)據(jù)表

    具有三態(tài)輸出寄存器的 SN74HCT595-Q1 汽車類8位移位寄存器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《具有三態(tài)輸出寄存器的 SN74HCT595-Q1 汽車類8位移位寄存器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-11 10:59 ?0次下載
    具有三<b class='flag-5'>態(tài)</b>輸出<b class='flag-5'>寄存器</b>的 SN74HCT595-Q1 汽車類8位移位<b class='flag-5'>寄存器</b>數(shù)據(jù)表

    八路總線收發(fā)/寄存器3態(tài) 數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《八路總線收發(fā)/寄存器3態(tài) 數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-13 10:28 ?0次下載
    八路總線收發(fā)<b class='flag-5'>器</b>/<b class='flag-5'>寄存器</b>3<b class='flag-5'>態(tài)</b> 數(shù)據(jù)表

    帶3態(tài)輸出寄存器的8位移位寄存器SNx4AHCT595數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《帶3態(tài)輸出寄存器的8位移位寄存器SNx4AHCT595數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-20 11:18 ?0次下載
    帶3<b class='flag-5'>態(tài)</b>輸出<b class='flag-5'>寄存器</b>的8位移位<b class='flag-5'>寄存器</b>SNx4AHCT595數(shù)據(jù)表

    帶3態(tài)輸出的16位收發(fā)寄存器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《帶3態(tài)輸出的16位收發(fā)寄存器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-22 11:14 ?0次下載
    帶3<b class='flag-5'>態(tài)</b>輸出的16位收發(fā)<b class='flag-5'>器</b>和<b class='flag-5'>寄存器</b>數(shù)據(jù)表

    帶3態(tài)輸出的16位總線收發(fā)寄存器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《帶3態(tài)輸出的16位總線收發(fā)寄存器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-24 09:09 ?0次下載
    帶3<b class='flag-5'>態(tài)</b>輸出的16位總線收發(fā)<b class='flag-5'>器</b>和<b class='flag-5'>寄存器</b>數(shù)據(jù)表