IT培训机构|91免费精品视频|专注编程培训|91免费精品|软件开发培训_91免费国产视频_华清远见教育

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 進程與線程的空間問題

進程與線程的空間問題 時間:2014-11-29      來源:未知

這兩天有同學問到進程線程的地址空間的問題,提到在linux下每個進程單獨占有4G的虛擬地址空間,而這個進程下的所有線程共享著它的地址空間。這只是一個概念上的理解,具體是怎么回事呢?

在說這個問題之前我們先說一下早期的內(nèi)存管理機制。在早期的計算機中,程序都是直接運行在內(nèi)存上的,也就是說程序中訪問的內(nèi)存地址都是實際的物理內(nèi)存地址。當計算機同時運行多個程序時,必須保證這些程序用到的內(nèi)存總量要小于計算機實際物理內(nèi)存的大小。那當程序同時運行多個程序時,操作系統(tǒng)順次向下分配物理內(nèi)存地址例如一臺計算機的內(nèi)存大小是128M,現(xiàn)在同時運行程序A和B,A需占用內(nèi)存30M,B需占用內(nèi)存60M。計算機在給程序分配內(nèi)存時先將內(nèi)存中的前30M分配給程序A,接著再從內(nèi)存中剩余的98M中劃分出60M分配給程序B。這種分配方法可以保證程序A和程序B都能運行,但是這種簡單的內(nèi)存分配策略問題很多。首先進程地址空間不隔離。由于程序都是直接訪問物理內(nèi)存,惡意程序可以很容統(tǒng)修改別的進程的內(nèi)存數(shù)據(jù),以達到破壞的目的。即使是非惡意的,但是有bug的程序也可能不小心修改了其它程序的內(nèi)存數(shù)據(jù),就會導致其它程序的運行出現(xiàn)異常。其中一個任務失敗了,可能也會影響其它的任務。其次是程序運行的地址不確定。當內(nèi)存中的剩余空間可以滿足程序C的要求后,操作系統(tǒng)會在剩余空間中隨機分配一段連續(xù)的20M大小的空間給程序C使用,因為是隨機分配的,所以程序運行的地址是不確定的。內(nèi)存使用效率低。在A和B都運行的情況下,如果用戶又運行了程序C,而程序C需要20M大小的內(nèi)存才能運行,而此時系統(tǒng)只剩下8M的空間可供使用,所以此時系統(tǒng)必須在已運行的程序中選擇一個將該程序的數(shù)據(jù)暫時拷貝到硬盤上,釋放出部分空間來供程序C使用,然后再將程序C的數(shù)據(jù)全部裝入內(nèi)存中運行。可以想象得到,在這個過程中,有大量的數(shù)據(jù)在裝入裝出,導致效率十分低下。

為了解決上述問題,人們設計了間接的地址訪問方法訪問物理內(nèi)存。按照這種方法,程序中訪問的內(nèi)存地址不再是實際的物理內(nèi)存地址,而是一個虛擬地址,然后由操作系統(tǒng)將這個虛擬地址映射到適當?shù)奈锢韮?nèi)存地址上。這樣,只要操作系統(tǒng)處理好虛擬地址到物理內(nèi)存地址的映射,就可以保證不同的程序終訪問的內(nèi)存地址位于不同的區(qū)域,彼此沒有重疊,就可以達到內(nèi)存地址空間隔離的效果。

當創(chuàng)建一個進程時,操作系統(tǒng)會為該進程分配一個4GB大小的虛擬進程地址空間。之所以是4GB,是因為在32位的操作系統(tǒng)中,一個指針長度是4字節(jié)(64位系統(tǒng)是8字節(jié),由cpu的尋址位數(shù)決定),而4字節(jié)指針的尋址能力是從0x00000000~0xFFFFFFFF,大值0xFFFFFFFF表示的即為4GB大小的容量。與虛擬地址空間相對的,還有一個物理地址空間,這個地址空間對應的是真實的物理內(nèi)存。如果你的計算機上安裝了1G大小的內(nèi)存,那么這個物理地址空間表示的范圍是0x00000000~0x3FFFFFFF。當操作系統(tǒng)做虛擬地址到物理地址映射時,只能映射到這一范圍。當進程創(chuàng)建時,每個進程都會有一個自己的4GB虛擬地址空間。要注意的是這個4GB的地址空間是"虛擬"的,并不是真實存在的,而且每個進程只能訪問自己虛擬地址空間中的數(shù)據(jù),無法訪問別的進程中的數(shù)據(jù),通過這種方法實現(xiàn)了進程間的地址隔離。實際上也是增加了地址空間,在這4G中還分為用戶空間和系統(tǒng)空間,用戶態(tài)時候進程只能訪問用戶空間(內(nèi)核態(tài)時候既可以訪問用戶空間也可以訪問系統(tǒng)空間)。這只是解決了地址問題,實際進程的運行還是要在真實的內(nèi)存上,所以,必須在虛擬地址與物理地址間建立一種映射關(guān)系。這樣,通過映射機制,當程序訪問虛擬地址空間上的某個地址值時,就相當于訪問了物理地址空間中的另一個值。人們采用分段(Sagmentation)的方法,它的思想是在虛擬地址空間和物理地址空間之間做一一映射。比如說虛擬地址空間中某個10M大小的空間映射到物理地址空間中某個10M大小的空間。這種思想理解起來并不難,操作系統(tǒng)保證不同進程的地址空間被映射到物理地址空間中不同的區(qū)域上,這樣每個進程終訪問到的物理地址空間都是彼此分開的。通過這種方式,就實現(xiàn)了進程間的地址隔離。在做開發(fā)時,開發(fā)人員只需訪問這段虛擬區(qū)間上的地址即可。應用程序并不關(guān)心進程的這段地址究竟被映射到物理內(nèi)存的那塊區(qū)域上了,所以程序的運行地址也就是相當于說是確定的了。

但是這種分段的映射方法并沒有解決內(nèi)存的使用效率問題。在分段的映射方法中,每次換入換出內(nèi)存的都是整個程序,這樣會造成大量的磁盤訪問操作,導致效率低下。基于這種情況,人們想到了內(nèi)存分割和映射方法,這種方法就是分頁(Paging)。

分頁的基本方法是,將地址空間分成許多的頁。每頁的大小由CPU決定,然后由操作系統(tǒng)選擇頁的大小。目前Inter系列的CPU支持4KB或4MB的頁大小,而PC上目前都選擇使用4KB。按這種選擇,4GB虛擬地址空間共可以分成1048576個頁,512M的物理內(nèi)存可以分為131072個頁。顯然虛擬空間的頁數(shù)要比物理空間的頁數(shù)多得多。 在分段的方法中,每次程序運行時總是把程序全部裝入內(nèi)存,而分頁的方法則有所不同。分頁的思想是程序運行時用到哪頁就為哪頁分配內(nèi)存,沒用到的頁暫時保留在硬盤上。當用到這些頁時再在物理地址空間中為這些頁分配內(nèi)存,然后建立虛擬地址空間中的頁和剛分配的物理內(nèi)存頁間的映射。用這樣的方法程序可以使用一系列虛擬地址來訪問大于可用物理內(nèi)存的內(nèi)存緩沖區(qū)。當物理內(nèi)存的供應量變小時,內(nèi)存管理器會將物理內(nèi)存頁(通常大小為 4 KB)保存到磁盤文件。數(shù)據(jù)或代碼頁會根據(jù)需要在物理內(nèi)存與磁盤之間移動。這具體和系統(tǒng)對內(nèi)存的管理和對進程的調(diào)度有關(guān)。

上一篇:M0傳感器新板子

下一篇:WindowsPhone自定義控件詳解(一) - 控件類庫分析

熱點文章推薦
華清學員就業(yè)榜單
高薪學員經(jīng)驗分享
熱點新聞推薦
前臺專線:010-82525158 企業(yè)培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權(quán)所有 ,京ICP備16055225號-5京公海網(wǎng)安備11010802025203號

回到頂部

主站蜘蛛池模板: 校园文化设计|文化墙建设|校园景观雕塑|校史馆设计-深圳市天合文化 | 思源医疗器械网,雾化器厂家,医用床生产厂家,医疗器械厂家,医疗器械代加工 | 千斤顶-超薄电动千斤顶-电动液压千斤顶-液压螺母扳手-泰州杰克液压机械制造有限公司 | 襄阳燃烧器厂家-低氮燃烧器价格-河北五通道燃烧器就找襄阳市胜合燃力设备有限公司一站式服务 | 全自动清洗过滤器_网式盘式过滤器_石英砂过滤器_叠片过滤器-湖南多灵过滤系统科技有限公司 | 首页|广东蒙泰高新纤维股份有限公司|丙纶细旦丝|丙纶异形丝|丙纶FDY网络丝 - 广东蒙泰高新纤维股份有限公司 | 液晶拼接屏_三星46寸/55寸/LG液晶拼接屏_深圳拼接墙厂家_电视大屏幕液晶拼接_高清工业级液晶监视器 | 河卵石制砂机|鹅卵石制砂机-移动制砂机-制砂设备-郑州秦星机械设备有限公司 | 木马交互设计研究中心 ,专注于用户体验与人机交互设计 - 首页 | 气动球阀-气动蝶阀-电动蝶阀「厂家」-恒信流体控制有限公司 | 强德防盗门-防盗门厂家-中国防盗门十大品牌-强德门业 - 浙江臻品工贸有限公司 | 暖气片厂家_散热器厂家_力春散热器 | 拓普思(常州)智能科技有限公司-青少年无人机教育培训比赛课程加盟拓活力 | 医用空气净化消毒机,医用床单位消毒机,无磁空气消毒机,紫外线空气消毒机厂家-南昌市扬帆环保设备有限公司 | 文轩热能_水冷板散热器热设计热管理系统_铝型材铲齿摩擦焊热管_散热片散热板生产加工厂家 | 消防水电施工,消防水电安装,消防水电施工公司,消防水电改造-亿杰北京消防工程公司 | 皮带输送机-宁津县浩发链条有限公司| 制砂机_选矿设备_耐磨件-郑州富嵩机械设备有限公司 | 实验升降炉-箱式管式炉- 台车真空炉-熔块旋转炉-推板隧道窑-洛阳鲁威窑炉有限公司 | 今日北斗 | 北斗最新动态| 企业资质认证-上海翼弘企业咨询管理有限公司 | 网上配音_免费配音_广告专题配音_网络录音网站【海豚配音】 | 深圳市翔洲宏科技有限公司| 南通惠德彩钢有限公司-彩钢瓦,岩棉板,净化板,夹芯板,市政工地围挡板 | 深圳钢成培训专业从事,五轴培训,车铣复合培训,数控车床,CNC数控编程,模具编程 ,钣金机械与模具设计,powermill,mastercam,solidworks,ug,hypermill培训 | 南昌利驰科技有限公司| 上饶市安信永辰会计师事务所有限公司 | 曙海培训-ZEMAX培训射频培训无线电培训GMS培训EMC培训电磁兼容性培训Maxwell培训欧姆龙培训procast培训可靠性培训光学培训工业机器人培训NI培训Linux培训5G培训Hadoop培训CFD培训 | 原子灰厂家—长兴宝迪环保科技有限公司【官网】 | 深圳彩盒印刷-纸盒包装-不干胶标签印刷-深圳印刷厂家-深圳贝的印刷 | 江阴市海顺机械设备制造有限公司 | 自动锁螺丝机_在线式拧螺丝机_自动化灌胶机_ab点胶机_品牌厂家 | 九江市云山油茶科技发展有限公司 | 山西华盛筑景装饰,山西专业公装公司,太原公装装修公司,包括:办公室,酒店宾馆,商铺店铺,学校幼儿园,会所会馆饭店餐馆等装修设计 | 园林绿化平台|园林绿化网|苗木网|苗圃网||苗木报价网|园林招标网|园林苗木网|园林工程网|景观设计网|园林机械网|绿化苗木网| | 重庆消杀公司-重庆斗哥环保科技-灭鼠公司-重庆灭蟑螂-除四害-灭老鼠-灭虫-重庆灭白蚁公司 | 卫生级自吸泵-不锈钢化工离心泵-上海胜欧泵阀有限公司 | 绣花厂_电脑绣花厂_手工刺绣加工定制 - 北京丽绣坊工艺品有限公司 | 男装加盟,男装加盟店,男装代理,男装品牌加盟,品牌男装加盟-虎豹男装品牌加盟 | 食品厂净化工程-无尘车间装修改造-净化工程-洁净工程-苏州远盈净化公司 | 兰州物流公司_兰州货运公司_兰州物流电话上门取货_兰州立辉物流公司 |