虚拟内存布局、内存的分工、堆与栈

news/2024/7/20 14:39:37 标签: 操作系统, 内存管理, 数据结构与算法

进程的虚拟内存空间分为两个部分。低2GB(或3GB_)由应用程序使用。高2GB(或1GB)

由系统内核程序使用。

系统内核的内存空间中包含驱动程序,系统内核可运行程序、用于内存管理的数据结构(页文件夹、页表等),用于进程管理、线程调度的数据结构、各种中断处理程序,系统缓存等。

应用程序可使用的低地址空间中包含了应用程序的代码、数据(全局变量等)、系统和用户DLL的代码、各线程的栈、堆等。

栈和堆是两种重要的内在管理形式。

进程的每一个线程都有自己的栈,栈与函数的调用、运行和返回及局部变量的保存相关,普通情况下,栈中保存着函数的參数、返回地址和局部变量,调用函数将參数入栈,调用指令将函数返回地址入栈,被调用函数负责保存调用函数的相关栈指针,为局部变量分配空间等,而堆是一种能够动态分配和释放的内存,由堆管理器进行管理,用户在程序中使用的内存分配函数都是通过堆进行分配的。

开发者仅仅须要了解下面内容

(1)虚拟地址空间中的数据是分页管理的。
(2)应用程序不用考虑系统中其它应用程序的内存使用情况,如占用了多少内存、占用了哪些内存等。
(3)虚拟地址并非物理地址空间中的地址。不是数据在内存中真实存在的地址。操作系统会将进程的虚拟地址映射到真实的物理内存的地址。


(4)进程也不用考虑真实的物理内存有多大。仅仅须要了解能够使用2GB(普通情况下)的内存。操作系统负责转换。


(5)假设系统中没有足够的物理内存供使用,那么操作系统会将当前没有使用的内存分页“调度”到硬盘上保存起来。页面调度不会造成内存中的数据在虚拟地址空间中地址的改变。所以进程不须要知道内存分页是怎样调度的。不须要知道内存中保存的数据是在内存中还是在硬盘上,仅仅须要知道其虚拟地址就能够了。


在创建进程时,系统将应用程序的可执行文件载入到内存中,设置相关环境后,開始启动执行。要执行一个程序(exe文件),系统会创建进程。

系统先在自己的内存管理单元中构造出一个虚拟地址空间,供进程使用,然后将exe文件载入到进程的虚拟地址空间内存中指定的位置,配置程序数据和调用接口等,然后再创建主线程。进程是正在执行的程序。即程序的执行实例。

转载于:https://www.cnblogs.com/llguanli/p/7117832.html


http://www.niftyadmin.cn/n/1418521.html

相关文章

使用wojilu 无代码实现 输入框提示 及其背后的原理

有时候,我们还希望在输入框里面出现提示信息,比如这样: 一旦鼠标点击了输入框,则提示信息自动消失。 我们把这种效果叫做“输入框提示”效果,目前似乎逐渐流行起来了。使用 wojilu ajax framework,仅需要添…

iOS判断一些权限是否被禁止

iOS中经常会遇到访问相册、相机、麦克疯、蓝牙、以及推送等权限,所以每次我们要使用这些权限是都要记得查看用户是否允许了,如果用户禁止了你的访问权限,你仍然去调取相册或者相机等,那么就会先出现下面的这个提示。而且是英文的&…

mysql之列类型(数据类型)

一、数值类型 bit(m)&#xff0c;m表示二进制位&#xff0c;1<m<64(8个字节以内)。 tinyint(m) [unsigned] [zerofill]&#xff0c;一个字节。zerofill自动具有unsigned属性。zero的意思是当实际数值没有m位时用0填充。 bool,boolean意思同tinyint(1)。 smallint(m) [uns…

Windows 10+Ubuntu 16.04双系统切换后时间不同步的问题解决

主要时时区不对造成的&#xff0c;少了8个小时&#xff0c;解决方法&#xff1a; 在Ubuntu的终端下输入以下命令&#xff1a; sudo timedatectl set-local-rtc 1 参考&#xff1a; http://blog.csdn.net/fuchaosz/article/details/51882935转载于:https://www.cnblogs.com/Easo…

My Space:一个时代的终结

为什么80%的码农都做不了架构师&#xff1f;>>> EchoKou 于 2011-7-1,07:54 Comments (3) 归类于&#xff1a; 业界趋势/Trend, 信息图, 前缀分类 标签&#xff1a; myspace, 新闻集团. 在 Facebook 叱咤风云&#xff0c;Twitter 改变互联网历史&#xff0…

boilerpipe(Boilerplate Removal and Fulltext Extraction from HTML pages) 源码分析

开源Java模块boilerpipe(1.1.0), http://code.google.com/p/boilerpipe/ 使用例子, URL url new URL("http://www.example.com/some-location/index.html "); // NOTE: Use ArticleExtractor unless DefaultExtractor gives better results for you String text A…

WPF 用户控件嵌入网页

WPF使用用户控件嵌入网页&#xff0c;直接使用WebBrowser或Frame会产生报错&#xff0c;报错信息如下&#xff1a; 1.使用WebBrowser&#xff0c;<WebBrowser Source"http://192.168.1.72:8080/zjzx/logoutUserInfo.action"/>&#xff0c;启动登录系统后直接报…

久九童鞋的生日哦,7月7日哈。

遇到久九童鞋是一件很神奇的事情。遇到很多有趣和很多不开心的事情也愿意去和久九童鞋交流吐槽。 你也有很多不如意和心里不开心的事情&#xff0c;在这里希望你的心情能尽快好起来&#xff0c;有些事情我不能理解。 但也愿意做你的聆听者&#xff0c;生活过着就是要让自己快乐…