进程与程序
1、进程的定义:
“进程”是操作系统的最基本、最重要的概念之一。但迄今为止对这一概念还没有一个确切的统一的描述。
进程是一个程序与其使用的数据在处理机上顺序执行时发生的活动。
2、进程的特征:
动态性:是程序的一次执行
并发性:进程可以并发执行的
结构性:进程是有结构的
交往性:一个进程在执行过程中可与其他进程产生直接或间接关系
独立性:是系统进行资源分配和调度的一个独立单位
异步性:进程间的相互制约,使进程执行具有间隙
3、进程和程序的主要区别:
①、程序是永存的,进程是暂时的;
②、程序是存储在磁盘上的文件,进程就是运行中的程序
③、进程具有并发性,而程序没有
④、进程是竞争计算机资源的基本单位,程序不是
⑤、进程和程序不是一一对应的:一个程序可对应多个进程,一个进程可以执行一个或几个程序。
进程的分类
类型 | 描述 | 示例 |
交互进程 | 此类进程经常与用户进行交互,需要花费较多时间等待键盘、鼠标操作。 | shell、文本编辑程序、图形应用程序 |
批处理进程 | 此类进程不必与用户交互,经常在后台运行,经常收到调度程序的怠慢 | Windows下的bat、科学计算、数据库搜索引擎 |
实时进程 | 这类进程有很强的调度需要,总是活跃在后台的进程 | 视频音频应用程序、机器人控制程序 |
Linux如何查看进程
1、简单方式:终端ps
指令,显式当前用户有终端控制权的进程信息。
2、列表形式 ps aux
,以列表形式显式详细信息
一般通过ps aux|grep ./root
命令具体查看某进程的状态,例如:
此外还有ps指令的其他操作
ps a | 显示现行终端机下的所有程序,包括其他用户的程序 |
ps -A | 显示所有程序 |
ps c | 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示 |
ps -e | 此参数的效果和指定"A"参数相同 |
ps e | 列出程序时,显示每个程序所使用的环境变量 |
ps f | 用ASCII字符显示树状结构,表达程序间的相互关系 |
ps -H | 显示树状结构,表示程序间的相互关系 |
ps -N | 显示所有的程序,除了执行ps指令终端机下的程序之外 |
ps s | 采用程序信号的格式显示程序状况 |
ps S | 列出程序时,包括已中断的子程序资料 |
ps -t | 指定终端机编号,并列出属于该终端机的程序的状况 |
ps u | 以用户为主的格式来显示程序状况 |
ps x | 显示所有程序,不以终端机来区分 |
进程的详细信息列表
执行、就绪、阻塞状态的关系
父进程与子进程、孤儿与僵尸进程
一个进程A可以创建出另一个进程B,创建者叫父进程,被创建进程叫做子进程,父进程启动子进程后,在操作系统的调用下父进程同时执行(同步)
如果子进程先于父进程结束,会向父进程发送一个信号SIGCHLD信号,父进程收到信号后,就应该去回收子进程的相关资源,但在默认情况下,父进程忽略该信号。
也就是说,当子进程结束后,父进程没有回收子进程的资源,那么子进程就变成了僵尸进程
如果父进程先于子进程结束,子进程就变成了孤儿进程,同时被孤儿院收养(init),然后变成了init的子进程
进程的调度算法有哪些?什么是优先级反转?
调度算法:
先来先服务调度算法
短进程优先调度算法
高优先级优先调度算法
时间片轮转法
优先级反转:
优先级反转是指一个低优先级的任务持有一个被高优先级任务所需要的共享资源。高优先任务由于因资源缺乏而处于受阻状态,一直等到低优先级任务释放资源为止。而低优先级获得的CPU时间少,如果此时有优先级处于两者之间的任务,并且不需要那个共享资源,则该中优先级的任务反而超过这两个任务而获得CPU时间。如果高优先级等待资源时不是阻塞等待,而是忙循环,则可能永远无法获得资源,因为此时低优先级进程无法与高优先级进程争夺CPU时间,从而无法执行,进而无法释放资源,造成的后果就是高优先级任务无法获得资源而继续推进。