当前位置:嗨网首页>书籍在线阅读

11-总结

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

6.9 总结

每个进程都有一个唯一进程标识号(process ID),并保存有对其父进程号的记录。

进程的虚拟内存逻辑上被划分成许多段:文本段、(初始化和非初始化的)数据段、栈和堆。

栈由一系列帧组成,随函数调用而增,随函数返回而减。每个帧都包含有函数局部变量、函数实参以及单个函数调用的调用链接信息。

程序调用时,命令行参数通过argc和argv参数提供给main()函数。通常,argv[0]包含调用程序的名称。

每个进程都会获得其父进程环境列表的一个副本,即一组“名称-值”键值对。全局变量environ和各种库函数允许进程访问和修改其环境列表中的变量。

setjmp()函数和longjmp()函数提供了从函数某甲执行非局部跳转到函数某乙(栈解开)的方法。在调用这些函数时,为避免编译器优化所引发的问题,应使用volatile修饰符声明变量。非局部跳转会使程序难于阅读和维护,应尽量避免使用。

更多资料

[Tanenbaum, 2007]和[Vahalia, 1996]详细描述了虚拟内存管理。[Gorman, 2004]则详细描述了Linux内核内存管理算法和代码。