进程、作业和进程组

Linux是一个多用户多任务的操作系统。 多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。 操作系统管理多个用户的请求和多个任务。
大多数系统都只有一个CPU和一个主存,但一个系统可能有多个二级存储磁盘和多个输入/输出设备。操作系统管理这些资源并在多个用户间共享资源,当您提出一个请求时,给您造成一种假象,好像系统只被您独自占用。而实际上操作系统监控着一个等待执行的任务队列,这些任务包括用户作业、操作系统任务、邮件和打印作业等。操作系统根据每个任务的优先级为每个任务分配合适的时间片,每个时间片大约都有零点几秒,虽然看起来很短,但实际上已经足够计算机完成成千上万的指令集。每个任务都会被系统运行一段时间,然后挂起,系统转而处理其他任务;过一段时间以后再回来处理这个任务,直到某个任务完成,从任务队列中去除。
Linux系统上所有运行的东西都可以称之为一个进程。每个用户任务、每个系统管理守护进程,都可以称之为进程。Linux用分时管理方法使所有的任务共同分享系统资源。我们讨论进程的时候,不会去关心这些进程究竟是如何分配的,或者是内核如何管理分配时间片的,我们所关心的是如何去控制这些进程,让它们能够很好地为用户服务。
进程的一个比较正式的定义是:在自身的虚拟地址空间运行的一个单独的程序。进程与程序是有区别的,进程不是程序,虽然它由程序产生。程序只是一个静态的指令集合,不占系统的运行资源;而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。而且一个程序可以启动多个进程。
Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。
交互进程——由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。
批处理进程——这种进程和终端没有联系,是一个进程序列。
监控进程(也称守护进程)——Linux系统启动时启动的进程,并在后台运行。
上述三种进程各有各的作用,使用场合也有所不同。
进程和作业的概念也有区别。一个正在执行的进程称为一个作业,而且作业可以包含一个或多个进程,尤其是当使用了管道和重定向命令。例如“nroff -man ps.1|grep kill|more”这个作业就同时启动了三个进程。
作业控制指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程,等一会儿再继续执行该进程。shell将记录所有启动的进程情况,在每个进程过程中,用户可以任意地挂起进程或重新启动进程。作业控制是许多shell(包括bash和tcsh)的一个特性,使用户能在多个独立作业间进行切换。
一般而言,进程与作业控制相关联时,才被称为作业。
在大多数情况下,用户在同一时间只运行一个作业,即它们最后向shell键入的命令。但是使用作业控制,用户可以同时运行多个作业,并在需要时在这些作业间进行切换。这会有什么用途呢?例如,当用户编辑一个文本文件,并需要中止编辑做其他事情时,利用作业控制,用户可以让编辑器暂时挂起,返回shell提示符开始做其他的事情。其他事情做完以后,用户可以重新启动挂起的编辑器,返回到刚才中止的地方,就象用户从来没有离开编辑器一样。这只是一个例子,作业控制还有许多其他实际的用途。
关系:一个作业通常包括几个进程,几个进程共同完成一个任务,即作业。
1. 进程组
每个进程除了有一个进程ID之外,还属于一个进程组。进程组是一个或多个进程的集合。通常,它们与同一作业相关联,可以接收来自同一终端的各种信号。每个进程组有一个唯一的进程组ID。每个进程组都可以有一个组长进程。组长进程的标识是,其进程组ID等于其进程ID。
组长进程可以创建一个进程组,创建该组中的进程,然后终止。只要在某个进程组中一个进程存在,则该进程组就存在,这与其组长进程是否终止无关。

2.作业
Shell分前后台来控制的不是进程而是作业(Job)或者进程组(Process Group)。一个前台作业可以由多个进程组成,一个后台也可以由多个进程组成,Shell可以运行一个前台作业和任意多个后台作业,这称为作业控制。
作业与进程组的区别:如果作业中的某个进程又创建了子进程,则子进程不属于作业。一旦作业运行结束,Shell就把自己提到前台,如果原来的前台进程还存在(如果这个子进程还没终止),它自动变为后台进程组。

3.一个作业是我们提交给shell的一项任务或者批处理,和操作系统无关。
进程是具体执行的一个可执行程序,是操作系统调度的对象。


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 进程调度和作业调度是操作系统中两个重要的调度概念。 进程调度是指操作系统在多个进程运行时,根据一定的策略和算法,决定哪个进程可以获得CPU时间片,从而实现进程之间的切换和调度。进程调度的目的是提高系统的资源利用率和响应速度,以及保证进程的公平性和优先级。 作业调度是指操作系统在多个作业提交时,根据一定的算法和策略,决定作业的执行顺序和分配资源,以满足多个作业之间的资源共享和冲突解决。作业调度的目的是提高系统的吞吐量和效率,以及减少用户的等待时间和响应时间。 总的来说,进程调度是针对已经在系统中运行的多个进程进行调度,而作业调度是针对尚未进入系统的多个作业进行调度,两者的目的和实现方法都有所不同。 ### 回答2: 进程调度和作业调度都是操作系统中重要的调度机制,它们在管理和分配系统资源方面具有不同的职责和目标。 进程调度是操作系统根据进程的优先级和调度算法,决定将CPU分配给哪个进程执行的过程。进程调度的目标是提高系统的吞吐量、响应时间和公平性。它决定了进程的执行顺序,保证了资源的合理分配。进程调度算法有多种,如先来先服务(FCFS)、最短作业优先(SJF)、最高响应比优先(HRRN)等,根据不同的应用场景选择合适的算法。 作业调度是在多道程序系统中,根据作业的优先级和资源需求,调度作业的执行顺序。作业调度的目标是提高系统的吞吐量、资源利用率和作业的响应时间。它主要负责作业的分派和切换,在计算机系统中,一个作业可以由多个进程成。作业调度算法有多种,如先来先服务(FCFS)、最短作业优先(SJF)、最高响应比优先(HRRN)等,与进程调度算法有些相似。 进程调度和作业调度的区别在于调度的单位不同。进程调度是调度进程,决定哪个进程优先获得CPU资源。而作业调度是调度作业,决定作业的执行顺序。进程调度可以看作是作业调度的一部分,两者紧密相关。 总结起来,进程调度和作业调度在操作系统中都起着重要的作用,它们通过不同的调度算法,来提高系统的吞吐量、响应时间和资源利用率。 ### 回答3: 进程调度和作业调度是操作系统中的两个重要概念,负责对进程作业进行调度和管理。 首先,进程调度是指在操作系统中,根据一定的算法和策略,选择合适的进程分配处理机的过程。其目标是提高系统的吞吐率、响应时间和公平性。进程调度主要关注的是当前系统中处于就绪状态的进程,其作用是根据进程的优先级、处理机利用率、IO操作等因素,决定将处理机分配给哪个进程执行。进程调度算法有多种,如先来先服务(FCFS)、最短作业优先(SJF)、优先级调度、轮转法等。 而作业调度是指操作系统中负责管理和调度作业的过程。作业是一相互关联的进程的集合,它们通常是用户提交给系统执行的任务。作业调度的目标是保证不同作业的公平性和优先级,并提高系统的效率和资源利用率。作业调度主要关注的是作业队列中等待执行的作业,其作用是根据作业的类型、优先级、资源需求等因素,决定将处理机分配给哪个作业执行。作业调度算法有多种,如先来先服务(FCFS)、短作业优先(SJN)、优先级调度等。 总结来说,进程调度和作业调度在调度的对象和范围上存在差异。进程调度主要关注的是当前就绪状态的进程,而作业调度主要关注的是作业队列中等待执行的作业。此外,进程调度和作业调度使用的调度算法也略有差异,但目标都是提高系统的效率和公平性,合理利用系统资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值