日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux存储保护,谈谈Linux中的存储保护

發布時間:2023/12/1 linux 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux存储保护,谈谈Linux中的存储保护 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

談談Linux中的存儲保護

以下討論的內容是以i386平臺為基礎的

Linux將4G的地址劃分為用戶空間和內核空間兩部分。在Linux內核的低版本中(2。0。X),通常0-3G為用戶空間,3G-4G為內核空間。這個分界點是可以可以改動的。

正是這個分界點的存在,限制了Linux可用的最大內存為2G.而且要通過重編內核,調整這個分界點才能達到。

實際上還可以有更好的方法來解決這個問題。由于內核空間與用戶空間互不重合,所以可以用段機制提供的保護功能來保護內核級代碼。以下為2。0。X的部分代碼:

/usr/src/linux/arch/i386/kernel/entry.S

A: .quad 0xc0c39a000000ffff /* 0x10 kernel 1GB code at 0xC0000000 *

B: .quad 0xc0c392000000ffff /* 0x18 kernel 1GB data at 0xC0000000 *

C: .quad 0x00cbfa000000ffff /* 0x23 user 3GB code at 0x00000000 *

D: .quad 0x00cbf2000000ffff /* 0x2b user 3GB data at 0x00000000 *

A,B為內核代碼段及數據段的描述符。C,D為用戶代碼及數據段的描述符從以上,我們可以清楚的看到A,B的特權級為0,而C,D的特權級為3。當內核存取用戶空間的內容時,他借助于fs寄存器,同過將FS寄存器的內容置為D來達到訪問用戶空間的目的。

2。2。X版的 內核對此進行了改動。這樣內核空間擴張到了4G,所以可以直接進行拷貝了

.quad 0x00cf9a000000ffff /* 0x10 kernel 4GB code at 0x00000000 *

.quad 0x00cf92000000ffff /* 0x18 kernel 4GB data at 0x00000000 *

.quad 0x00cffa000000ffff /* 0x23 user 4GB code at 0x00000000 *

.quad 0x00cff2000000ffff /* 0x2b user 4GB data at 0x00000000 *

從表面上看內核的基地址變為了0,但實際上,內核通常仍在虛址3G以上。其中奧妙在與 不同的連接描述文件:

2。2。X:

. = 0xC0000000 + 0x100000;

_text = .; /* Text and read-only data */

.text : {

*(.text)

*(.fixup)

*(.gnu.warning)

} = 0x9090

.text.lock : { *(.text.lock) } /* out-of-line lock text */

.rodata : { *(.rodata) }

.kstrtab : { *(.kstrtab) }

。。。。

2。0。X:

faint,2。0內核被刪除了。 :(

不管怎莫說,請大家相信我,2。0。X的起址為0x100000。這樣一來,二者就相等了。都是0xC0000000 + 0x100000

用戶空間在2。2。X中從直觀上變為0-4G,讓人迷惑:其不是可以直接訪問內核了?其實不然, 同過使用頁機制提供的保護,阻止了用戶程序訪問內核空間。

這樣,存取用戶空間實際上已不需要FS,GS的支持。但在內核中仍保留set_fs(X)等宏上你設的值用來驗證隨后的操作是否合適。是否超過設定的X。此處X不再是一個段描述符,而是一個具體的值。

此處就有一個陷阱:如果你將Set_fs的值設置為Kernel_DS,而沒有將其該回去,當用戶通過系統調用將一個Buffer的地址(應該在用戶空間)設置為一個內核空間,而內核在訪問該地址前認為默認當前的閥值仍為User_DS,事情就大大?了。

總結

以上是生活随笔為你收集整理的Linux存储保护,谈谈Linux中的存储保护的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。