linux系统编程
marine0401
这个作者很懒,什么都没留下…
展开
-
PCB(进程控制块)中所储存的信息
1.进程id。系统中每个进程有唯一的id,在c语言中用pid_t类型表示,其实就是一个非负整数。2.进程的状态,有就绪,运行,挂起,停止等状态3.进程切换时需要保存和恢复的一些CPU寄存器4.描述虚拟地址空间的信息。5,描述控制终端的信息。6.当前工作目录(Current Working Directory)7.umask掩码8.文件描述符表,包含很多指向结构体的指针9.和信号相关...转载 2019-04-20 17:21:31 · 5136 阅读 · 0 评论 -
父子进程共享
父子进程之间在fork后,有哪些相同,哪些相异之处呢?刚fork之后:父子相同之处:全局变量,data,text,栈,堆,环境变量,用户ID,宿主目录,进程工作目录,信号处理方式父子不同之处:1.进程ID 2.fork返回值 3.父进程ID 4 .进程运行时间 5.闹钟(定时器) 6.未决信号集似乎,子进程复制了父进程0-3G用户空间内容,以及父进程的PCB,但pid不同。真的每fork一...原创 2019-04-21 08:49:17 · 1474 阅读 · 0 评论 -
回收子进程
回收子进程的函数:pid_t wait(int *status);//成功:清理掉的子进程ID;失败:-1(没有子进程)当进程终止时,操作系统的隐式回收机制会:1.关闭所有文件描述符2.释放用户空间分配的内存。内核的PCB仍存在。其中保存该进程的退出状态。(正常终止——>退出值;异常终止——>终止信号)可使用wait函数传出参数status来保存进程的退出状态。借助宏函数来进一...原创 2019-04-21 16:58:47 · 225 阅读 · 0 评论 -
进程间通信
在进程间完成数据传递需要借助操作系统提供特殊的方法,如:文件,管道,信号,共享内存,消息队列,套接字,命名管道等。随着计算机的蓬勃发展,一些方法由于自身设计缺陷被淘汰或者弃用。现今常用的进程间通信方式有:①管道(使用最简单)②信号(开销最小)③共享映射区(无血缘关系)④本地套接字(最稳定)管道1.其本质是一个伪文件(实为内核缓冲区)2.由两个文件描述符引用,一个表示读取端,一个表示写...原创 2019-04-23 18:11:59 · 121 阅读 · 0 评论 -
共享存储映射
存储映射I/O存储映射I/O(memory-mapped I/O)使一个磁盘文件与存储空间中的一个缓冲区相映射。于是当从缓冲区中获取数据,就相当于读文件中的相应字节。与此类似,将数据存入缓冲区,则相应的字节就自动写入文件。这样,就可在不适用read和write函数的情况下,使用地址(指针)完成I/O操作。使用这种方法,首先应通知内核,将一个指定文件映射到储存区域中。这个映射工作可以通过mmap...原创 2019-04-23 21:25:36 · 307 阅读 · 0 评论