1.进程创建:fork、system、exec函数族(execl、execv)。
2.进程退出:exit、_exit。
3.进程等待:wait(用于处理僵尸进程)。
4.三种特殊进程:
(1)僵尸进程:父进程退出,未调用wait等待子进程退出,子进程资源无法回收。
(2)孤儿进程:父进程退出,子进程仍然继续运行,交给init进程进行资源回收。
(3)守护进程:后天运行的进程,并周期性地执行任务或等待处理事件。i
5.进程调度(由内核进行调度)(保证进程同步-互斥)
(1)开发人员角度:只需学会如何创建进程,使创建的进程能够安全的访问资源。
(2)系统实现角度:调度算法(流水线技术)。
6.进程分类及其处理方法:
(1)处理器消耗型:减少优先级、分配尽可能长的时间片。
(2)I/O消耗型(阻塞、低效率):增加优先级、增加实时性、增强用户体验。
(3)两者混合型。
7.进程状态:就绪态、执行态、等待态。
8.init进程是所有进程的父进程。
9.linux终端查看当前状态下系统进程命令:ps –ax
10.进程间通信方法:文件/数据库、管道、信号、消息队列、共享内存信号量、套接字。
十九、pipe(管道通信)
1.头文件:#include<unistd.h>
2.函数原型:int pipe(int pipefd[2]);
3.函数形参:pipefd[2]缓存地址,缓存用于存放读写管道的文件描述符。
元素[0]:读管道的读文件描述符。
元素[1]:写管道的写文件描述符。
注:读、写文件描述符是不同的两个描述符(管道也是文件)。
4.功能:创建一个用于父子进程之间通信的无名管道(缓存), 并将管道与两个读写文件描述符关联起来。
5.管道分类:无名管道(父子间通信)、有名管道(任意间通信)。
6.注意事项
(1)pipe使用在fork之前。
(2)同一进程中读写操作不可同时。