管道是一种先进先出(FIFO)的特殊文件,常量PIPE_BUF指定一个管道缓冲区可容纳的最大字节数。管道分为两类:
□无名管道 □有名管道
无名管道
无名管道主要用于具有同一祖先的进程间通信
系统调用: status=pipe (fds)
fds是一个二元整型数组,用于存放标识管道的两个文件描述符。
fds是一个二元整型数组,用于存放标识管道的两个文件描述符。当调用pipe后,返回两个文件描述符fds[0]和fds[1]。父进程创建子进程时,子进程会继承父进程中的这两个文件描述符。当需要完成通信的进程结束时,无名管道也自行结束.
现在的UNIX系统版本中pipe系统调用可以返回两个全双工的文件描述符
有名管道 (FIFO管道)
有名管道(named pipe)生成时在文件系统中生成一个目录项,允许其他进程对该管道进行访问。
1)命令方式: mknod PIPE p 2) 系统调用方式: intmknod( path, mode, dev)
系统调用dup
dup(fd)
复制文件描述符fd至最小未使用的文件描述符. dup可以用来实现输入输出重定向。
进程通信技术除了管道通信外还有共享存储区通信技术、IPC等
线程 ——轻量进程(Light-WeightProcess, LWP).
线程(Threads):比进程更小的独立运行的基本单位,用它来提高系统内程序并发执行的程度,以提高资源利用率和系统吞吐量
进程的两个基本属性:
1.进程是一个可拥有资源的独立单位。
2.进程同时又是一个可独立调度和指派的基本单位。
这两个属性构成了进程并发执行的基础
然而,为使程序能并发执行,系统还必须进行以下一系列操作:
1.创建进程
系统在创建一个进程时,必须为它分配其所必须的、除处理机以外的所有资源,如内存空间、I/O设备、以及建立相应的PCB.
2.撤销进程
在撤销进程时,必须先对其所占的资源执行回收操作,然后再撤销PCB.
3.进程切换
对进程进行切换时,由于要保留当前进程的cpu环境和设置新选中进程的cpu环境,因此须花费不少的处理机时间。
在同一进程中,线程的切换不会引起进程的切换,但从一个进程的线程切换到另一个进程中的线程时,将会引起进程的切换。
PS:这几篇文章是自己的复习总结,部分内容是自己按照自己的理解做出的关系图,如果有误,请各位批评指正,而且这些文章并不难,只是一些知识点的总结,没有涉及深层次的知识,所以适合初学者观看。Linux系统系统复杂,其中有些知识点再此并为列出,请有意向继续学习的读者自行参考其他前辈的博客学习。期末复习系列知识点小结至此结束。