一个计算问题往往按照一定的顺序执行,执行的顺序是由编制的程序确定的。
例如,一个作业:输入机读入数据需要 10s,处理器处理数据需要 5s,结果打印需要 15s;执行完总耗时 30s,执行两次需要 60s,呈下图显示:
可以看出,输入机工作时,处理器和打印机在等待;处理器工作时,输入机打印机在等待;各部件依顺序工作,完整的消耗了整个作业的时间周期,效率不高。
现代计算机中的硬件都具有处理器与外围设备并行工作的能力。若将上述作业分成三个可独立执行的模块:输入程序、处理程序、打印程序,输入程序把读入的数据交给处理器执行的同时,由可继续读入下一批数据;处理器处理好一批数据让打印程序输出结果,只要下一批新的数据已经读入,即可在打印的同时又开始处理数据。如图:
可见,程序的并行执行发挥了处理器与外围设备并行工作的能力,使处理器的效率有所提高。但由于处理器的执行速度远远高于外围设备的传输速度,仍可能出现处理器处理好数据交给打印程序输出,但输入机还没读完下一批新的数据,致使处理器处于空闲状态的情况。
让多个计算题同时进入一个计算机系统的主存储器并行执行,这种程序设计方法称为 多道程序设计,这样的计算机系统称为 多道程序设计系统。采用多道程序设计的方法后,能充分发挥处理器的使用效率,增加单位时间内的算题量。
在上例的基础上,再增加一道计算题,每次从磁带机读入一批数据进行处理,当这两道题并行工作时,处理器在 t2 – t4 这段时间内又为第二道题忙碌了一阵,这就减少了处理器的空闲时间,从而提高了处理器的利用率,如图:
需要指出,一道计算题的执行可能受到另一道计算题的制约。在单处理器的计算机系统中,两个程序不能同时占用处理器。因此,从总体上而言,采用多道程序设计可增加单位时间内的算题量,但对每一道来说,执行完成的时间可能比单道执行要延长。
例如:
A 的执行过程为:计算 50ms,打印 100ms,再计算 50ms,打印 100ms;
B 的执行过程为:计算 50ms,输入数据 80ms,再计算 100ms,打印 100ms;
如果 AB 分别单独执行,共需 630ms,使用处理器的时间为 250ms,处理器的使用效率为 250 / 630 * 100% = 39.7%
如果采用多道程序设计,让 AB 两道并行执行的话,则如下图:
可以看出,AB 执行完共耗时 400ms,处理器的使用效率为 250 / 400 = 62.5%!
显然,多道程序设计不仅提高了处理器的使用效率,而且降低了完成计算所需的总时间,从而提高了单位时间内的算题能力,提高了吞吐量。但是多道并行工作时,一道题可能受另一道题的制约,所以对每一道题来说,从开始执行到完成所需的时间有时会比单独执行时所需的时间长。
要使用计算机系统来解决某个问题时首先需要编制程序。程序是具有独立功能的一组指令的集合,程序的执行必须依赖于一个实体 - 数据集。一个程序在一个数据集上的一次执行称为一个进程(Process),因此,程序是静止的,进程是动态的。
进程在执行过程中状态不断发生变化,但在任一时刻仅处于 3 种基本状态之一。其转换关系有 4 种,如下图:
根据上述 4 个基本属性可概括为进程具有如下三个特性:
为了能区别各个不同的进程,记录各个进程执行的情况,对每一个进程都设置一个“进程控制块(Process Control Block,PCB)”。在计算机系统中,进程控制块 就是对进程进行管理和调度的信息集合。
进程控制块包含 4 类信息:
每一个进程都有生命周期。为运行某一个程序,就要为它分配一个工作区(存放程序执行时的数据)和建立一个进程控制块,这时就创建了一个进程。创建后的进程由进程控制块中的进程名来标识,此时的状态为就绪态,当它能占用处理器时就变成了运行态,执行过程中状态可不断发生变化,这些变化的情况记录在进程控制块中,操作系统依据进程控制块对进程进行控制和管理。
一个进程在执行过程中,可要求再创建其他进程。例如,一个作业进入系统中,首先系统为该作业创建一个“编译进程”;编译进程请求系统将源程序读入主存储器,于是系统又创建一个“分配主存”的进程;如此等等,各进程相互协作,完成特定的计算任务。每创建一个进程都有一个进程控制块来标识,这时是该进程的生命的开始;一个进程完成了自己的任务后,系统要收回这个进程占有的工作区和撤销该进程的进程控制块,于是该进程就结束了它的生命而消亡。
操作系统中往往设计一些完成特定功能且不可中断的过程,这些不可中断的过程称为 原语。用于控制进程的原语有:
在单处理器的情况下,每次只能让一个进程运行。在多道程序设计系统中,往往会同时创建多个进程,这些被创建的若干就绪进程可按一定的次序排成队列,等待系统把处理器分配给它们以便运行,这个队列称为 就绪队列。
同一队列中的进程通过进程控制块中的队列指针联系起来。队首指针指向队列中第一个进程控制块,每一个进程控制块的指针指向下一个进程控制块,最后一个进程控制块中的指针值为“0”。如图:
除了就绪队列外,系统中还有其他队列。例如,若干进程都要求使用同一台外围设备时,一次只有一个进程可用,其他进程必须等待,这时就会形成等待队列;同样,系统把等待不同资源的进程组织成不同的等待队列,这样就形成了多个等待队列。
一个进程在执行过程中,由于进程的状态不断变化,就需要从一个队列退出(出队),并进入另一个队列(入队),直至进程结束。系统中负责进程入队和出队的工作称为 队列管理。如图:
当一个指定的进程要退出某队列时,首先找到队首指针,沿链查找要出队的进程,找到后取出该进程的 PCB 中的队列指针,将其送入到前一个进程的 PCB 中的队列指针位置。以此类推,考虑在这种链表结构下,各种位置下发生的出队入队情况。
由于某些事件的出现,中止现行进程的运行,而由操作系统去处理出现的事件,待适当的时候让被中止的进程继续运行,这个过程称为 中断 。引起中断的事件称为 中断源 。对出现的事件进行处理的程序称为 中断处理程序 。
从中断事件的性质来说,一般可以分为以下几种中断类型:
1 ~ 4 类的中断不是正在运行的进程所期待的,而是由于外界的原因迫使正在运行的进程被打断,因此称为 强迫性中断事件。
第 5 类中断是正在运行的进程所期待的,它表示进程对操作系统的某种需求,故称为 自愿性中断事件,在小型和微型计算机中称为 系统调用。
自愿性中断事件是由处理器执行指令时根据指令中的操作码捕获到的,强迫性中断事件是由硬件的中断装置发现的。通常,处理器执行完一条指令后,硬件的中断装置立即检查有无强迫性中断事件发生。
无论发生哪一类中断事件,都由硬件的中断装置暂停现行进程的运行,而让操作系统的中断处理程序占用处理器,这一过程称为 中断响应。
每一个程序都要有一个程序状态字(PSW)来刻画本程序的执行状态,在单处理器的计算机系统中,整个系统设置一个用来存放当前运行进程的 PSW 的寄存器,该寄存器称为 程序状态字寄存器。
为了说明中断响应过程,我们区分三种 PSW:
于是,当发现中断事件后,中断装置首先把出现的中断事件存放到程序状态字寄存器中的中断码位置;然后把程序状态字寄存器中的 PSW 作为旧 PSW存放到预先约定好的主存固定单元中保护起来;再把已经确定好的操作系统处理程序的新 PSW 送到程序状态字寄存器的 PSW 中成为当前 PSW,这一过程称为 交换 PSW。当中断程序占用处理器后,先从保护好的旧 PSW 中取出中断码,分析发生的具体事件,然后对中断事件进行处理。
中断处理程序对中断事件的处理分为两步:保护好被中断进程的现场信息;根据旧 PSW 中指示的中断事件进行具体处理。
各类中断事件的处理原则大致如下:
综上所述,多数情况下,中断处理程序只需要做一些保护现场、分析事件性质等原则性的处理,而具体的处理可由适当的例行程序完成。
中断和进程切换控制流程如图:
采用批处理操作系统和分时操作系统的计算机系统都属于多道程序设计系统。在这样的系统中,往往同时有多个作业请求处理,它们都要使用系统资源从而发生竞争。因此,如何对资源进行管理和分配是操作系统中的一个重要问题。处理器调度担负着对处理器的分配工作,它将决定谁能先占用处理器以及一次能占用多长时间。
在批处理操作系统控制下,把若干个用户作业组织成作业流,成批进入计算机系统中存放在磁盘上的专用区域等待处理。在操作系统中,把磁盘上用来存放作业信息的专用区域称为 输入井。把在输入井中等待处理的作业称为 后备作业。
任何作业只有被装入主存储器后才能执行。当输入井中等待处理的多个作业不能全部同时装入主存储器时,就必须根据系统设计时确定的允许并行工作的道数和一定的规则(算法),从后备作业中选取若干作业装入主存储器中,使它们有机会去获得处理器执行。从输入井中选取后备作业装入主存储器的工作称为 作业调度。不同计算机系统采用不同的规则进行作业调度,但都遵循一个必要条件:即系统现有的尚未分配的资源可以满足备选作业的资源要求。这才能避免进入主存储器的作业又得不到必要的资源无法执行的现象,从而保证系统有较高的吞吐能力。
作业调度会为选中的、进入主存储器中的一个或多个作业创建进程,这些进程的初始状态都为就绪态。在单处理器的计算机系统中,每一时刻都只能让一个进程占用处理器,多个进程竞争处理器时,必须按照一定的规则从就绪进程中选取一个进程,让它来占用处理器,这项选取工作就称为 进程调度。
作业调度和进程调度相互配合能实现多道作业的并行执行。对任何一个作业来说,只有先被作业调度选中才有机会去竞争处理器,只有被进程调度选中才能占用处理器。
从用户角度来说,每一个用户都希望自己的作业能尽快的执行。从计算机系统的角度来说,既要考虑用户的要求,又要有利于系统效率的提高。所以在设计调度算法时,可考虑如下原则:
不同的计算机系统应根据系统的设计目标来决定采用的调度算法。目标不同,选择调度算法的侧重点也不同。常用的作业调度算法:
一个进程让出处理器让另一个进程占用处理器的过程称为 进程切换。
我们知道,进程有就绪态、运行态、等待态。通常,进程切换是由进程状态的变化引起的,进程调度程序会按某种调度算法从就绪状态的进程中选择一个进程占用处理器。
常用的调度算法有:
这种算法就是按进程进入就绪队列的先后次序来选择,调度程序总是把处理器分配给队列中第一个进程,当有新的进程就绪时,就排入就绪队列的末尾。
对每一个进程给出一个优先级,进程调度总是让具有最高优先级的进程先使用处理器。这时又可分为二种方式:
进程的优先级也可以不是固定的。可根据使用资源的情况,所负任务的紧急程度、使用处理器的时间、系统效率等多方面的因素综合考虑。例如,可让操作系统进程优先级高于用户程序进程;或随着时间的推延,逐步提高长时间未使用处理器的就绪进程的优先级;提高经常使用外围设备的进程的优先级。
优先级调度算法也可与先来先服务调度算法混合使用,即相同优先级的进程又可使用先来先服务算法。
时间片 是指允许进程一次占用处理器的最长时间。时间片轮转调度算法把就绪进程按就绪的先后次序排成队列,调度时总是选择就绪队列中的第一个进程,让它占用处理器,但规定它一次占用处理器的时间不能超过预定的时间片。时间片用完无论当前进程执行是否结束,都必须把处理器让给下一个就绪进程使用,而自己则重新排到就绪队列的末尾继续等待。
在分时操作系统中,经常采用时间片轮转调度算法。多个用户通过终端与计算机系统进行一系列交互,计算机系统应及时的对每一个用户的要求作出反应,采用时间片轮转调度算法可使每个用户都感觉到计算机系统对自己有求必应,好像自己单独在使用一个计算机系统。
时间片取值的大小关系到计算机系统的效率和用户的满意度。时间片小一些,系统会尽快的作出应答,这使轮转一圈的总时间减少。如果进程数比较少,则时间片可以大一些,这样可以减少调度次数,提高系统效率。每一个进程的时间片可以相同,也可不同,对需要执行时间长的进程可以给一个大一些的时间片,达到减少调度次数,加快进程执行速度的目的。
线程(Thread) 是现代操作系统的新概念,把用户的一个计算问题作为一个进程,把该进程中可以并行执行的各部分分别作为线程。
线程是进程中可独立执行的子任务,一个进程中可以有多个线程,每一个线程都有一个唯一的标识符和一张线程描述表。线程描述表用来记录线程执行时的现场信息及状态。
虽然一个计算问题可由若干个进程合作完成来提高效率,但进程多了缺点也随之而来,只要表现在:
因而,现代操作系统尽量避免设计过多的进程,而采用线程技术。
采用多线程技术的操作系统仅为被创建的进程分配所需的资源,让一个进程内的各个线程共享进程拥有的资源。因而,进程是资源分配单位,线程则是调度、执行单位。
多线程技术有明显的优越性:
线程有如下属性:
线程与进程有许多相似之处,所以线程往往又被称为 轻型进程。
1. 什么是多道程序设计?为什么要采用多道程序设计?
让多个计算题同时进入一个计算机系统的主存储器并行执行,这种程序设计方法称为多道程序设计。多道程序设计不仅提高了处理器的使用效率,而且降低了完成计算所需的总时间,从而提高了单位时间内的算题能力,提高了吞吐量。
2. 现有 AB 两道程序,它们各自需要执行 1 小时,其中需要使用处理器 18 分钟。今在一个多道程序设计系统中让 AB 并行执行,总共花了 72 分钟都执行结束。问两道并行工作时的处理器使用率比单道执行时的处理器使用率提高了多少?
单道执行时处理器的使用率为:18 * 2 / 120 * 100% = 30%;两道并行执行时处理器的使用率为:18 * 2 / 72 * 100% = 50%;处理器使用率提高了约 66.66%。
3. 进程有哪些基本状态?画出进程基本状态变化图。
进程有 3 种基本状态:等待态、就绪态、运行态。
4. 列举进程状态发生变化的事件。
运行态 → 等待态(启动外围设备,等待设备传输结束;申请资源如主存空间、外围设备等得不到满足;程序出错卡死)
等待态 → 就绪态(外围设备工作结束、等待的资源得到了满足)
运行态 → 就绪态(分配给进程占用处理器的时间用完而强迫让出处理器、有更高优先级的程序要运行而迫使正在运行的进程让出处理器)
就绪态 → 运行态(系统按一种规定的策略从多个处于就绪态的进程中选择一个进程,让它占用处理器,被选中的进程状态就变成运行态)
5. 解释中断、中断源。
由于某些事件的出现,中止现行进程的运行,而由操作系统去处理出现的事件,待适当的时候让被中止的进程继续运行,这个过程称为中断 。引起中断的事件称为 中断源 。
6. 硬件发现中断事件后应做哪些工作?
当发现中断事件后:
1. 置中断码。中断装置首先把出现的中断事件存放到程序状态字寄存器中的中断码位置。
2. 交换新、旧 PSW。然后把程序状态字寄存器中的 PSW 作为旧 PSW存放到预先约定好的主存固定单元中保护起来;再把已经确定好的操作系统处理程序的新 PSW 送到程序状态字寄存器的 PSW 中成为当前 PSW。
7. 中断处理程序应做哪些工作?
中断处理程序对中断事件的处理分为两步:保护好被中断进程的现场信息;根据旧 PSW 中指示的中断事件,分析事件性质,而具体的处理可由适当的例行程序完成。
8. 设在一个单处理器的多道程序设计系统中,有两道作业同时执行,一道以计算为主,另一道以输入输出为主。你将怎样赋予作业进程占有处理器的优先级?为什么?
赋予计算为主的作业的进程低优先级,I/O 进程高优先级。因为 I/O 设备通常处理速度较慢,该进程一旦调用 I/O 设备时,就会主动让出处理器,以计算为主的作业就能占有处理器执行。这样,能使处理器和 I/O 设备都处于忙碌状态,提高系统的使用率。
9. 假定就绪状态的进程按优先级自小到大顺序排成队列,当有一进程要进入就绪队列时,应按它的优先级排在相应位置上,试写出进程入队的程序。
当一个就绪态的进程要进入就绪队列时,首先根据队首指针,沿链查找,按本题的意思就是要比较优先级之后确定自己要插入的位置。假设要插入在进程A和进程B进程之间,应把进程A的进程控制块中的指针指向自己,把自己的进程控制块中的指针指向进程B;如经过比较优先级之后,需要插入在队首,则把队首指针指向自己的进程控制块,自己进程控制块的指针指向原先第一个进程控制块;如经比较后需插入到队列的末尾,则把原队列中最后一个进程的进程控制块中的指针指向自己,把自己的进程控制块中的指针置为 0。,这样就完成了进程入队的操作。
10. 解释处理器的两级调度。
首先,进行作业调度。任何作业只有被装入主存储器后才能执行。当输入井中等待处理的多个作业不能全部同时装入主存储器时,就必须根据系统设计时确定的允许并行工作的道数和作业调度算法,从后备作业中选取若干作业装入主存储器中,使它们有机会去获得处理器执行。从输入井中选取后备作业装入主存储器的工作称为就称为作业调度。作业调度会为选中的、进入主存储器中的一个或多个作业创建进程,这些进程的初始状态都为就绪态。
接着,进行处理器调度。在单处理器的计算机系统中,每一时刻都只能让一个进程占用处理器,多个进程竞争处理器时,必须按照进程调度算法从就绪进程中选取一个进程,让它来占用处理器,这项选取工作就称为进程调度。
11. 什么是作业调度?作业调度选择作业的必要条件是什么?
任何作业只有被装入主存储器后才能执行。当输入井中等待处理的多个作业不能全部同时装入主存储器时,就必须根据系统设计时确定的允许并行工作的道数和作业调度算法,从后备作业中选取若干作业装入主存储器中,使它们有机会去获得处理器执行。从输入井中选取后备作业装入主存储器的工作称为就称为作业调度。
不同计算机系统采用不同的规则进行作业调度,但都遵循一个必要条件:即系统现有的尚未分配的资源可以满足备选作业的资源要求。这才能避免进入主存储器的作业又得不到必要的资源无法执行的现象,从而保证系统有较高的吞吐能力。
12. 设有供用户使用的主存空间 100K,系统配有 4 太磁带机。该系统采用多道程序设计技术,请分别写出采用“先来先服务调度算法”和“计算时间最短优先算法”选中的作业执行次序。作业序列如下:
作业号 |
进入输入井时间 |
要求计算时间 |
要求主存量 |
申请磁带机数 |
1 |
10:00 |
25 分钟 |
15K |
2 台 |
2 |
10:20 |
30 分钟 |
60K |
1 台 |
3 |
10:30 |
10 分钟 |
50K |
3 台 |
4 |
10:35 |
20 分钟 |
10K |
2 台 |
5 |
10:40 |
15 分钟 |
30K |
2 台 |
先来先服务算法下的作业执行次序为:1,2,4,5,3。
计算时间最短优先算法下的作业执行次序为:3,5,4,1,2。
13. 在某计算中心的一个单道程序设计系统中,有ABC三个作业在等待处理,他们到达系统的时间和估计计算的时间如下图。假定系统从9:30开始调度作业,试问,采用计算时间短的作业优先算法和最高响应比优先算法调度时各自的等待时间和完成时间。
作业 |
到达时间 |
估计时间 |
A |
8:30 |
130 分钟 |
B |
8:50 |
15 分钟 |
C |
9:20 |
70 分钟 |
计算时间短的作业优先算法将依以下顺序执行:
作业B 于 9:30 分开始执行,等待时间为 40分钟,计算 15 分钟,9:45 分完成计算。
作业C 于 9:45 分开始执行,等待时间为 25分钟,计算 70 分钟,10:55 分完成计算。
作业A 于 10:55 分开始执行,等待时间为 145分钟,计算 130 分钟,13:05 分完成计算。
最高响应比优先算法将依以下顺序执行:
9:30分,此时,作业A 的响应比为 60/130,作业B 的响应比为 40/15,作业C 的响应比为 10/70,于是,作业B 先执行,等待时间为 40分钟, 9:45 分完成计算。
9:45分,此时,作业A 的响应比为 75/130,作业C 的响应比为 25/70,于是,作业A 先执行,等待时间为 75 分钟,并于 11:55 分完成计算。
11:55分,此时,作业C 开始执行,等待时间为 155 分钟,并于 13:05 分完成计算。
14. 什么是进程调度?进程调度怎样使被选中的进程能占用处理器?
在单处理器的计算机系统中,每一时刻都只能让一个进程占用处理器,多个进程竞争处理器时,必须按照进程调度算法从就绪进程中选取一个进程,让它来占用处理器,这项选取工作就称为进程调度。
进程调度选中了一个进程后,就将其进程控制块中的现场信息、如通用寄存器、控制器寄存器、程序状态字寄存器等内容送入处理器相应的寄存器中,从而使它占用处理器运行。
15. 在分时系统中采用时间片轮转的调度策略有什么优越性?
多个用户通过终端与计算机系统进行一系列交互,计算机系统应及时的对每一个用户的要求作出反应,采用时间片轮转调度算法可使每个用户都感觉到计算机系统对自己有求必应,好像自己单独在使用一个计算机系统。可以提升系统效率和用户满意度。
16. 分时系统中的进程可能出现如下图中 1~4 的变化,请把产生每一种状态变化的具体原因填写在表格的相应栏内。
变化 |
变化原因 |
1 |
就绪态 → 运行态。多个进程等待分配处理器时,系统按既定策略从中选择一个进程,让它占有处理器,被选中的进程的状态就变为运行态。 |
2 |
运行态 → 就绪态。分配给进程占用处理器的时间用完;或有更高优先级的进程要运行,都会迫使进程让出处理器,从而再进入就绪态。 |
3 |
运行态 → 等待态。在运行中启动了外围设备,等待外围设备传输结束;运行中申请资源(如主存空间)得不到满足;出现故障(如程序出错)。 |
4 |
等待态 → 就绪态。外围设备工作结束;等待的资源得到满足等都会使进程由等待态变为就绪态。 |
17. 某计算机系统中,进程调度采用时间片轮转调度算法。每个进程得到的时间片可随进程的执行情况而变化,在过去的时间里,若进程经常启动外设,则给它分配较短的时间片;若启动外设次数很少,则分配一个较长的时间片。请回答:(1) 上述分配时间片的方法有什么优点?(2)在系统中设置两个就绪队列,一个是时间片较短的进程就绪队列,另一个是时间片较长的进程就绪队列。那么,你认为进程调度时应优先从哪个队列中选取一个就绪进程占有 CPU?为什么?
(1)提高了处理器的利用率。因为启动外设的速度是很慢的,进程在使用外设的过程中处于一种阻塞的状态,CPU 只能闲置,极大的降低了 CPU 的利用率,CPU 完全可以利用该进程读写外设的时间运行其他的进程。
(2)优先选用时间片较短的进程就绪队列。假设有两个进程A和B,A执行只需要1ms,B需要30ms。如果先A后B,A的响应时间为1ms,B的响应时间为31ms;如果先B后A,A的响应时间为31ms,B的响应时间为30ms。由此可见,若优先选取时间片较长的进程就绪队列,那么平均响应时间会很长,用户体验极差。
18. 有 5 个进程 P1,P2,P3,P4,P5。它们同时依次(一个接一个)进入就绪队列,它们的优先级和需要的处理时间如下表所示:
进程 |
处理器时间 |
优先数 |
P1 |
10 |
3 |
P2 |
1 |
1 |
P3 |
2 |
3 |
P4 |
1 |
4 |
P5 |
5 |
2 |
只要就绪队列非空就可以开始调度,且忽略进行调度所花费的时间。请回答下列问题:(1)写出分别采用“先来先服务”和“非抢占式的优先数”调度算法中进程执行的次序。(2)分别算出上述两种算法使各进程在就绪队列中的等待时间以及两种算法下的平均等待时间。
“先来先服务”调度算法的情况下:执行次序是 P1,P2,P3,P4,P5。P1 等待时间 0,P2 等待时间 10,P3 等待时间 11,P4 等待时间 13,P5 等待时间 14,平均等待时间 (0 + 10 + 11 + 13 + 14)/ 5 = 9.6。
“非抢占式的优先数”调度算法的情况下:执行次序是 P1,P4,P3,P5,P2。P1 等待时间 0,P4 等待时间 10,P3 等待时间 11,P5 等待时间 13,P2 等待时间 18,平均等待时间 (0 + 10 + 11 + 13 + 18)/ 5 = 10.4。
19. 什么是线程?线程与进程有什么异同?
线程是进程中可独立执行的子任务,一个进程中可以有多个线程,每一个线程都有一个唯一的标识符和一张线程描述表。线程描述表用来记录线程执行时的现场信息及状态。
两者的相同点:(1) 都具有标识符、寄存器、状态、优先级和所要遵循的调度策略。(2)每一个进程都有进程控制块,每一个线程也有一个线程控制块。
在多线程技术的操作系统中,两者的根本区别是:(1)把进程作为资源分配单位,而线程是调度和执行单位。(2)每一个进程都有自己的主存空间,但同一进程中的各个线程共享该进程的主存空间,都有对数据集的存取权限。
20. 采用多线程技术有什么优点?
(1)减少了进程也就节省了分配进程控制块和工作区的开销。
(2)创建线程需要为线程建立一张“线程描述表”以记录线程的活动情况,但不需要另行分配资源,创建速度快。
(3)线程间的信息传递在同一主存空间(进程所拥有的主存空间)进行,不需要额外的通信机制,且传递速度快。
(4)线程能独立执行,能充分利用和发挥处理器与外围设备的并行工作能力。