2017-06-14 73 views
3

當我們使用術語「用戶空間」,我們的意思是在物理內存中包含用戶進程的代碼和數據的區域,還是我們的意思是3 GB,每個進程擁有虛擬內存?是否術語「用戶空間」和「內核空間」指的是物理內存?

而且我們使用術語「內核空間」,是指物理內存中包含內核的代碼和數據的區域,還是我們的意思是每個進程擁有1GB的虛擬內存?

+1

這取決於使用術語的上下文。但是,通常,當在現代操作系統的環境中提及「內存」時,就意味着虛擬地址空間。 –

+1

一般虛擬內存爲@CodyGray說。通常,這些術語並不是指內存的數量,而是指權限 - 內存保護和內核/進程保護。 https://en.wikipedia.org/wiki/User_space相當不錯。 –

+0

[內核空間和用戶空間有什麼不同?](https://stackoverflow.com/questions/5957570/what-is-the-difference-between-thekernel-space-and-用戶空間) –

回答

-1

您是部分正確系統內存在這兩種類型的存儲器被劃分:

用戶空間是其中用戶進程運行系統存儲器的一部分。這與內核空間形成對比,內核空間是內核執行並提供服務的那部分內存。

可以以極高的速度訪問(即讀取和寫入)以專用RAM(隨機存取存儲器)VLSI(超大規模集成電路)半導體芯片組成的存儲器的內容,但僅臨時保留

內核空間是構成計算機操作系統核心的內存。它實際上是一個過程,它控制所有其他過程,並且完全控制系統上發生的所有事情。這包括HW(管理設備)和SW(個人用戶進程的管理系統的資源,用戶空間內並防止它們彼此干涉。它基本上在OS上運行。

+3

這個恕我直通並沒有真正回答問題_「術語」用戶空間「和」內核空間「是指物理內存嗎?」_ –

3

術語「內核空間」和「用戶空間內核空間‘是指虛擬內存的每個進程都擁有1GB」如果你說沒有具體提及到虛擬或物理內存。概念’,它仍然是一樣指的是內核代碼和數據駐留在物理因爲1GB的虛擬內存映射到持有內核代碼和數據的物理內存。

我們使用術語'核心空間'和'用戶空間'來指代誰有權訪問哪部分內存空間'內核空間'就是指到剛剛內核訪問,而「用戶空間」將被參照存儲器兩者相應的用戶進程和內核訪問該存儲器。

0

「用戶空間」和「內核空間」指的邏輯地址範圍。

內核空間是所有流程是相同的,而用戶空間是唯一的每個過程。但是,用戶地址空間可以將映射共享到物理內存。

從理論上講,兩種方法可能具有相同的用戶空間,但是這並不能夠付諸實踐。

0

過程概念方面:

我們可以說,一個進程可以在「內核空間」或「用戶空間」,而不是兩個同時運行。通常一個進程在'用戶空間'中運行。如果進程需要訪問受保護的資源,它應該跳進「內核空間」,因爲只有內核纔有權訪問受保護資源。要做到這一點,我們必須使用系統調用。

地址空間方面:

我們可以說,(虛擬)內存可以在「內核(地址)空間」或「用戶(地址)空間」。在一個32位的普通linux系統中,用戶地址空間範圍是[0,0xbfffffff],內核地址空間是[0xc0000000, 0xffffffff]

1

它並沒有真正指代地址空間。

用戶空間:處理器在非特權上下文中執行某些操作。

內核空間:處理器在特權上下文中執行某些操作。

在特權上下文中,一切都是允許的,在無特權的上下文中,某些處理器函數是有限的。這是用硬件實現的,所以處理器必須至少支持兩種linux模式。

所以要從用戶空間切換到內核空間,您需要切換上下文(通過系統調用)。

您可以在內核空間內分配虛擬內存(vmalloc)以及物理內存(kmalloc),因此它不直接與內存相關。

在用戶空間中,您只能分配虛擬內存(vmalloc = malloc)。

相關問題