国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺析從寄存器到用戶態與內核態

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

掃碼添加小助手

加入工程師交流群

寄存器CPU內部重要的組成部分,寄存器內部由N個觸發器組成,每個觸發器可以保存1位二進制數,所以16位寄存器可以保存16個bit。

CPU內部一般有不同類型的多個寄存器,我們需要使用CPU對應的機器指令來操作這些寄存器,當然像內存、磁盤這些也是通過機器指令來操作的。

而CPU為了安全性,比如x86的CPU將機器指令分為了一般指令和特權指令,比如操作磁盤的指令就是特權指令,只有CPU處于某種特殊狀態下才能執行特權指令。

x86 CPU利用內部一個特殊寄存器,用來標記此時的CPU能不能執行特權指令,這個特殊寄存器中可以存四種狀態,ring0、ring1、ring2、ring3。

Windows、Linux操作系統中只用了ring0和ring3兩種狀態,如果處于ring0,表示CPU可以執行所有指令,包括特權指令,如果處于ring3,表示CPU不能執行特權指令,ring0等級高,ring3等級低。

不管是操作系統還是運行在操作系統之上的軟件,都是用高級語言開發出來的,最終都需要翻譯為機器指令。

所以本質上來說,我們自己用c或java開發的軟件,只要翻譯成了機器指令,也是可以直接操作寄存器的,操作磁盤的。

但是我們不會這么來做,也肯定不需要每個軟件自己去實現這么底層并通用的功能,所以我們通常會調用操作系統的函數來操作磁盤。

操作系統就相當于一個中間層。

同時操作系統為了保護系統,就設計了內核態和用戶態。

當我們電腦啟動時,CPU處于ring0狀態,這時所有指令都可以執行,從而啟動引導程序,從而啟動操作系統,操作系統在啟動時,會對內存就行劃分,劃出一部分內存只能被操作系統自己使用,其他內存可以給應用軟件使用。

操作系統啟動完了之后,CPU狀態就改為ring3,開始運行應用軟件。

由于此時cpu處于ring3,所以應用軟件想要運行一些特殊指令肯定是不行的。

當我們調用操作系統的提供的函數時,操作系統會來執行特權指令,可是操作系統不也是c語言寫的代碼嗎,要執行特權指令需要ring0,如何把ring3切換成ring0呢?

系統中斷,其實就是一條指令,比如int 0x80。

系統中斷,cpu會自動切回到ring0狀態,然后執行操作系統在系統啟動時所設置好的代碼,而這段代碼可以根據中斷之前所執行的代碼來繼續執行后續邏輯,并且此時cpu已經處于在ring0狀態了,可以正常執行了。

而CPU處于ring0狀態就是我們說的內核態,處于ring3狀態就是我們說的用戶態。

總結,當我們自己寫的程序要操作磁盤時,因為要執行特權指令,但是CPU處于ring3,無法直接執行特殊指令,需要調用操作系統函數,從而會修改CPU處于ring0,從而進去內核態。

用戶態時,CPU只能執行一些普通指令,內核態時,CPU能執行所有指令。

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5608

    瀏覽量

    129966
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11277

    瀏覽量

    224944
  • Linux
    +關注

    關注

    88

    文章

    11758

    瀏覽量

    219006
  • WINDOWS
    +關注

    關注

    4

    文章

    3702

    瀏覽量

    94004
  • 觸發器
    +關注

    關注

    14

    文章

    2056

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    為什么gv7601在spi用戶訪問寄存器時,讀取音頻寄存器讀不到信息,是要設置什么嗎?

    為什么gv7601在spi用戶訪問寄存器時。讀取視頻寄存器正常。讀取音頻寄存器讀不到信息。是要設置什么嗎?
    發表于 11-04 08:21

    操作系統為什么分內核用戶?這兩者如何切換?

    操作系統為什么分內核用戶,這兩者如何切換?進程在地址空間會劃分為哪些區域?堆和棧有什么區別?
    發表于 07-23 09:01

    請問CPU與寄存器內核用戶及如何切換?

    計算機硬件系統由哪幾部分構成?編程語言的作用及與操作系統和硬件的關系是什么?請問CPU與寄存器內核用戶及如何切換?
    發表于 10-25 06:31

    74HC595D_38位移位寄存器

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

    Linux內核用戶是如何睡眠的

    clock_nanosleep系統調用來進行睡眠(也就是說用戶任務睡眠需要調用系統調用陷入內核)。 下面我們來研究下clock_nanosleep的實現(這里集中睡眠的實現,先忽略
    的頭像 發表于 08-16 15:06 ?2753次閱讀

    8位通用移位寄存器;三-74HC299

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

    20 位寄存器驅動,帶反向寄存器使能;三-74ALVC16836A

    20 位寄存器驅動,帶反向寄存器使能;三-74ALVC16836A
    發表于 02-21 18:51 ?0次下載
    20 位<b class='flag-5'>寄存器</b>驅動<b class='flag-5'>器</b>,帶反向<b class='flag-5'>寄存器</b>使能;三<b class='flag-5'>態</b>-74ALVC16836A

    16位總線收發/寄存器;三-74ALVCH16646

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

    18 位寄存器驅動,帶反向寄存器使能;三-74ALVC16834A

    18 位寄存器驅動,帶反向寄存器使能;三-74ALVC16834A
    發表于 02-23 19:07 ?0次下載
    18 位<b class='flag-5'>寄存器</b>驅動<b class='flag-5'>器</b>,帶反向<b class='flag-5'>寄存器</b>使能;三<b class='flag-5'>態</b>-74ALVC16834A

    具有三輸出寄存器的 SNx4HC595 8位移位寄存器數據表

    電子發燒友網站提供《具有三輸出寄存器的 SNx4HC595 8位移位寄存器數據表.pdf》資料免費下載
    發表于 04-30 10:22 ?1次下載
    具有三<b class='flag-5'>態</b>輸出<b class='flag-5'>寄存器</b>的 SNx4HC595 8位移位<b class='flag-5'>寄存器</b>數據表

    具有三輸出寄存器的 SN74HCT595-Q1 汽車類8位移位寄存器數據表

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

    八路總線收發/寄存器3 數據表

    電子發燒友網站提供《八路總線收發/寄存器3 數據表.pdf》資料免費下載
    發表于 05-13 10:28 ?0次下載
    八路總線收發<b class='flag-5'>器</b>/<b class='flag-5'>寄存器</b>3<b class='flag-5'>態</b> 數據表

    帶3輸出寄存器的8位移位寄存器SNx4AHCT595數據表

    電子發燒友網站提供《帶3輸出寄存器的8位移位寄存器SNx4AHCT595數據表.pdf》資料免費下載
    發表于 05-20 11:18 ?0次下載
    帶3<b class='flag-5'>態</b>輸出<b class='flag-5'>寄存器</b>的8位移位<b class='flag-5'>寄存器</b>SNx4AHCT595數據表

    帶3輸出的16位收發寄存器數據表

    電子發燒友網站提供《帶3輸出的16位收發寄存器數據表.pdf》資料免費下載
    發表于 05-22 11:14 ?0次下載
    帶3<b class='flag-5'>態</b>輸出的16位收發<b class='flag-5'>器</b>和<b class='flag-5'>寄存器</b>數據表

    帶3輸出的16位總線收發寄存器數據表

    電子發燒友網站提供《帶3輸出的16位總線收發寄存器數據表.pdf》資料免費下載
    發表于 05-24 09:09 ?0次下載
    帶3<b class='flag-5'>態</b>輸出的16位總線收發<b class='flag-5'>器</b>和<b class='flag-5'>寄存器</b>數據表