进程概念
进程概念
进程是什么?
进程就是一个运行起来的程序;(进程中的程序)
程序是静态的指令集,进程是一个程序的动态的运行过程;
操作系统如何实现多个程序的调度运行:将这个运行中的程序描述起来,然后将这些描述组指起来进行管理通过实现对pcb的调度管理实现对运行中程序的切换调度运行--对于操作系统来说这个描述信息--pcb就是进程;
进程就是pcb,是操作系统对一个运行中程序的描述,通过这个描述,实现对程序的运行调度
这个pcb/这个描述在linux中是一个结构体---struct task_struct{……}
描述的信息:内存指针,程序计数器,上下文数据,进程标识符PID,IO信息,进程状态,记账信息,……
内存指针:用于指向程序指令数据在内存中的位置;
数据计数器/上下文数据:用于保存当前的程序的运行;
操作系统认为现在要运行哪个程序了,则找到对应的pcb,将pcb中保存的各种描述信息加载到cpu寄存器中;
CPU的分时机制:操作系统调度一个进程在cpu上运行,只运行很短的一段时间(时间片),时间片运行完毕,则切换调度到下一个程序(实现了多任务的并发/并行处理)
并发:轮询处理执行; 并行:同时运行/执行;
操作系统该调度哪个进程在cpu上运行,就是操作系统中有一系列的调度算法;
CPU多核--多个处理核心--每个核心都有自己的寄存器,可以调度一个程序的运行;
进程状态
- 运行态 R:就绪/运行; (运行状态的进程才会被操作系统调度在cpu上运行)
- 可中断休眠态 S:当前的阻塞能够被中断;
- 不可中断休眠态 D:当前的阻塞不会被中断唤醒,等待条件满足自己醒来;
- 停止态 T:停止运行,什么都不干;
- 僵死态 Z:进程已经退出,但是资源没有完全被释放的一种状态;(这是一种等待后续处理的状态)
相关命令:ps -aux 查看进程信息 / kill /kill -9 强制杀死进程
僵尸进程:处于僵死状态的进程,指的是进程已经退出不在运行,但是资源没有完全释放;
僵尸进程是怎么产生的?
子进程先于父进程退出,但是父进程没有关注子进程的退出状态,因此子进程成为僵尸进程;
僵尸进程的危害:资源泄露,一个用户所能创建的进程数量是有限的(-ulimit -a 查看),并且资源没有完全回收会占据内存资源
处理方法:
-
进程等待--等待子进程的退出
-
退出父进程(父进程退出,子进程保存退出原因就没有意义了,因此也就被释放了)
孤儿进程:父进程先于子进程退出,则子进程成为孤儿进程,这个孤儿进程的父进程成为了1号进程(init),并且这个孤儿进程运行在后台;
孤儿进程是不会成为僵尸进程的,因为1号进程随时关注子进程退出;
守护进程:是一种特殊的孤儿进程,父进程是1号进程,运行在后台,并且与终端以及登陆会话脱离关系,不再受影响,守护进程通常是一种运行在系统后台的批处理程序(默默的做一些循环往复的事情);
精灵进程:就是守护进程;