进程概念

进程概念

进程是什么?

进程就是一个运行起来的程序;(进程中的程序)

程序是静态的指令集,进程是一个程序的动态的运行过程;

 

操作系统如何实现多个程序的调度运行:将这个运行中的程序描述起来,然后将这些描述组指起来进行管理通过实现对pcb的调度管理实现对运行中程序的切换调度运行--对于操作系统来说这个描述信息--pcb就是进程;

进程概念

进程就是pcb,是操作系统对一个运行中程序的描述,通过这个描述,实现对程序的运行调度
这个pcb/这个描述在linux中是一个结构体---struct task_struct{……}

 

描述的信息:内存指针,程序计数器,上下文数据,进程标识符PID,IO信息,进程状态,记账信息,……

内存指针:用于指向程序指令数据在内存中的位置;

数据计数器/上下文数据:用于保存当前的程序的运行;

 

操作系统认为现在要运行哪个程序了,则找到对应的pcb,将pcb中保存的各种描述信息加载到cpu寄存器中;

CPU的分时机制:操作系统调度一个进程在cpu上运行,只运行很短的一段时间(时间片),时间片运行完毕,则切换调度到下一个程序(实现了多任务的并发/并行处理)

并发:轮询处理执行;            并行:同时运行/执行;

操作系统该调度哪个进程在cpu上运行,就是操作系统中有一系列的调度算法;

CPU多核--多个处理核心--每个核心都有自己的寄存器,可以调度一个程序的运行;

 

进程状态

  1. 运行态 R:就绪/运行;    (运行状态的进程才会被操作系统调度在cpu上运行)
  2. 可中断休眠态 S:当前的阻塞能够被中断;
  3. 不可中断休眠态 D:当前的阻塞不会被中断唤醒,等待条件满足自己醒来;
  4. 停止态 T:停止运行,什么都不干;
  5. 僵死态 Z:进程已经退出,但是资源没有完全被释放的一种状态;(这是一种等待后续处理的状态)

相关命令:ps -aux 查看进程信息 /  kill    /kill -9  强制杀死进程

僵尸进程:处于僵死状态的进程,指的是进程已经退出不在运行,但是资源没有完全释放;

 

僵尸进程是怎么产生的?

子进程先于父进程退出,但是父进程没有关注子进程的退出状态,因此子进程成为僵尸进程;

 

僵尸进程的危害:资源泄露,一个用户所能创建的进程数量是有限的(-ulimit -a 查看),并且资源没有完全回收会占据内存资源
处理方法
  1. 进程等待--等待子进程的退出
  2. 退出父进程(父进程退出,子进程保存退出原因就没有意义了,因此也就被释放了)
 

孤儿进程:父进程先于子进程退出,则子进程成为孤儿进程,这个孤儿进程的父进程成为了1号进程(init),并且这个孤儿进程运行在后台;

孤儿进程是不会成为僵尸进程的,因为1号进程随时关注子进程退出;

 

守护进程:是一种特殊的孤儿进程,父进程是1号进程,运行在后台,并且与终端以及登陆会话脱离关系,不再受影响,守护进程通常是一种运行在系统后台的批处理程序(默默的做一些循环往复的事情);
精灵进程:就是守护进程;