| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 系统运维 -> 可执行文件的装载与进程 -> 正文阅读 |
|
|
[系统运维]可执行文件的装载与进程 |
|
目录 可执行文件只有装载到内存中才能被CPU利用。随着MMU( Memory Management Unit )(内存管控单元)的发展、多进程、多用户、虚拟存储的操作系统出现后,其装载变得复杂起来。 一、进程虚拟地址空间程序和进程有什么区分: 程序可以看作代码。进程为执行整个代码的过程。
硬件位数决定了地址空间的上线,如32位的计算机。地址空间为0x0000000-0xFFFFFFFF,为4GB。64位的地址空间为:0x0000000000000000-0xFFFFFFFFFFFFFFFF,为8GB。 同样C语言指针的位数与虚拟地址位数相同。32位的指针位数同样为32位。 内存如何分配的呢?在Linux系统下内存分为两部分,一部分为系统内存1GB,另一部分为用户进程空间3GB,也就是进程空间。Windows上2GB系统内存,2GB为用户进程空间。
在Linux系统中,0x00000000-0xC0000000为进程地址空间,0xC0000000-0XFFFFFFFF为系统地址空间。
PAE (Physical Address Extension) 一个程序使用的地址空间可以超过4GB么?如果是虚拟地址,那么不行。如果是物理地址,那么可以。
?二、装载方式程序指令需要装在内存中才能顺利运行,很多情况下程序需要的内存数量大于物理内存的数量,并且内存是很昂贵的,我们希望在不加内存的情况下让更多程序运行起来。而程序运行是有局部性原理的,我们可以将程序最常用的部分驻留在内存中,而将一些不常用的数据存放在磁盘里,这是动态装入的基本原理。
2.1 覆盖装入(Overlay)
|
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/2 6:36:21- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |