可执行文件的装载与进程

覆盖装入和页映射是两种典型的动态装载方法
进程建立的三步
1.创建一个独立的虚拟地址空间
2.读取可执行文件头,并且建立虚拟空间与可执行文件的映射关系。
3.将CPU的指令寄存器设置成可执行文件的入口地址,启动运行。

常见段权限组合:

  • 以代码段为代表的权限为可读可执行段
  • 以数据段和BSS段为代表的权限为可读可写段
  • 以只读数据段为段表的权限为只读的段

操作系统通过给进程空间划分出一个个VMA来管理进程的虚拟空间:
基本原则就是将相同权限属性的、有相同映像文件的映射成一个VMA,一个进程基本可以分为如下几种VMA区域:

  • 代码VMA:权限只读、可执行;有映像文件。
  • 数据VMA:权限可读写、可执行;有映像文件。
  • 堆VMA:权限可读写、可执行;无映像文件,匿名,可向上扩展。
  • 栈VMA:权限可读写、不可执行;无映像文件,匿名,可向下扩展。

知识杂项

  • Linux malloc最大申请空间2.9G左右,Windows malloc最大申请空间1.5G左右。

参考

《程序员的自我修养》

最新文章

  1. linux shell程序
  2. 20160621-BAPI 更改外向DN&更改拣配
  3. C#中部分方法返回值类型为什么只能是void?
  4. SQL Server2008跟SQL Server2008R2的区别(转)
  5. 322. Coin Change
  6. Django编写RESTful API(四):认证和权限
  7. centos7时间同步
  8. HDU - 3567 Eight II (bfs预处理 + 康托) [kuangbin带你飞]专题二
  9. Clickhouse v18编译记录
  10. [物理学与PDEs]第4章第3节 一维反应流体力学方程组 3.3 一维反应流体力学方程组的数学结构
  11. 无需脑图 无需思维导图 看Word大纲视图
  12. 商业版微信小程序开发流程
  13. 由override 和 overload 引发的学习感悟
  14. WPF 显示 mp3 专辑图片
  15. 洛谷 P3521 ROT-Tree Rotations [POI2011] 线段树
  16. idea没有错误出现红色波浪线怎么去掉?
  17. 蒲公英 Bug 管理云
  18. 常见Java问题二
  19. UVa 818 切断圆环链(dfs+二进制枚举)
  20. Windoows窗口程序六

热门文章

  1. 使用ctypes调用系统C API函数需要注意的问题,函数参数中有指针或结构体的情况下最好不要修改argtypes
  2. js之split拆分字符串
  3. 三角形示例(兼容IE6)
  4. FlowPortal BPM流程中调用封装好的API如何调试
  5. Mysql中的锁机制-转载
  6. skeleton directory: /etc/skel
  7. Neutron服务组件
  8. Insufficient space for shared memory file 解决办法
  9. B-Tree目录和Hash索引的区别
  10. WCF Endpoint分类