Unix下C语言----进程控制

本文详细介绍了Unix系统中的进程控制,包括进程概念、进程与程序、线程、前台后台进程、守护进程、父子进程、进程状态、进程调度、进程标识、环境变量、进程的生命周期(创建、执行、休眠、终止)以及进程同步。文中还通过实例讲解了如何使用fork、exec、wait等函数进行进程操作,并探讨了不同进程模型如fork-exec、vfork-exec和system模型的使用场景。
摘要由CSDN通过智能技术生成

 一、进程基本环境

  进程是程序的一次运行,是运行在自己的虚拟地址空间的一个具有独立功能的程序。进程是分配和释放资源的基本单位,当程序执行时,系统创建进程,分配内存和CPU等资源;进程结束时,系统回收这些资源。

 

 

  1进程概念

     进程通常由程序、数据和进程控制块(PCB)三个部分组成的。其中,程序部分描述了进程锁要完成的功能;数据部分为进程提供了运行所需的堆栈和私有数据;进程控制块则含有进程的描述和控制信息,几种反应进程的动态特性,是系统识别和控制进程的依据。

 

  1)进程与程序

     进程是程序的一次执行,故程序是一个静态的概念,本身可以作为一种软件资源长期保存;而进程是程序的执行过程,是动态概念,有一定的生命周期,具有产生、发展和消亡的过程。

     程序是一个规划,它计划了所要执行的代码和所要完成的动作;进程是一位执行者,它依照程序的设计,申请资源,计算数据,并完成预定的任务。一个程序可以同时由多个进程执行;一个进程也可以有顺序地执行若干程序。

    进程不能脱离具体程序而存在,程序规定了相应进程所要完成的动作;程序不能脱离进程而应用,进程将程序的设想变成可能。

 

  2)进程与线程

    线程又名轻负荷进程,它是在进程基础上程序的一次执行,一个进程可以拥有多个线程。

    线程没有独立的资源,它共享进程的ID,共享进程的资源。

    线程是UNIX最小的调度单位,目前有系统级调度和进程级调度两种线程调度实行方式:系统级调度的操作系统以线程为单位进程调度;进程级调度的操作系统以仍以进程为单位进行调度,进程再为其上运行的线程提供调度控制。

 

  3)前台进程和后台进程

    用户在Shell提示符处键入命令,创建进程,此后该进程接管终端,Shell中不能再输入其它的命令,知道进程执行完毕,才将终端控制权返回Shell并显示用户提示符。这样子的进程是前台进程。

   如果用户在输入Shell命令时,在命令串上加上"&",于是就可以同时运行进程和执行Shell操作。这样子的进程就是后台进程,后台进程并不接管终端,因此必须是非交互式的。

 

  4)守护进程

    守护进程是与终端无关,常住后台执行的特殊进程。UNIX中最著名的2个守护进程是:

sysproc进程:UNIX的第一个进程,标志号为0,能合理地调度系统中运行的进程,负责将进程从硬件交换区调入内存(换入)或将进程从内存调到硬盘交换区(换出)。

init进程:系统初始化进程,进程标志号为1,是除sysproc外所有进程的祖先。

 

 

  5)父子进程

    进程采用树型结构管理。当一个进程启动另一个进程时,被启动的进程就是子进程,原进程就是父进程。在UNIX中,使用系统调用fork创建进程。fork复制了父进程的数据、堆栈段和进程环境,因此,子进程继承了父进程的某些环境,并且共享父进程的代码段。但子进程也拥有自己的环境,父子进程以并行的执行同一程序的不同分支。

 

  6)进程状态

    进程在运行过程中具有运行状态、就绪状态和睡眠状态。

    运行态:进程已经分配到CPU,正在处理机上执行时的装填。同一时刻处于运行态的进程不能大于CPU的数目。运行态又可以细分用户态和和心态两种。用户态:如果进程正在运行用户的代码,进程就处于用户态。核心态:如果进程出现系统调用或系统中断,运行操作系统的内部代码,进程就处于和心态。

    就绪态:进程已具备运行条件,但是其它进程正占用CPU,所以暂时不能运行而等待分配CPU的状态。处于就绪态的进程一旦获得了CPU,就能立刻运行。

    睡眠态:进程正在等待某种时间的发生而暂时不能运

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值