精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C語言與操作系統(tǒng)的內存布局

開發(fā) 前端
C語言適合寫操作系統(tǒng),我覺得跟丹尼斯-里奇發(fā)明它的目的就是為了寫Unix有關:不好用的地方已經(jīng)被優(yōu)化過了。

?C語言之所以適合寫操作系統(tǒng),就在于它的內存布局簡單:

1,所有的全局變量都被常量初始化,

2,不需要運行時的狀態(tài),

3,也不需要在main()函數(shù)之前運行額外的初始化代碼。

操作系統(tǒng)的初始化是很復雜的。

在C語言寫成的內核main()函數(shù)運行之前,操作系統(tǒng)要運行一段很復雜的匯編代碼,以完成內核的內存初始化。

這段匯編代碼包含著很多重要的內核全局數(shù)據(jù),它是由內核作者精心定制的,沒法由編譯器自動生成。

對于內核程序員來說,編譯器做的事越少越好,但是又不能像匯編器那么少?

C語言適合寫操作系統(tǒng),我覺得跟丹尼斯-里奇發(fā)明它的目的就是為了寫Unix有關:不好用的地方已經(jīng)被優(yōu)化過了。

1970年,丹尼斯-里奇怎么一邊改unix系統(tǒng)的代碼、一邊改cc編譯器的代碼的咱就不回憶了。

這里說說C語言和操作系統(tǒng)的內存布局。

1.C語言的內存布局。

C語言編譯連接之后的可執(zhí)行文件,分為:

1) 代碼段(.text),

2) 只讀數(shù)據(jù)段(.rodata),

3) 數(shù)據(jù)段(.data),

4) 堆 (heap),

5) 棧 (stack),

其中需要存儲在文件里的只有前3個,

后2個在進程運行期間是動態(tài)變化的臨時數(shù)據(jù),并不需要存儲在文件里。

代碼段的權限是只讀+可執(zhí)行,

只讀數(shù)據(jù)段的權限是只讀,

數(shù)據(jù)段、堆、棧的權限都是可讀可寫的,但不能運行。

如果系統(tǒng)內核發(fā)現(xiàn)了進程的內存權限是錯誤的,那么就是段錯誤:信號是SIGSEGV。

*("hello") = 1;

這種代碼肯定是“段錯誤”的,因為常量字符串位于只讀數(shù)據(jù)段,它的內容是不可寫的。

通過緩沖區(qū)溢出來覆蓋棧的返回地址的黑客代碼,也會被系統(tǒng)內核發(fā)現(xiàn)運行地址不在代碼段,所以也是段錯誤。

2.內核的內存布局。

內核的內存布局,包含這幾個重要的全局數(shù)據(jù):

1)內核頁表

它是內核的虛擬內存與物理內存的映射。

在開啟分頁機制之前,就要設置好內核頁表的前幾頁:

至少要把內核代碼所在的內存空間映射到頁表里,否則開啟分頁機制時就直接出錯了。

在32位機上,它是由頁目錄-頁表構成的2級數(shù)組:

頁目錄里的每一項記錄每個頁表的物理地址,頁表里的每一項記錄每個內存頁的物理地址。

在64位機上頁表的結構更為復雜,intel手冊上有:我沒仔細看過,有興趣的可以看看。

1個內存頁是4096字節(jié),所以物理地址的最低12位全是0,用來記錄每個頁的讀寫權限。

頁目錄里每項的最低12位,用于記錄它對應的整個頁表的讀寫權限。

1個頁表記錄1024個頁,每個頁4096字節(jié),所以1個頁表管理4M的物理內存。

2)中斷向量表

它存放各種硬件中斷、以及int 0x80軟件中斷的處理函數(shù),也叫中斷服務例程(irq)。

int 0x80軟件中斷,就是Linux系統(tǒng)調用的中斷號。

當然,在64位機上,直接使用syscall匯編指令就行。

syscall的軟件中斷機制,是intel在64位上又新造的一種進入CPU ring0特權級的指令,使用方式跟之前的int指令不大一樣。

我懷疑intel的CPU研發(fā)也是有KPI的,怪不得Linus大牛也經(jīng)常吐槽intel的CPU設計。

一個版本加一個新的指令,純屬給系統(tǒng)軟件的開發(fā)者找難題?

中斷向量表,也是個256項的數(shù)組,每項都是某個中斷的函數(shù)指針。

在中斷被觸發(fā)之后,CPU就是靠這個數(shù)組去查找對應的中斷處理函數(shù)的。

3)全局描述符表

它描述的是內核的內存布局,每項8個字節(jié),共256項。

但實際上,只需要使用前5項就行:

0x0,不使用,

0x8,內核代碼段,

0x10,內核數(shù)據(jù)段,內核堆棧段,它們2個的權限一樣,可以共用一項。

0x20,任務門的描述項,

0x28,局部描述符表的描述項。

siska內核demo的內存布局

因為每項都是8字節(jié),所以地址都是8的倍數(shù)。

4)局部描述符表

它是用于進程的,進程因為跟內核的權限不同,所以進程的段選擇符都在局部描述符表里:

內核的段選擇符是0x8,進程的是0xf。

段寄存器CS、DS、SS,到了保護模式下都成了段選擇符,真正的內存地址在GDT表里。

在16位的實模式下,它們才存儲真正的段的內存地址。

5)任務門

CPU把每個進程看做一個任務,所以要切換進程時需要任務門的描述結構。

它是104個字節(jié)。

但是,Linux系統(tǒng)的進程切換是軟切換:任務門的描述結構只在系統(tǒng)初始化時加載一次,具體的進程切換時只切換頁表和內核棧,然后就可以騙過CPU了?

重新加載任務門的時間消耗比較大,而軟切換的時間消耗比較小。

intel的這個設計,也是不受Linus大牛待見的設計之一?

6)系統(tǒng)調用表

它也是一個大數(shù)組,它的每一項也是函數(shù)指針。

系統(tǒng)調用的入口是int 0x80軟件中斷(64位機上是syscall指令)。

進入內核之后,每個號碼對應一個系統(tǒng)調用。

open()、close()、write()、read(),這些系統(tǒng)調用都有各自的號碼,這些號碼就是系統(tǒng)調用表的數(shù)組索引。

如果open()的系統(tǒng)調用號碼是i,那么open()在內核里實際運行的就是這行代碼:

syscall_table[i]();

7)物理內存的管理數(shù)組

物理內存的管理結構,是一個很大的一維數(shù)組。

假設物理內存有4G,1個內存頁是4K,那么這個數(shù)組的元素個數(shù)就是1024x1024,1M。

數(shù)組的每一項,記錄1個物理內存頁的狀態(tài)。

如果每項是4個字節(jié)的話,那么管理效率就是:(4096-4) / 4096。

管理數(shù)據(jù)所占的字節(jié)數(shù)越多,對物理內存的浪費越大。

get_free_pages()函數(shù),就是通過查看這個數(shù)組來分配物理內存頁的。

因為內核是一個高并發(fā)環(huán)境,這個管理結構里必須要有自旋鎖,以控制多個CPU的并發(fā)訪問。

自旋鎖+引用計數(shù)就至少8字節(jié),所以這個數(shù)組也是非常浪費內存的。

如果多個線程之間要共享內存,那么只要把同一個物理內存頁映射到這幾個線程的頁表里,然后增加物理內存頁的引用計數(shù)就行:

這就是共享內存在內核里的本質。

8)進程的頁表和內核棧

進程的頁表和內核棧,不屬于內核的全局數(shù)據(jù),而是附屬于進程的局部數(shù)據(jù)。

內核在調度某個進程的時候,就把頁目錄基地址寄存器cr3和棧寄存器rsp切換成這個進程的頁表和內核棧。

不同的進程之間,之所以有各自的虛擬內存空間,互相不干擾,就是因為每個進程的頁表不一樣。

要在進程之間共享內存,也跟線程之間共享內存一樣,把同一個物理內存頁映射到它們各自的頁表就行。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2022-11-01 11:22:38

2022-11-28 07:21:53

操作系統(tǒng)內存管理

2021-06-11 07:26:16

操作系統(tǒng)內存管理Cpu

2022-06-26 00:24:57

C語言操作系統(tǒng)語言

2025-01-06 08:28:45

C語言操作系統(tǒng)程序

2009-08-17 08:32:56

Linux操作系統(tǒng)內存管理Linux

2021-06-22 09:09:34

V語言Vinix操作系統(tǒng)

2010-04-20 14:17:21

Unix操作系統(tǒng)

2023-11-06 08:47:52

操作系統(tǒng)物理內存

2021-03-28 13:54:31

操作系統(tǒng)內存管理

2012-08-13 10:19:03

IBMdW

2018-08-09 16:12:59

操作系統(tǒng)內存分配

2010-04-22 15:14:12

Aix操作系統(tǒng)

2012-05-04 09:49:34

進程

2014-07-29 10:12:38

LinuxC語言編程

2010-04-15 14:40:26

Unix操作系統(tǒng)

2009-12-23 17:47:15

Linux操作系統(tǒng)

2010-04-19 18:13:48

Unix操作系統(tǒng)

2009-12-09 17:25:19

Linux操作系統(tǒng)

2019-07-05 10:04:10

操作系統(tǒng)Android OS
點贊
收藏

51CTO技術棧公眾號

亚洲精品推荐| 久久久99精品视频| 乱妇乱女熟妇熟女网站| 国产一级一级国产| 一级毛片精品毛片| 国产午夜亚洲精品羞羞网站| 久久久久久免费精品| 少妇精品久久久久久久久久| 国产精久久久久久| 97久久精品一区二区三区的观看方式 | 久草手机视频在线观看| 绿色成人影院| 懂色av一区二区三区免费观看| 最近2019中文字幕大全第二页| 亚洲精品无码久久久久久| 成人毛片视频免费看| 五月开心六月丁香综合色啪 | 亚洲AV无码成人精品一区| 中文字幕第四页| 卡通动漫精品一区二区三区| 一区二区三区欧美日韩| 91天堂在线观看| 九九热视频在线免费观看| 一区中文字幕| 欧美三级日韩在线| 亚洲精品一区二区三区蜜桃久| 欧美精品韩国精品| 亚洲国产一成人久久精品| 欧美丰满少妇xxxxx高潮对白| 亚洲欧美日韩国产成人综合一二三区| 丰满人妻妇伦又伦精品国产| 日本人妖一区二区| 中文字幕亚洲欧美在线| 在线看的黄色网址| 香蕉视频在线播放| 成人综合久久| 欧美视频在线不卡| 中国一区二区三区| 国产理论视频在线观看| 国产精品久久久久无码av| 亚洲精品xxxx| 日韩精品一区二区三区色欲av| 国产一级片在线| 美国三级日本三级久久99| 日韩中文字幕在线免费观看| 香蕉视频xxxx| 国产精品一二三产区| 91美女视频网站| 国产精品 欧美在线| 日本一级免费视频| 色999韩欧美国产综合俺来也| 亚洲人成7777| 国产亚洲福利社区| 麻豆精品久久久久久久99蜜桃| 欧美精品成人| 精品性高朝久久久久久久| 黄色av免费在线播放| 久操视频在线| www.亚洲国产| 国产精品福利网| 久久久久久久久久网站| 精品亚洲自拍| 亚洲白虎美女被爆操| 欧美韩国日本在线| 天堂av中文在线观看| 国产精品欧美经典| 高清国产一区| 最近日韩免费视频| 欧美天天在线| 欧美大片免费看| 美女被到爽高潮视频| 在线看成人短视频| 亚洲人高潮女人毛茸茸| 少妇欧美激情一区二区三区| 欧美激情网站| 第一福利永久视频精品| 最新视频 - x88av| 欧美男男激情freegay| 国内不卡的二区三区中文字幕 | 国产精品久久久久久久久婷婷 | 欧美日韩精品一区二区在线播放| 国产成人三级视频| 最新av在线播放| 国产亚洲人成网站| 亚洲成人第一| 国产在线激情| 亚洲成人在线免费| 国产精品亚洲天堂| 日本小视频在线免费观看| 国产女人18毛片水真多成人如厕| 国产精品国产精品国产专区蜜臀ah | 久久久久久艹| 午夜精品久久久久久久爽 | 小明看看成人免费视频| 免费h视频在线观看| 精品动漫一区二区| 免费网站永久免费观看| 天堂地址在线www| 亚洲欧美aⅴ...| 亚洲高清123| 草莓福利社区在线| 中文字幕日本不卡| 亚欧精品在线| 中文字幕有码在线视频| 亚洲va韩国va欧美va精品| 中文精品一区二区三区| 男女羞羞视频在线观看| 亚洲婷婷综合久久一本伊一区| 日韩视频 中文字幕| 一个人www视频在线免费观看| 欧美日韩国产经典色站一区二区三区| 91成人在线观看喷潮蘑菇| 欧美视频免费看| 色婷婷精品大视频在线蜜桃视频| 国产伦精品一区二区三区四区视频_| av电影免费在线观看| 欧美日韩国产综合新一区 | 最新不卡av| 国产拍在线视频| 91精品免费在线观看| 午夜宅男在线视频| 麻豆成人入口| 久久国产精品视频| 欧美日韩一级在线观看| 久久都是精品| 国产精品av在线| 亚洲狼人综合网| 成人一区二区三区在线观看| 亚洲国产午夜伦理片大全在线观看网站 | 欧美久久久久久久久久久久久久| 亚洲四虎影院| 欧美亚洲综合久久| 成年女人免费视频| 欧美绝顶高潮抽搐喷水合集| 日韩av一卡二卡| 少妇大叫太粗太大爽一区二区| 日韩欧美四区| 在线成人一区二区| 午夜激情福利网| 女同性一区二区三区人了人一| 欧美乱妇40p| 日韩少妇高潮抽搐| 视频一区在线视频| 国产日韩视频在线观看| 精品国产va久久久久久久| 久久精品视频免费| 亚洲精品一区二区三区av| 校园春色亚洲| 亚洲精品大尺度| 国产一级黄色av| 噜噜爱69成人精品| 狠狠色综合一区二区| 九色在线观看视频| 欧美日韩综合视频| 中文字幕成人在线视频| 深夜激情久久| 日韩激情av在线免费观看| 欧美日韩免费做爰视频| 国产不卡在线播放| 日韩精品成人一区二区在线观看| 老司机在线看片网av| 欧美三级蜜桃2在线观看| 人妻视频一区二区| 韩国在线一区| 国产成人精品综合久久久| 三区在线观看| 亚洲精品国产精品乱码不99| 亚洲精品综合在线观看| 99成人在线视频| 91夜夜揉人人捏人人添红杏| av网站免费在线观看| 日韩欧美国产系列| 东方伊人免费在线观看| 国产一区二区三区四区老人| 成人免费视频视频在| gratisvideos另类灌满| 欧美美女激情18p| 午夜爽爽爽男女免费观看| 国产高清亚洲一区| 亚洲三区在线| 亚洲精品动漫| 中国日韩欧美久久久久久久久| 中国女人真人一级毛片| 91一区一区三区| 国产 欧美 日本| 欧美日韩另类图片| 国产精品久久久久7777婷婷| 黄色视屏免费在线观看| 精品美女被调教视频大全网站| 中文字幕精品亚洲| 国产欧美亚洲一区| av免费观看久久| 黄色视屏免费在线观看| 欧美成人国产一区二区| 国产在线观看黄色| 国产精品不卡在线| 免费看黄色一级大片| 欧美理论电影在线精品| 国产精品久久久久高潮| 日本性爱视频在线观看| 亚洲四色影视在线观看| 国产黄a三级三级看三级| 亚洲欧洲精品成人久久奇米网| 波多野吉衣在线视频| 亚洲在线免费| 蜜桃狠狠色伊人亚洲综合网站| 国产精品一品| 日韩精品一区二区在线| 黄色片视频免费| 久久久久久99精品| 亚洲精品一二三四| 日韩综合小视频| 日韩av一区二区三区在线观看| gogo大尺度成人免费视频| 2019亚洲日韩新视频| 天天综合天天综合| 激情成人中文字幕| 国产成人自拍网站| 亚洲国产精品ⅴa在线观看| 久久综合久久色| 欧美午夜久久| 在线观看成人一级片| 亚洲视频分类| 国产精品久久久久久久小唯西川| 久久久精品一区二区毛片免费看| 8050国产精品久久久久久| 亚洲人视频在线观看| 色综合天天综合网天天看片| 免费在线视频观看| 99久久伊人久久99| 亚洲国产综合av| 麻豆精品新av中文字幕| 日本黄网站免费| 一区二区三区四区五区在线| 欧美日韩国产高清视频| 99久久久国产精品免费调教网站| 日韩在线视频中文字幕| 涩爱av在线播放一区二区| 精品久久久久久无| 国产黄色美女视频| 日韩一区二区三区视频| 日韩欧美视频在线免费观看| 亚洲黄色av一区| 久久国产精品国语对白| 亚洲欧洲色图综合| 日本在线观看网址| 国产精品免费网站在线观看| 人妻精品久久久久中文| 久久色成人在线| 一级网站在线观看| 亚洲麻豆一区| 日韩偷拍一区二区| 你懂的视频欧美| 亚洲资源在线看| 中文一区一区三区高中清不卡免费| 欧美高清激情视频| 久草在线资源站资源站| 欧美黑人巨大精品一区二区| 青青草原av在线| 欧美极品在线播放| 国产夫妻在线| 日本精品免费一区二区三区| 成人黄色网址| 美乳少妇欧美精品| 免费在线国产视频| 97在线看福利| 国产精品一卡二卡三卡| 久久久黄色av| 户外极限露出调教在线视频| 亚洲色图美腿丝袜| 亚洲精品承认| 欧美剧在线观看| а√天堂中文在线资源8| 青草青草久热精品视频在线观看| 羞羞电影在线观看www| 欧美男插女视频| 九色porny自拍视频在线观看| 日本视频久久久| 婷婷激情成人| 成人蜜桃视频| 日韩大胆成人| 亚洲欧洲精品一区二区三区波多野1战4 | 久久国产精品高清| 久草成人资源| 大地资源第二页在线观看高清版| 国语精品一区| 蜜臀久久99精品久久久酒店新书| 麻豆精品视频在线观看视频| 免费观看黄网站| 久久久国产一区二区三区四区小说| 亚洲人与黑人屁股眼交| 亚洲国产视频在线| 亚洲不卡的av| 亚洲图片欧美综合| 久久久久久久久久久久久久av| 一区二区三区四区中文字幕| 日韩欧美一区二区一幕| 欧美三级乱人伦电影| 亚洲精品久久久蜜桃动漫| 亚洲美女av在线播放| 色婷婷av一区二区三区之红樱桃 | 欧美午夜视频| 不要播放器的av网站| 国产很黄免费观看久久| 精品人伦一区二区三电影| 亚洲精品视频自拍| 国产成人自拍偷拍| 色婷婷综合在线| 99国产精品久久久久久久成人| 欧美日韩亚洲另类| 亚洲男人第一天堂| 久久久999精品| 欧美一级大黄| 国产精品日本精品| 东京一区二区| 国产成人一区二区| 大陆精大陆国产国语精品| 国产精品久久久久久免费观看| 欧美在线观看视频一区| 缅甸午夜性猛交xxxx| 国内欧美视频一区二区| 一道本在线观看| 亚洲成人在线免费| 国产aⅴ爽av久久久久成人| 中日韩美女免费视频网址在线观看| 国产伦久视频在线观看| 97欧洲一区二区精品免费| 国产调教精品| 欧美性受黑人性爽| 久色婷婷小香蕉久久| 人人爽人人爽人人片| 狠狠躁夜夜躁人人爽超碰91| 亚洲a视频在线观看| 久久综合国产精品台湾中文娱乐网| 永久免费网站在线| 国产一区视频在线播放| 国内成人自拍| 国产成人精品免费看在线播放| 美女黄网久久| 美女又爽又黄免费| 欧美激情在线一区二区| 精品不卡一区二区| 日韩精品视频在线免费观看| www视频在线观看| 国产区一区二区| 亚洲图片在线| 香蕉视频免费网站| 亚洲在线一区二区三区| 中文字幕在线欧美| 国产视频精品免费播放| 九色porny自拍视频在线播放| 精品欧美日韩在线| aa亚洲婷婷| 久操视频免费看| 亚洲综合色噜噜狠狠| 一级α片免费看刺激高潮视频| 精品国产欧美一区二区| 3d玉蒲团在线观看| 亚洲资源在线看| 亚洲一级电影| 国产又黄又猛的视频| 国产精品久久久久aaaa樱花| 一级黄色大毛片| 伦理中文字幕亚洲| 日本精品在线播放| 日韩精品在线中文字幕| 美女任你摸久久| 久久福利小视频| 国产精品超碰97尤物18| 91亚洲国产成人精品一区| 亚洲精品成a人在线观看| 免费成人在线电影| 日韩黄色影视| 国产自产视频一区二区三区| 久久久视频6r| 欧美色中文字幕| 在线观看中文| 久久综合给合久久狠狠色| 日韩成人av影视| 在线观看美女av| 亚洲国产福利在线| 欧美人与性动交α欧美精品济南到| 国产精品一区二区欧美| 久久精品人人做人人爽电影蜜月| 成年人看的免费视频| 欧美一级电影网站| 新版的欧美在线视频| 成年人黄色在线观看| hitomi一区二区三区精品| 日韩欧美国产另类| 欧美xxxx做受欧美| 亚洲国产合集| 亚洲色图偷拍视频| 国产精品狼人久久影院观看方式| 99视频国产精品免费观看a| 97碰在线观看| 久久精品欧美一区| 免费成人深夜夜行p站| 性感美女久久精品| 2021av在线|