久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當(dāng)前位置:首頁 >> 技術(shù)中心 >> 單片機入門 >> 硬件工程師對于程序空間的理解

硬件工程師對于程序空間的理解

關(guān)鍵字:硬件工程師 程序空間 作者: 來源: 發(fā)布時間:2019-07-31  瀏覽:42

 在硬件工程師和普通用戶看來,內(nèi)存就是插在或固化在主板上的內(nèi)存條,它們有一定的容量——比如64 MB。但在應(yīng)用程序員眼中,并不過度關(guān)心插在主板上的內(nèi)存容量,而是他們可以使用的內(nèi)存空間——他們可以開發(fā)一個需要占用1 GB內(nèi)存的程序,并讓其在OS平臺上運行,哪怕這臺運行主機上只有128 MB的物理內(nèi)存條。而對于OS開發(fā)者而言,則是介于二者之間,他們既需要知道物理內(nèi)存的細節(jié),也需要提供一套機制,為應(yīng)用程序員提供另一個內(nèi)存空間,這個內(nèi)存空間的大小可以和實際的物理內(nèi)存大小之間沒有任何關(guān)系。

我們將主板上的物理內(nèi)存條所提供的內(nèi)存空間定義為物理內(nèi)存空間;將應(yīng)用程序員看到的內(nèi)存空間定義為線性空間。物理內(nèi)存空間大小在不同的主機上可以是不一樣的,隨著主板上所插的物理內(nèi)存條的容量不同而不同;但為應(yīng)用程序員提供的線性空間卻是固定的,不會隨物理內(nèi)存的變化而變化,這樣才能保證應(yīng)用程序的可移植性。盡管物理內(nèi)存的大小可以影響應(yīng)用程序運行的性能,并且很多情況下對物理內(nèi)存的大小有一個最低要求,但這些因素只是為了讓一個OS可以正常的運行。

線性空間的大小在32-bit平臺上為4 GB的固定大小,對于每個進程都是這樣(一個應(yīng)用可以是多進程的,在OS眼中,是以進程為單位的)。也就是說線性空間不是進程共享的,而是進程隔離的,每個進程都有相同大小的4 GB線性空間。一個進程對于某一個內(nèi)存地址的訪問,與其它進程對于同一內(nèi)存地址的訪問絕不沖突。比如,一個進程讀取線性空間地址1234ABCDh可以讀出整數(shù)8,而另外一個進程讀取線性空間地址1234ABCDh可以讀出整數(shù)20,這取決于進程自身的邏輯。

在任意一個時刻,在一個CPU上只有一個進程在運行。所以對于此CPU來講,在這一時刻,整個系統(tǒng)只存在一個線性空間,這個線性空間是面向此進程的。當(dāng)進程發(fā)生切換的時候,線性空間也隨著切換。所以結(jié)論就是每個進程都有自己的線性空間,只有此進程運行的時候,其線性空間才被運行它的CPU所知。在其它時刻,其線性空間對于CPU來說,是不可知的。所以盡管每個進程都可以有4 GB的線性空間,但在CPU眼中,只有一個線性空間的存在。線性空間的變化,隨著進程切換而變化。

盡管線性空間的大小和物理內(nèi)存的大小之間沒有任何關(guān)系,但使用線性空間的應(yīng)用程序最終還是要運行在物理內(nèi)存中。應(yīng)用所給出的任何線性地址最終必須被轉(zhuǎn)化為物理地址,才能夠真正的訪問物理內(nèi)存。所以,線性內(nèi)存空間必須被映射到物理內(nèi)存空間中,這個映射關(guān)系需要通過使用硬件體系結(jié)構(gòu)所規(guī)定的數(shù)據(jù)結(jié)構(gòu)來建立。我們不妨先稱其為映射表。一個映射表的內(nèi)容就是某個線性內(nèi)存空間和物理內(nèi)存空間之間的映射關(guān)系。OS Kernel一旦告訴某個CPU一個映射表的位置,那么這個CPU需要去訪問一個線性空間地址時,就根據(jù)這張映射表的內(nèi)容,將這個線性空間地址轉(zhuǎn)化為物理空間地址,并將此物理地址送到地址線,畢竟地址線只知道物理地址。

所以,我們很容易得出一個結(jié)論,如果我們給出不同的映射表,那么CPU將某一線性空間地址轉(zhuǎn)化的物理地址也會不同。所以我們?yōu)槊恳粋進程都建立一張映射表,將每個進程的線性空間根據(jù)自己的需要映射到物理空間上。既然某一時刻在某一CPU上只能有一個應(yīng)用在運行,那么當(dāng)任務(wù)發(fā)生切換的時候,將映射表也更換為響應(yīng)的映射表就可以實現(xiàn)每個進程都有自己的線性空間而互不影響。所以,在任意時刻,對于一個CPU來說,也只需要有一張映射表,以實現(xiàn)當(dāng)前進程的線性空間到物理空間的轉(zhuǎn)化。

--------------------------------------------------------------------------------

2. OS Kernel Space & Process Space

由于OS Kernel在任意時刻都必須存在于內(nèi)存中,而進程卻可以切換,所以在任意時刻,內(nèi)存中都存在兩部分,OS Kernel和用戶進程。而在任意時刻,對于一個CPU來說只存在一個線性空間,所以這個線性空間必須被分成兩部分,一部分供OS Kernel使用,另一部分供用戶進程使用。既然OS Kernel在任何時候都占用線性空間中的一部分,那么對于所有進程的線性空間而言,它們?yōu)镺S Kernel所留出的線性空間可以是完全相同的,也就是說,它們各自的映射表中,也分為兩部分,一部分是進程私有映射部分,對于OS Kernel映射部分的內(nèi)容則完全相同。

從這個意義上來說,我們可以認為,對于所有的進程而言,它們共享OS Kernel所占用的線性空間部分,而每個進程又各自有自己私有的線性空間部分。假如,我們將任意一個4 GB線性空間分割為1 GB的OS Kernel空間部分和3 GB的進程空間部分,那么所有進程的4 GB線性空間中1 GB的OS Kernel空間是共享的,而剩余的3 GB進程空間部分則是各個進程私有的。Linux就是這么做的,而Windows NT則是讓OS Kernel和進程各使用2 GB線性空間。

--------------------------------------------------------------------------------

3. Segment Mapping & Page Mapping

所有的線性空間的內(nèi)容只有被放置到物理內(nèi)存中才能夠被真正的運行和操作。所以,盡管OS Kernel和進程都被放在線性空間中,但它們最終必須被放置到物理內(nèi)存中。所以O(shè)S Kernel和所有的進程都最終共享物理內(nèi)存。在現(xiàn)階段,物理內(nèi)存遠沒有線性空間那么大——線性空間是4 GB,而物理內(nèi)存空間往往只有幾百兆,甚至更小。另外即使物理內(nèi)存有4 GB,但由于每個進程都可以有3 GB線性空間(假如進程私有線性空間是3 GB的話),如果把所有進程的線性空間內(nèi)容都放在物理內(nèi)存中,明顯是不現(xiàn)實的。所以O(shè)S Kernel必須將某些進程暫時用不到的數(shù)據(jù)或代碼放在物理內(nèi)存之外,將有限的內(nèi)存提供給當(dāng)前最需要的進程。另外,由于OS Kernel在任何時候都有可能運行,所以O(shè)S Kernel最好被永遠放在物理內(nèi)存中。我們僅僅將進程數(shù)據(jù)進行換入換出。

從線性空間到物理空間的映射需要映射表,映射表的內(nèi)容是將某段線性空間映射到相同大小的物理內(nèi)存空間上。從理論上,我們可以使用兩種映射方法:變長映射,和定長映射。變長映射指的是根據(jù)不同的需要,將一個一個變長段映射到物理內(nèi)存上,其格式可以如下(線性空間段起始地址,物理空間段起始地址,段長度)。假如一個進程有3個段:10M的數(shù)據(jù)段,5M的代碼段,和8K的堆棧段,那么就可以在映射表中建立3項內(nèi)容,每一項針對一個段。這看起來沒有問題。但假如現(xiàn)在我們的實際的內(nèi)存只有32M,其中10M被內(nèi)核占用,留給進程的物理空間只有22M,那么此進程在運行時,就占據(jù)了10M+5M+8K的內(nèi)存空間。隨后當(dāng)進程發(fā)生切換時,假如另一個進程和其有相同的內(nèi)存要求,那么剩余的22M-(10M+5M+8K)明顯就不夠用了,這時只能將原進程的某些段換出,并且必須是整段的換出。這就意味著我們必須至少換出一個10M的數(shù)據(jù)段,而換出的成本很高,因為我們必須將這10M的內(nèi)容拷貝到磁盤上,磁盤I/O是很慢的。

所以,使用變長的段映射的結(jié)果就是一個段要么被全部換入,要么被全部換出。但在現(xiàn)實中,一個程序中并非所有的代碼和數(shù)據(jù)都能夠被經(jīng)常訪問,往往被經(jīng)常訪問的只占全部代碼數(shù)據(jù)的一部分,甚至是一小部分。所以更有效的策略是我們最好只換出那些并不經(jīng)常使用的部分,而保留那些經(jīng)常被使用的部分。而不是整個段的換入換出。這樣可以避免大塊的慢速磁盤操作。

這就是定長映射策略,我們將內(nèi)存空間分割為一個個定長塊,每個定長塊被稱為一個頁。映射表的基本格式為(物理空間頁起始地址),由于頁是定長的,所以不需要指出它的長度,另外,我們不需要在映射表中指定線性地址,我們可以將線性地址作為索引,到映射表中檢索出相應(yīng)的物理地址。當(dāng)使用頁時,其策略為:當(dāng)換出的時候,我們只將那些不活躍的,也就是不經(jīng)常使用的頁換出,而保留那些活躍的頁。在換入的時候,只有被請求訪問的頁才被換入,沒有被請求訪問的頁將永遠不會被換入到物理內(nèi)存。這就是請求頁(Demand Page)算法的核心思想。

這就引出一個頁大小的問題:首先我們不可能以字節(jié)為單位,這樣映射表的大小和線性空間大小相同——假如整個線性空間都被映射的話——我們不可能將全部線性空間用作存放這個映射表。由此,我們也可以得知,頁越小,則映射表的容量越大。而我們不能讓映射表占用太多的空間。但如果頁太大,則面臨著和不定長段映射同樣的問題,每次換出一個頁,都需要大量的磁盤操作。另外,由于為一個進程分配內(nèi)存的最小單位是頁,假如我們的頁大小為4 MB,那么即使一個進程只需要使用4 KB的內(nèi)存,也不得不占用整個4 MB頁,這明顯是一種很大的浪費。所以我們必須在兩者之間進行折衷,一般平臺所規(guī)定的頁大小為1 KB到8 KB,IA-32所規(guī)定的頁大小為4 KB。(IA-32也支持4 MB頁,你可以根據(jù)你的OS的用途進行選擇,一般都是使用4 KB頁)。

編輯:admin  最后修改時間:2019-07-31

聯(lián)系方式

0755-82591179

郵箱:ivy@yingtexin.net

地址:深圳市南山區(qū)桃源街道平山社區(qū)平山一路2號南山云谷創(chuàng)業(yè)園二期11棟410-411

Copyright © 2014-2026 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网
成人免费xxxxx在线视频| 国产97在线 | 亚洲| 任你操这里只有精品| www.国产亚洲| 黄色录像特级片| 国产精品夜夜夜爽张柏芝| 中文字幕永久有效| 奇米影视四色在线| 午夜精品中文字幕| 青娱乐精品在线| 一级黄色高清视频| 看一级黄色录像| 操bbb操bbb| 800av在线免费观看| av中文字幕av| 欧美激情视频免费看| 国产精品后入内射日本在线观看| 久草视频这里只有精品| www.av91| 啊啊啊国产视频| 久久久久xxxx| www.黄色网址.com| 久久综合色视频| 青青草原av在线播放| 欧美一级视频在线| 欧美中文字幕在线观看视频| 日本丰满少妇xxxx| 999在线观看| 精品人妻大屁股白浆无码| 北条麻妃69av| 色婷婷综合在线观看| 男人天堂av片| 激情综合网俺也去| 成年人三级视频| 欧美牲交a欧美牲交aⅴ免费真| 天天影视色综合| 久久亚洲中文字幕无码| 在线看的黄色网址| 国产精品久久久久久久久电影网| 国产视频一视频二| 在线成人免费av| a在线视频观看| 美女在线免费视频| 亚洲激情在线观看视频| 妺妺窝人体色www看人体| 日本在线观看免费视频| 成人免费a级片| 中文字幕资源在线观看| 好吊妞无缓冲视频观看| 久久婷婷中文字幕| 天天爽人人爽夜夜爽| 亚洲人成无码网站久久99热国产| 久久久久国产精品熟女影院| 精品久久一二三| 黄色三级中文字幕| 欧美 日韩 国产精品| 日本超碰在线观看| 一区二区三区 欧美| 久久久久久久久久久久久国产精品 | 国产一级片黄色| 久久人人爽人人爽人人av| 久久久福利影院| 中文字幕国产传媒| 天美星空大象mv在线观看视频| 亚洲一区二区三区av无码| 成人污网站在线观看| 三级黄色片播放| 中文字幕免费高| 超碰91在线播放| 国产高潮呻吟久久久| 在线免费观看av网| 激情久久综合网| 中文字幕一区二区三区四区五区人| 午夜不卡福利视频| 国产一区一区三区| 可以免费看的黄色网址| 一级一片免费播放| 男人的天堂视频在线| 免费cad大片在线观看| japanese在线播放| 国产美女视频免费| 黄色一级视频在线播放| 精品国产一二三四区| 成年人免费在线播放| 青青在线视频免费| 天美一区二区三区| 国产情侣第一页| 黄在线观看网站| 别急慢慢来1978如如2| www.久久久精品| 国产成人精品免费看在线播放| 亚洲熟妇无码av在线播放| 日韩小视频网站| 向日葵污视频在线观看| 人人妻人人澡人人爽精品欧美一区| 午夜啪啪福利视频| av免费在线播放网站| 97人人爽人人| 日韩国产欧美亚洲| 蜜臀av免费观看| 国产亚洲黄色片| 午夜免费福利在线| 99热亚洲精品| 91精品999| 成人观看免费完整观看| 欧美性视频在线播放| 日本免费黄视频| 亚洲国产精品影视| 99免费视频观看| 日韩精品久久一区二区| 久久久久久久片| 国产精品无码人妻一区二区在线| 奇米影视四色在线| 亚洲中文字幕无码专区| 樱空桃在线播放| 久久精品影视大全| 国产精品999视频| 四虎精品欧美一区二区免费| 国产主播中文字幕| 精品人妻一区二区三区四区在线| www亚洲国产| 国产高清视频网站| 国产精品久久久久9999小说| 欧美视频在线观看视频| 99亚洲精品视频| 国产精欧美一区二区三区白种人| av免费在线播放网站| 九九热只有这里有精品| 99999精品| 99精品999| 国产精品波多野结衣| 久久久精品高清| 香蕉视频禁止18| 五月婷婷激情久久| 伊人国产在线视频| www欧美激情| 一道本在线免费视频| 国产免费视频传媒| 91热这里只有精品| 午夜视频你懂的| 亚洲免费黄色录像| 天天操天天干天天玩| 国产树林野战在线播放| 亚洲精品天堂成人片av在线播放| www.色.com| 免费观看国产视频在线| 91精品国产毛片武则天| 在线视频观看一区二区| 99精品视频网站| 国产爆乳无码一区二区麻豆| 久久久久99精品成人片| 被灌满精子的波多野结衣| a在线视频观看| 色免费在线视频| 99999精品| 亚洲美免无码中文字幕在线| 亚洲av首页在线| heyzo国产| 91精品国产三级| 女人扒开屁股爽桶30分钟| 中文字幕日韩综合| 男女激情无遮挡| 午夜视频在线网站| 日韩av在线第一页| 中文字幕1234区| 波多野结衣50连登视频| 91热视频在线观看| 大陆极品少妇内射aaaaa| 男女污污视频网站| 一本久道综合色婷婷五月| 日日噜噜夜夜狠狠久久丁香五月| 97xxxxx| 青青在线免费观看| 亚洲精品在线视频播放| 人妻内射一区二区在线视频| 成人短视频在线看| 中文字幕亚洲乱码| 黄在线观看网站| 人人妻人人澡人人爽欧美一区| 99久热在线精品视频| 国产成人av影视| 成人亚洲视频在线观看| 999精品网站| 色婷婷综合在线观看| 日韩av手机版| 国产传媒免费观看| 日韩极品视频在线观看| 国产福利影院在线观看| 吴梦梦av在线| 国产九色porny| 亚洲一区在线不卡| 国产黄色特级片| 2025韩国大尺度电影| 欧美二区在线视频| www.精品在线| 日日干夜夜操s8| 97超碰国产精品| 人人妻人人澡人人爽欧美一区双| 国产成人久久婷婷精品流白浆| 国产九九九视频|