目录
程序和进程(Linux)
程序其实是一个含有运行的代码和数据以及其他关于本程序在内存中运行的大小等信息的一个合体。而这里所讲的程序我们以可执行文件来代替。
程序在磁盘上,当操作系统把程序相关信息读入到内存中并合理的分配了运行时的内存大小,也就是堆内存和栈内存之后,创建PCB然后程序就变成了进程,那么程序是不是就是可执行文件?在linux中的可执行文件的类型主要有两种,.out和ELF文件
代码和数据为什么分开存放?
1.程序执行之后,代码和数据可以被映射到不同属性的虚拟内存中。因为代码一般是只读的,而数据是可读可写的。
2.现代CPU有强大的缓存体系,程序和代码分类可以提高程序的局部性,增加缓存的命中率。
3.最重要的一个原因是当有多个程序副本在运行时,只读部分可以只在内存中保留一份,这样大大节省了内存。(代码段只读,数据的可读可写)
原图

头部里面存的是整个进程的信息。
程序在Linux中表现为可执行文件,如.out和ELF格式。当加载到内存并分配堆栈空间,形成进程。代码和数据分开存放是因为:1) 可映射到不同属性内存,代码只读,数据可读写;2) 提高缓存命中率,利用CPU缓存体系;3) 多进程时,只读代码段可共享,节省内存。
2807

被折叠的 条评论
为什么被折叠?



