2017-03-28 35 views
2

爲什麼我們需要在內核空間和用戶空間之間分離,即使我們在用戶空間創建一個進程,每個數據結構,每個內存資源都由內核管理?爲什麼我們需要這麼大的建築?爲什麼我們需要內核空間?

所有的頁表,上下文切換等由內核管理,那麼爲什麼用戶空間?我們能不能只使用一個空間並開發所有的東西?

這個問題聽起來很奇怪,但我想真正理解爲什麼需要它?如果我必須設計一個全新的操作系統,而且我不在內核空間和用戶空間之間進行這種劃分,那麼會出現什麼問題?

感謝

回答

1

如果內核空間與用戶空間然後任何人之間或不同的用戶進程之間沒有保護可以寫一些代碼,用於將有意或無意地修改在內核空間或存儲器或者存儲器中的另一個用戶進程的空間。看看缺乏這種保護的老式MS-DOS。

+0

謝謝我也需要一個例子。 :) – anupamD

1

分離的空間是不是絕對必要的,但如果你需要保護OS結構從用戶代碼,以防止他們的錯誤或不好操作,那麼你需要某種形式的保護。否則,如此糟糕的操作將會破壞操作系統內部的一致性,這通常是你不想要的。

+0

感謝讓得到它:) – anupamD

1

內核空間和用戶空間是關於系統保護,使系統更強大。內核空間是特權模式,可以執行某些用戶空間無法執行的操作(如直接與硬件/系統資源交互)。所有與硬件的用戶空間交互只能經過內核空間。

所以,一個錯字用戶代碼不能導致系統崩潰/無法使系統不穩定。沒有這種分離,寫錯的用戶代碼甚至可能會使系統崩潰。

+0

感謝@UKAgr得到了你的觀點:) – anupamD

2

你的問題是不奇怪的話 - 是完全正確的,你的直覺,即內核空間可能代表一個不必要的開銷。事實上,許多操作系統都沒有這個開銷。你的操作系統很可能也不會有。

了額外的複雜性的基本原理是這樣的:

  1. 我們要處理/任務的分離。 我們想確保一個做壞事的任務不會影響另一個任務。這要求任務在各自的孤立空間中執行。

  2. 我們希望共享的硬件控制器類似的保護。

  3. 的任務無法建立自己的界限;如果是這樣的話,一項行爲不當的行爲可能會故意違反規定。所以我們需要一個比任務擁有更高權限的第三方,並且有你的內核(或特權)空間。

如果額外的內核空間和分離的代價太高,無論是在規模上還是在計算開銷上,操作系統都不具備這些功能。許多實時或嵌入式系統在單一空間中運行,具有與您所描述的完全相同的特權級別(特權級別有時稱爲保護環)。

相關問題