简述计算机组成 (2)

程序代码和数据:
对所有的进程来说,代码是从同一固定地址开始的,紧接着的是和C全局变量相对应的数据位置,代码和数据区是直接按可执行目标文件的内容初始化的.

堆:
代码和数据区后紧随着的是运行时堆.代码和数据区在进程一开始运行时就被指定了大小,于此不同,当调用向malloc和free这样的C标准库函数时,堆可以在运行时动态地扩展和收缩.

共享库:
大约在地址空间的中间部分是一块用来存放像C标准库和数学库这样的共享库的代码和数据区域

栈:
位于用户虚拟地址空间顶部的是用户栈,编辑器用它来实现函数调用.和堆一样用户栈可以在程序执行期间动态的扩展和收缩.每次我们调用一个函数时,栈就会增长;从一个函数返回时,栈就会收缩

内核虚拟内存
地址空间顶部的区域是为内核保留的,不允许用户程序读写这个区域的内存或直接调用内核代码定义的函数.

文件

文件就是字节序列

结尾

最近开始读<深入理解计算机系统>,学到了很多,本文是对书中知识的梳理和归纳,只学了一点皮毛,很多概念还没有完全吃透,日后功力见长再来补充.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzpfxj.html