免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 969 | 回复: 0
打印 上一主题 下一主题

unix环境高级编程第8章 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-13 15:08 |只看该作者 |倒序浏览
1   进程ID 0是调度进程,常常被称为交换进程(swapper)。该进程并不执行任何磁盘上的程序,它是内核的一部分,因此也被称为系统进程。进程ID 1通常是init进程,在自举过程结束时由内核调用。该进程的程序文件在unix的早期版本中是/etc/init,在较新版本中是/sbin/init。此进程负责在内核自举后起动一个unix系统。init通常读与系统有关的初始化文件( /etc/rc*文件),并将系统引导到一个状态(例如多用户)。init进程决不会终止。它是一个普通的用户进程(与交换进程不同,它不是内核中的系统进程),但是它以超级用户特权运行。在某些unix的虚存实现中,进程ID 2是页精灵进程(pagedaemon )。此进程负责支持虚存系统的请页操作。与交换进程一样,页精灵进程也是内核进程。
2   子进程是父进程的复制品。子进程获得父进程数据空间、堆和栈的复制品。注意,这是子进程所拥有的拷贝。父、子进程并不共享这些存储空间部分。如果正文段是只读的,则父、子进程共享正文段。现在很多的实现并不做一个父进程数据段和堆的完全拷贝,因为在fork之后经常跟随着exec。作为替代,使用了在写时复制( Copy - On - Write, COW)的技术。这些区域由父、子进程共享,而且内核将它们的存取许可权改变为只读的。如果有进程试图修改这些区域,则内核为有关部分,典型的是虚存系统中的“页”,做一个拷贝。

3   strlen计算不包含终止null字节的字符串长度,而sizeof则计算包括终止符在内的缓冲区长度。前者要通过调用函数来实现,后者由于缓冲区已用字符串进行了初始化,其长度是固定的,所以在编译时就已得知缓冲区长度。
4  标准输出缓冲区是由换行符进行冲洗的,所以在遇到\n时会自动将存放在缓冲区的字符串给输出到标准输出设备中去。
5  vfork与fork的作用不一样,前者是创建子进程后保证子进程先运行,在其退出之前一直是在父进程的地址空间里运行,所以它会改变父进程中的变量值。但是后者不能改变父进程的变量值,因为二者是在不同的地址空间里工作的。
6  _exit不同于exit,前者是在退出时不会冲洗所有标准I/O流,而后者则会。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/45292/showart_359113.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP