快捷搜索:  汽车  科技

操作系统进程有几种状态(操作系统进程的分类)

操作系统进程有几种状态(操作系统进程的分类)如何让一个进程成为守护进程?守护一个服务,长期驻留在内存中提供服务,不能够受制于终端;2,孤儿进程当父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程,由于进程不可能脱离进程树而独立存在,孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。孤儿进程被收养后进行正常的释放,没有危害3,守护(精灵)进程

僵尸进程、孤儿进程、守护进程、进程组、会话、前台进程组、后台进程组

1,僵尸进程

子进程结束,父进程没有明确的答复操作系统内核:已收到子进程结束的消息。此时操作系统内核会一直保存该子进程的部分PCB信息,同时将进程的状态置为defunct--->僵尸进程

通过ps -ef | grep "xxx"找到僵尸进程的PID,通过kill -9 PID,也不能强制杀死;即僵尸进程是不能够被直接消除掉的

2,孤儿进程

当父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程,由于进程不可能脱离进程树而独立存在,孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。孤儿进程被收养后进行正常的释放,没有危害

3,守护(精灵)进程

守护一个服务,长期驻留在内存中提供服务,不能够受制于终端;

如何让一个进程成为守护进程?

让一个进程脱离前台进程组关系,如下2步:i、创建一个新的会话;ii、构成孤儿进程

操作系统进程有几种状态(操作系统进程的分类)(1)

进程组:

在Linux下进程除了具有父子关系这样的组织关系以外,还具有分组的组织关系。任何一个进程都需要隶属于某个进程组

每一个进程组都拥有一个独立的进程组编号,可以通过getpgid()方法得到。

每一个进程组都拥有且只拥有一个组长进程。可以通过该组长管理其组内的其他进程的统一行为。(例如:组长进程若获取一个特殊的信号,该信号可以传递给组内所有进程)

进程组ID就是进程组组长的进程ID

进程组内的成员都是组长的子及子孙

创建:setpgid()

会话:

是进程组之间的某种关系,即每一个进程除了要归属于一个进程组以外,还需要归属于一个会话之中,会话的概念主要是从终端登陆到计算机之后得到的

当一个终端登录到计算机之后,为了方便将不同的终端隔离开,同时又能够充分合理的管理一个终端下产生的所有进程,因此而提出了会话的概念。换句不准确描述来说:会话就是用户登录之后从登录服务进程到shell进程所组成的集合

一个会话通常是由多个进程组组成的,分为两部分(前台进程组,后台进程组)。

会话具有一个会话首进程。操作系统通过会话的首进程来管理整个会话中的所有进程组。

创建会话:setsid()方法来创建一个新的会话,从而就会出现新的进程组

前台进程组:

前台进程组是和终端服务进程、bash进程捆绑在一起的,和终端直接相关。那么,终端的任何操作都会影响到所有的前台进程组

在shell交互环境中执行一个命令,就会产生一个新的进程来执行这个命令,不仅如此,还会产生一个新的进程组,该进程组的组长就是被执行命令而形成的新进程

前台进程组的最大问题就在于:由终端控制,终端只需要让进程组的组长停止,其组内的所有进程都会停止

后台进程组:

断开与终端的关系(并非输入、输出、错误输出关系),进程组关系,不再受制于终端而存在,这种进程与进程组被称之为后台的

后台进程存在的理由:需要常驻内存,提供一个服务

猜您喜欢: