一、进程
1、查看进程:ps-aux ps-ef ps-axj top pstree
2、什么是进程
程序的一次动态执行过程,包括创建、调度、消亡
3、进程和程序的区别
程序(a.out)是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念
进程(./a.out)是一个动态的概念,它是程序执行的过程,包括创建、调度和消亡
4、
4、进程的类型
交互进程 (后台进程 、前台进程) 批处理进程 守护进程
5、进程的状态
运行态、等待态(可中断、不可中断)、停止态、死亡态
6、进程的模式
用户进程、内核进程
7、进程相关的系统调用
创建进程(fork) frok之后子进程才创建成功 基本完全复制
8、getpid getppid
查看当前进程PID 查看父进程PID
9、进程的推出
exit _exit return
注意:(1)exit会刷新缓冲区
(2)_exit不会刷新缓冲区
10、wait waitpid
(1)wait
调用该函数使进程阻塞,直到任一个子进程结束或者是该进程接收到了一个信号为止。如果该进程没有子进程或者其子进程已经结束,wait函数会立即返回
(2)waitpid
11、孤儿进程
父进程先退出,子进程被systemd进程收养,变为后台进程
12、僵尸进程
子进程先于父进程退出,父进程没有回收子进程的资源(task_struct),此时子进程就变为僵尸进程
13、守护进程
- 在后台运行,与终端无关
- 在系统启动时运行,系统关闭时停止运行
14、进程组
进程组是一个或多个进程的集合。进程组由进程组ID来唯一标识。
每个进程组都有一个组长进程,进程组ID就是组长进程的进程号
15、 会话组
会话组是一个或多个进程组的集合
16、守护进程的创建
(1)创建子进程,父进程退出
(2)在子进程中创建新会话
(3)改变当前目录为根目录
(4)重设文件权限掩码
(5)关闭文件描述符
17、无名管道
特点:
- 只能用于具有亲缘关系(父子进程、兄弟进程)的进程之间的通信
- 半双工的通信模式,具有固定的读端和写端
(3)管道可以看成是一种特殊的文件(内核中的一块内存
3、为什么无名管道只能用于具有亲缘关系之间的通信?
父进程创建了管道,获得了文件描述符,子进程继承了父进程的文件描述符(fd[0]、fd[1])
18、有名管道
特点:
(1)无名管道只能用于具有亲缘关系的进程之间,这就限制了无名管道的使用范围
(2)有名管道可以使互不相关的两个进程互相通信。有名管道可以通过路径名来指出,并且在文件系统中可见
(3)进程通过文件IO来操作有名管道
(4)有名管道遵循先进先出规则
(5)不支持如lseek() 操作
二、信号
1、概念
2、创建信号
3、alarm
4、pause
pause()函数是用于将调用进程挂起直到收到信号为止。
5、kill(给指定进程发信号)
6、raise(给自己发信号)
6、共享内存
7、消息队列
三、线程
2、线程的同步和互斥
步骤:创建锁 初始化锁 上锁 解锁
3、同步
5、无名信号量
6、有名信号量