标签:pen 就是 特殊 作业调度 stop exec 唤醒 操作系统 strong
基本状态:
进程转换:
进程在被挂起(suspend)之后进入静止状态,静止状态也分为就绪和阻塞。因此进程共有5种状态。通过Active激活原语可将静止进程转换到活动进程,同样通过suspend原语可以将活动进程变为静止进程,即为挂起。
Linux进程的状态
Linux在内核中通过task_struct结构来表示,进程状态通过该结构的state成员来描述。
进程控制
进程控制即系统使用一个具有特定功能的程序段来创建、撤销进程以及完成进程各状态间的转换。
进程的家族关系:
进程可利用系统调用功能来创建新进程,创建者称为父进程,被创建者称为子进程。子进程也可创建进程,从而形成一棵进程树。
子进程的许多功能都是从父进程继承而来,包括:用户标识符、环境变量、打开文件、文件系统的当前目录、已经连接的共享存储区和信号处理例程入口表等。
还有一种进程在系统启动时被创立,在系统停止时终止,有及其重要的地位。如UNIX系统的0^#进程和1^#进程。0^#进程是系统的调度和对换进程,1^#进程是创建进程,是所有进程的祖先进程。
Linux系统由init()函数创建系统的第一个进程init,标识符为1,其完成一些初始化任务如打开系统控制台、安装根文件系统、启动系统的守护进程、执行系统的初始化程序等。init进程使用ect/inittab作为脚本文件创建新进程。
进程的创建与终止
要运行程序必须要创建一个进程,导致进程创建的事件有用户登录、作业调度和为用户提供服务等。
创建进程的步骤:
终止进程:
当系统发生了要求进程终止的事件,操作系统就调用终止进程的原语,终止进程。
进程的阻塞与唤醒。(比较简单,省略)
Linux系统调用
fork()系统调用:Linux利用fork()系统调用创建一个新进程。调用格式通常为:int pid = fork();
pid=0:创建子进程成功,表示从子进程返回,CPU正在运行该子进程。
pid>0:创建子进程成功,表示从父进程返回,pid为新创建子进程的标识符。
pid=-1:创建子进程失败
exec()系统调用:
fork()系统调用创建的子进程和父进程执行的是同一段代码,但是完成的是不同的工作。Linux中fork()创建子进程后,可以由exec()系统调用执行另一个程序。
调用格式为:
int execl(path,arg0[,arg1,..],0)
char *path,*arg0,*arg1..
exec函数族的作用是根据文件名找到相应的可执行文件,也就是在调用进程的内部执行一个可执行文件。执行成功不会返回,失败返回-1
exit()系统调用:
Linux利用exit来实现进程的自我终止。进程在调用exit()并非马上消失,而是进入了僵尸状态,它已经释放了除PCB外的几乎所有内存。
wait()系统调用:
该调用将进程挂起,直到接收到终止信号。
标签:pen 就是 特殊 作业调度 stop exec 唤醒 操作系统 strong
原文地址:https://www.cnblogs.com/lunar-ubuntu/p/12233512.html