核心態是指乙個特殊的程序,還是指程序的一種特殊狀態?

時間 2021-05-11 23:29:29

1樓:

因為預設只有作業系統是被機器信任的,使用者編寫的第三方應用程式是不被信任的,當使用者應用程式請求作業系統關鍵部件時,比如請求讀寫磁碟,操縱硬體裝置,必須通過核心發起直接的請求,所以作業系統核心為方便使用者程式使用,提供了一些系統呼叫函式,這些函式首先需要陷入核心,進入核心態,其實就是軟中斷。從使用者發起請求到真正去操作那個硬體之間,需要核心的銜接過程。包括程序之間的切換排程也是由核心提供的排程器來完成的,核心的排程器才是真正決定分不分CPU給你,使用者應用程式中也可以寫自己的排程器,但是終究只是在核心分配給自己的那個一小片時間片內做的自己的排程工作,並算不上真正意義上的排程。

所以才會有核心執行緒的說法,使用者執行緒得繫結到核心執行緒,才能體現執行緒所提供的輕量級的這個主要優勢。程序是資源分配的基本單位,執行緒才是CPU排程的基本單位。當然是針對支援多執行緒的機器而言的。

2樓:

被這個問題困擾了一天,直到看到《深入理解計算機系統》1.7.1程序小節的插圖。

示例中有兩個併發的程序Shell和Hello,在A處「向量分解」,我們發現它即發生了模式切換又發生了程序切換(上下文切換);在B處,我們發現它只發生了模式切換。

「作業系統的程序切換和CPU的模式切換並沒有什麼關係,發生模式切換可以不改變正處於執行態的程序狀態,這種情況下,儲存上下文環境和以後恢復上下文環境只需要很少的開銷。但是,如果改變正處於執行態的程序狀態到另乙個狀態(就緒、阻塞等),則作業系統必須使其環境產生實質性的變化」——《作業系統:精髓與設計原理》

3樓:徐小維

執行緒還是同乙個執行緒(題主說程序可能不太準確),只是處理器的狀態發生了變化,效果就是獲得了一些特權,例如可以訪問一些使用者態不能訪問的空間,可以執行一些使用者態不能執行的指令等。

4樓:有鳳來儀表非凡

簡單說下:

作業系統向下管理系統硬體資源,向上遮蔽硬體差異,提供資源使用介面,也就是你說的read等api.

作業系統管理硬體需要超級許可權和特權指令,這些指令只能在核心態使用,針對arm來說,就是supervisor mode。使用者呼叫系統呼叫,實際上就是呼叫svc指令進入了arm的 supervisor mode。

從程序角度來看,程序相當於引用了乙個庫函式,特殊的地方在於,這個函式會讓你進入核心態。程序進入核心態,會切換處理器狀態,從而有許可權獲取系統資源,如記憶體,檔案等。

打個簡單的比方,就是你去公安局辦戶口。你啟動了乙個叫辦a戶口的程序,然後呼叫派出所的戶口api,派出所會檢查程序的許可權和引數,沒問題就會進入公安局的內部流程,這個程序雖然脫離了你使用者的掌控,但是還是辦戶口這個程序。

5樓:sonald

核心代表程序執行某些功能。出於安全的考慮,有些活程序不讓碰,你告訴核心(系統呼叫),核心幹完返回結果給你。所以邏輯上看,系統呼叫只不過就是乙個函式呼叫。

於是,不區分核心態和使用者態的作業系統也是完全可行的(都在乙個cpu執行級)。

6樓:「已登出」

在大部分情況下,我們認為核心態是一種CPU的特權態,這個特權態下,CPU可以執行這個特權態才允許執行的指令,訪問這個特權態才執行訪問的資源。這和當前的程序無關。

OS通過控制不同的特權態來控制資源分配。一般有兩種方法切換特權態,一種是特殊的指令,比如x86的軟中斷指令,或者大部分RISC系統的系統呼叫指令(比如SC),第二種是執行異常或者外部中斷。發生切換後,現在到底是哪個程序,其實是無所謂的。

現在說說現代LINUX如何定義執行緒和程序。我傾向於這樣解釋執行緒和程序:

執行緒本質就是堆疊,當一段程式在執行,能代表它的是他的過去和現在。"過去"在堆疊中,"現在"則是CPU的所有暫存器,如果我們要掛起乙個執行緒,我們把暫存器也儲存到堆疊中,我們就具有它的所有狀態,可以隨時恢復它。這是執行緒。

當我們切換執行緒的時候,同時切換它的位址空間(通過修改MMU即可),則我們認為發生了程序切換。所以程序的本質是位址空間,我們可以認為位址空間決定了程序是否發生切換。

回到最初的問題,當CPU的特權級剛剛發生切換的時候,顯然和程序,執行緒的切換是無關的,但之後排程器是否切換執行緒和程序,則和具體的情形相關了。

乙個人所說的「自我」是指什麼?

哩叮說 覺者問題好複雜,我也挑戰下。這個意識和記憶是完全分開的嘛?1互換胳膊,我覺得對自我影響比較小,容器的一小部分換了,適應一下下就好 2整個身體都換了,我覺得對自我一開始會有蠻大影響,因為容器換了,需要一定時間適應的。3互換意識,相當於把意識換到另乙個容器裡了,也就是主元神去了另乙個容器,也需要...

說乙個遊戲手感好,具體是指什麼?

大胖居正 我認為,遊戲手感就是及時給予玩家預期的反饋比如,我按下閃避鍵,遊戲裡的人物會在及時毫秒內做出反應,能達到玩家的目的,這感覺就好。但如果遊戲為了貼近真實,先要做個0.5秒屈膝蹬腿,那玩家就會感到粘滯。還有,這個人物模型在這,我操縱人物一刀砍過去,期望是能看到並扣血,但是敵人的模型和受擊區域並...

紅酒中的男爵 女爵是指乙個「系列」嗎?

wxsdzxj 不是,以前男爵和女爵是一家,曾經是波爾多的波雅克村的碧尚酒莊。為了避免子女因爭奪財產而影響酒莊的經營,有個老莊主死前將五分之二的酒莊財產分給2位兒子,剩下的分給3位女兒,就是如今我們看到的碧尚男爵酒莊和碧尚女爵酒莊。不能說乙個系列,應該說一母同胞的兄弟與姐妹超二級酒莊。由於後期發展,...