1、定义:已经运行的应用程序
2、程序和进程
- 程序:二进制文件,占用磁盘空间
- 进程:启动的程序,所有的数据都在内存中,需要占用更多的系统资源(CPU,物理内存)
3、并行和并发
并发和并行在宏观上都是同时处理多路请求的概念,但并发和并行又有区别
- 并发:是指不同事件在同一时间间隔内执行,例如:要求在100分钟内让100个人都喝上咖啡,但是只有一台咖啡机,解决方法是将100分钟分成100份,每个人接1分钟,这样就可以满足要求。在操作系统层面上CPU就好比这台咖啡机,100个人就相当于各种进程,在同一段时间内要同时运行QQ、微信等各种进程,在用户看来好像是这些应用程序同时执行,实际上是在同一时间间隔内CPU轮流进行处理,得益于CPU处理速度非常快,因此我们感觉好像是同时运行多个程序。
- 并行:是指不同事件在同一时刻执行。就好比上文中提到的如果有100台咖啡机,那么就可以满足在同一时刻100个人都在喝咖啡,计算机亦是如此,如果有多个CPU进行处理,就可以实现让多个进程同时运行。
4、进程控制块pcb
每个进程都有pcb,pcb实际上就是一个结构体,这个结构体存储着进程的相关信息,具体包括如下:
- 进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数。
- 进程的状态:就绪、运行、挂起、阻塞等状态。
- 进程切换时需要保存和恢复的一些CPU寄存器。
- 描述虚拟地址空间的信息。
- 描述控制终端的信息。
- 当前的工作目录(进程在哪个目录下运行)。
- umask掩码。
- 文件描述符表,包含很多指向file结构体的指针。
- 和信号相关的信息。
- 用户id和组id。
- 会话(多个进程组)和进程组。
- 进程可以使用的资源上限。
5、进程的五种状态
6、进程相关的命令
- ps 查看进程信息(查询具体信息使用不同的参数)
- kill - 向指定的进程发送信号,kill -9 无条件杀死进程