操作系统第二章进程线程与作业
- 格式:ppt
- 大小:325.00 KB
- 文档页数:58
作业、进程、线程1. 基本概念作业:⽤户在⼀次解决或是⼀个事务处理过程中要求计算机系统所做的⼯作的集合,它包括⽤户程序、所需要的数据集控制命令等。
作业是由⼀系列有序的步骤组成的。
作业的完成要经过作业提交、作业收容、作业执⾏和作业完成4个阶段。
在执⾏⼀个作业可能会运⾏多个不同的进程。
进程:程序在⼀个数据集上的⼀次运⾏过程。
是操作系统资源分配的基本单位。
在Windows下,进程⼜被细化为线程,也就是⼀个进程下有多个能独⽴运⾏的更⼩的单位. 进程还拥有⼀个私有的虚拟地址空间,该空间仅能被它所包含的线程访问。
线程:是进程中的⼀个实体,是被操作系统独⽴调度和执⾏的基本单位。
⼀个进程包含⼀个或多个线程。
线程只能归属于⼀个进程并且它只能访问该进程所拥有的资源。
当操作系统创建⼀个进程后,该进程会⾃动申请⼀个名为主线程或⾸要线程的线程。
主线程将执⾏运⾏时宿主, ⽽运⾏时宿主会负责载⼊CLR。
简单总结:作业是向计算机提交任务的任务实体,⽽进程是执⾏实体,是资源分配的基本单位,线程是处理机调度的基本单位。
2. 进程2.1 进程的概念主要有两点:第⼀,进程是⼀个实体。
每⼀个进程都有它⾃⼰的地址空间,⼀般情况下,包括⽂本区域(text region)、数据区域(data region)和堆栈(stack region)。
⽂本区域存储处理器执⾏的代码;数据区域存储变量和进程执⾏期间使⽤的动态分配的内存;堆栈区域存储着活动过程调⽤的指令和本地变量。
第⼆,进程是⼀个“执⾏中的程序”。
程序是⼀个没有⽣命的实体,只有处理器赋予程序⽣命时,它才能成为⼀个活动的实体,我们称其为进程。
2.2 进程特征 动态性:进程的实质是程序在多道程序系统中的⼀次执⾏过程,进程是动态产⽣,动态消亡的。
并发性:任何进程都可以同其他进程⼀起并发执⾏ 独⽴性:进程是⼀个能独⽴运⾏的基本单位,同时也是系统分配资源和调度的独⽴单位; 异步性:由于进程间的相互制约,使进程具有执⾏的间断性,即进程按各⾃独⽴的、不可预知的速度向前推进 结构特征:进程由程序、数据和进程控制块三部分组成。
第二章作业第一次作业:1.进程有哪三种基本状态?进程在三种基本状态之间转换的典型原因是什么?答:三种基本状态:就绪状态、执行状态、阻塞状态。
(1)就绪状态→执行状态:进程分配到CPU资源(进程调度);(2)执行状态→就绪状态:时间片用完(3)执行状态→阻塞状态:I/O请求(4)阻塞状态→就绪状态:I/O完成2.在Linux系统中运行下面程序,最多可产生多少个进程?画出进程家族树。
main(){fork();fork();fork();}答:最多可以产生7个进程。
其家族树为:3.试从动态性、并发性和独立性上比较进程和程序。
答:1)动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤销而消亡,因而进程由一定的生命期;而程序只是一组有序指令的集合,并存放于某种介质上,其本身并不具有运动的含义,因而是静态的;2)并发性是进程的重要特征,同时也是OS的重要特征。
引入进程的目的正是为了使其程序能和其它建立了进程的程序并发执行,而程序本身(没有建立PCB)是不能并发执行的;3)独立性是指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。
凡未建立PCB的程序,都不能作为一个独立的单位来运行。
4.分析下列代码的功能:答:sleep_on实现进程的睡眠过程;wake_up实现进程的唤醒过程。
第二次作业:1.同步机制应该遵循哪些基本准则?你认为整型信号量机制遵循了同步机制的哪些基本准则?答:同步机制应遵循四个基本准则:a. 空闲让进:当无进程处于临界区时,应允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用临界资源。
b. 忙则等待:当已有进程进入临界区时,其它试图进入临界区的进程必须等待,以保证对临界资源的互斥访问。
c. 有限等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态。
d. 让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态。
操作系统第二章作业讲解第二章习题讲解1、进程之间存在着哪几种制约关系?各是什么原因引起的?下列活动分别属于哪种制约关系?(1)若干同学去图书馆借书;(2)两队举行篮球比赛;(3)流水线生产的各道工序;(4)商品生产和社会消费。
答:进程之间存在着直接制约与间接制约这两种制约关系,其中直接制约(同步)是由于进程间的相互合作而引起的,而间接制约(互斥)则是由于进程间共享临界资源而引起的。
(1)若干同学去图书馆借书,是间接制约,其中书是临界资源;(2)两队举行篮球比赛,是间接制约,其中蓝球是临界资源;(3)流水线生产的各道工序,是直接制约,各道工序间需要相互合作,每道工序的开始都依赖于前一道工序的完成;(4)商品生产和社会消费,是直接制约,两者也需要相互合作:商品生产出来后才可以被消费;商品被消费后才需要再生产。
2、试写出相应的程序来描述下图所示的前趋图vara,b,c,d,e,f:semaphore:=0,0,0,0,0,0;begin S1; signal(a); signal(b);signal(c); end;begin wait(a); S2; end;begin wait(b); S3; signal(d); end; begin wait(c); S4; end;begin wait(d); S5; signal(e); signal(f); end; begin wait(e); S6; end;begin wait(f); S7; end;3、已知一个求值公式(A2+3B)/(B+5A),若A、B已赋值,试画出该公式求值过程的前趋图,并使用信号量描述这些前趋关系。
答:根据求值公式,假设:S1: X1=A*AS2: X2=3*BS3: X3=5*AS4: X4=X1+X2S5: X5=B+X3S6: X6=X4/X5var a,b,c,d,e:semaphore:=0,0,0,0,0;begin S1; signal(a); end;begin S2; signal(b); end;begin S3; signal(c); end;begin wait(a); wait(b); S4; signal(d); endbegin wait(c); S5; signal(e); endbegin wait(d); wait(e); S6; end4、桌上有一只能容纳一个水果的盘子;爸爸专向盘子中放苹果(apple),妈妈专向盘子中放桔子(orange),一个儿子专等吃盘子中的桔子,一个女儿专等吃盘子里的苹果,1)试用信号量实现他们的同步关系;2)如果有两个家庭的爸爸、妈妈、儿子、女儿和二只盘子呢?会需要专门的实现吗?var empty,apple,orange:semaphore:= 1,0,0;说明:empty与apple表示盘子为空与盘子中放入了苹果,用于表示爸爸与女儿间的同步关系;empty与orange表示盘子为空与盘子中放入了桔子,用于表示妈妈与儿子间的同步关系;答案:1)使用记录型信号量father:beginrepeatproducer an apple;wait(empty);Put an apple to the dish;signal(apple);Until falseend daughter:beginrepeatwait(apple);Get an apple from dish;signal(empty);Eat an apple; Until falseendmother:beginrepeatproducer an orange;wait(empty);Put an orange to the dish;signal(orange); Until falseend son:beginrepeatwait(orange);Get an orange from dish;signal(empty);Eat an orange; Until falseend2)使用记录型信号量varmutex,empty,apple,orange:semaphore:=1,2,0,0;dish: array[0,1] of fruit;in, out:integer:= 0,0;father:beginrepeatproducer an apple;wait(empty);wait(mutex);if dish[in]==apple or dish[in]==orange thenin:=(in+1) mod 2;disk[in]:=apple;in:=(in+1) mod 2;signal(mutex);signal(apple);Until falseend daughter:begin repeatwait(apple);wait(mutex);ifdish[out]==orange thenout:=(out+1) mod 2;get an apple from dish[out];out:=(out+1) mod 2;signal(mutex);signal(empty);Eat an apple; Until falseEndmother:beginrepeatproducer an orange;wait(empty);wait(mutex);if dish[in]==apple or dish[in]==orange thenin:=(in+1) mod 2;disk[in]:=orange;in:=(in+1) mod 2;signal(mutex);signal(orange);Until falseend son:beginrepeatwait(orange);wait(mutex);ifdish[out]==apple thenout:=(out+1) mod 2;get an orange from dish[out];out:=(out+1) mod 2;signal(mutex);signal(empty);Eat an apple; Until falseend5、试用信号量实现课件92页,司机与售票员进程的同步关系var stop, door :semaphore:=0,0;driver:beginrepeatdrive a bus; arrive at bus station; signal(stop);rest;wait(door);Until falseend conductor:begin repeatsell tickets;wait(stop);Open the door;Close the doorsignal(door); Until falseend6、试用信号量解决读者—写者问题,使得写者与读者优先级根据到达顺序确定。
进程与线程与线程第2章进程实验目的加深理解进程和程序、进程和线程的联系与区别 深入理解进程及线程的重要数据结构及实现机制熟悉进程及线程的创建、执行、阻塞、唤醒、终止等控制方法学会使用进程及线程开发应用程序主要内容 背景知识¾进程进程与线程基本与线程基本概念概念¾多进程编程¾多线程编程实验内容¾创建进程¾线程共享进程中的数据¾多线程实现单词统计工具进程及线程进程及线程基本定义基本定义进程(process )¾处于执行期的程序及其所包含资源的总称9程序:可执行程序代码9资源资源:打开文件:打开文件、、挂起信号、地址空间挂起信号、地址空间、数据段等、数据段等 线程(thread )¾进程中活动的对象9有独立的程序计数器、进程栈及一组进程寄存器序寄存进程与线程的区别 从形态角度¾一个进程一个进程可包含可包含一个或多个线程一个或多个线程从调度角度¾进程是资源分配的基本单位¾线程是处理器处理器调度调度的独立单位从虚拟化角度进程提供两种虚拟¾进程提供两种虚拟机制机制9虚拟处理器:进程独享处理器的假象虚拟内存进程拥有系统内所有内存资源的假象9虚拟内存:进程拥有系统内所有内存资源的假象¾线程之间线程之间可共享可共享虚拟内存,虚拟内存,但各自拥有独立虚拟处理器但各自拥有独立虚拟处理器对Linux 系统而言,线程只是一种特殊的进程!进程构成要素 正文段¾存放存放进程运行的代码,描述进程需完成进程运行的代码,描述进程需完成的的功能进程进程数据段数据段¾存放正文段在存放正文段在执行期间所需的执行期间所需的数据和数据和工作区工作区全局变量动态分配动态分配的空间(调用9包括包括全局变量全局变量、动态分配、动态分配的空间(调用的空间(调用malloc 函数函数))¾用户用户栈也在该数据段开辟栈也在该数据段开辟,存放函数,存放函数调用调用时的栈时的栈帧、局部帧、局部变量变量等等系统堆栈每个进程捆绑一个,进程在内核态下工作时¾每个进程捆绑一个,进程在内核态下工作时使用使用¾保存保存中断中断现场、执行现场、执行函数调用函数调用时的参数时的参数和返回地址和返回地址等等¾其中其中最重要的数据结构最重要的数据结构是是进程控制块进程虚拟地址结构 以Linux 系统为例(共4G 空间)¾用户空间(0x 0000 0000 ~ 0x 0x 0000 0000 ~ 0x bfff bfff ffff )9可执行映象执象9进程运行时堆栈9进程控制信息,如进程控制块进程控制信息,进程控制块¾内核空间(0x c000 0000以上)9内核被映射进程内核空间9只允许进程在核心态下访问Linux 进程描述符进程描述符¾数据结构:task_struct ¾include/include/linux linux//sched.h定义位置: 进程描述符向量结构task[NR TASKS]¾数据结构:task[NR_TASKS]¾定义位置:include/include/linux linux//sched.h¾定义格式struct task_struct *task[NR_TASKS] = {&*task[NR_TASKS] = {&init_task init_task}}#define NR TASKS 512#define NR_TASKS 512¾说明NR TASKS 记录系统可容纳进程数默认大9全局变量NR_TASKS 记录系统可容纳进程数,默认大小是512Linux 进程描述符的信息组成进程状态信息(state, flags, (state, flags, ptrace ptrace))调度信息(static_prio static_prio, , normal_proi normal_proi, , run_list run_list, array, policy), array, policy) 内存管理(mm, (mm, active_mm active_mm))进程状态位信息(binfmt binfmt, , exit_state exit_state, , exit_code exit_code, , exit_signal exit_signal)) 身份信息pid pid, , tgid tgid, , uid uid, , suid suid, , fsuid fsuid, , gid gid, , egid egid, , sgid sgid, , fsgid fsgid)(p g g g g g ) 家族信息(real_parent real_parent, parent, children, sibling), parent, children, sibling) 进程耗间信息realtime realtime, , utime utime, , stime stime, , starttime starttime)(,,,)时钟信息(it_prof_expires it_prof_expires, , it_virt_expires it_virt_expires, , it_sched_expires it_sched_expires))count link count,, fs fs, files), files)文件系统信息(_,,) IPC 信息(sysvsem sysvsem, signal, , signal, sighand sighand, blocked, , blocked, sigmask sigmask, pending), pending)进程进程标识标识成员名成员名::pid_t pid 功能¾内核内核通过通过pid 标识每个标识每个进程进程¾pid 与进程描述符之间与进程描述符之间有严格有严格的一一对应关系的一一对应关系 数据类型说明¾pid_t 实际上实际上是一个是一个int 类型¾取值范围:0 ~ 32767¾最大值修改:/proc/sys/kernel//proc/sys/kernel/pid_max pid_max ¾生成新pid :get_pid get_pid()()¾获取进程pid9ps 命令//id 9访问/proc/pid 9getpid getpid()()Åsys_getpid sys_getpid()()通过ps 命令获取进程信息功能¾查看系统中正在运行的进程语法¾ps [-ef ef][][--n name][name][--t ttys ttys][][--p pids pids][][--u users][users][--groups]用户ID进程占用CPU 的百分比进程开始的时进程号启动进程的终端号间和日期父进程号进程进程组标识组标识成员名成员名::pid t tgid p _g功能标识¾标识进程是否属于同组,组进程是否属于同组,组ID 是第一个组内线程(父进程)的ID ¾PID 线程组中的所有线程共享相同的 组ID 赋值相关操作¾tgid pid 单线程线程进程:进程:g 和p 相等¾多线程线程进程:组内所有线程进程:组内所有线程tgid 都相等,且相等,且等于父等于父进程进程pid用户相关的进程标识信息 功能:控制用户对系统资源的访问权限 分类¾用户用户标识标识uid 及组标识gid 9通常是进程创建者的uid 和gid¾有效有效用户标识用户标识euid 及有效组标识egid 9有时有时系统会赋予一般用户暂时拥有系统会赋予一般用户暂时拥有root 的uid 和gid gid((作为用户进程的euid 和egid egid)),以便于进行,以便于进行运作运作id id ¾备份用户标识suid 及备份组标识sgid 9在使用系统在使用系统调用改变调用改变uid 和gid 时,利用其保留真正uid 和gid f id f id¾文件系统标识fsuid 及文件系统组标识fsgid 9检查检查对文件系统访问对文件系统访问权限时使用,通常权限时使用,通常与与euid 及egid 相等文件系统中服务器需要作为个特殊的进程访9在NSF 文件系统中,NSF 服务器需要作为一个特殊的进程访问文件,此时只修改客户进程的fsuid 和fsgid ,而不改变获取用户相关的进程标识信息的代码示例g pgetpidtest.c¾获取用户相关的进程标识信息的方法:get XXX()Linux系统进程系统堆栈结构每个进程而都要单独分配一个系统堆栈结构组成¾内核态的进程堆栈¾进程描述符信息(task_struct)结构特点¾8192(213 )字节,两个页框¾占据连续两个页框,且第一个页框起始地址为213的倍数Linux 2.4Linux 2.4进程系统堆栈结构Linux 系统进程个数限制¾所有进程所有进程的的PCB 及系统堆栈及系统堆栈占用空间占用空间≤1/2的物理内存的物理内存总和总和内核堆栈两个连续物理页面(8K )进程描述符(约1K )Linux 2.4Linux 2.4进程系统进程系统堆栈相关数据结构堆栈相关数据结构 结构定义/include//include/linux linux//sched.h ) ()进程描述符管描述符管 进程进程描述符管理描述符管理¾分配:alloc_task_struct alloc_task_struct()()2048¾回收:free_task_struct free_task_struct()()¾访问:get_task_struct get_task_struct()()Linux 2.6Linux 2.6进程系统堆栈结构进程描述符由slab 分配器动态生成栈底用新结构struct thread_info ,指向进程描述符8K(约)进程描述符(约52字节)Linux 2.6 thread info 结构定义include/asm include/asm--x86/thread_info_32.h Linux 2.6进程系统进程系统堆栈相关数据结构堆栈相关数据结构_[__]¾thread_info (52个字节)Linux 2.6 thread uion 定义/include//include/linux linux//sched.h Linux 2.6进程系统堆栈相关数据结构定义_[]THREAD_SIZE 定义[include/asm include/asm--x86/thread_info_32.h ]Linux2.6CPULinux 2.6 CPU运行进程进程描述符的获取 由current来获取当前进程的进程描述符¾根据THREAD_SIZE大小,分别屏蔽掉内核栈的1212--bit位置,从而获得内核栈的起始位置LSB(4K)或1313--bit LSB(8K),从而获得内核栈的起始Linux 系统中的进程状态转换图current ,拥有CPUTASK ZOMBLE sys_exit()do_exit()运行TASK_ZOMBLEinterruptible sleep on()syscall_trace()d i l()interruptible_sleep_on()interruptible_sleep_on_timeout()_down_interruptble()do_signal()TASK_STOPPED创建进程do_fork()SIG_KILL|SIG_CONTwake_up_process()sleep_on ()_down()k ()wait_on()wake_up()wake_up_process()wake_up_interruptible()_up()wake_up()wake_up_process()_up()等待状态TASK_UNINTERRUPTIBLETASK_INTERRUPTIBLELinux 进程关系及系统进程关系及系统启动过程启动过程执行init()函数0号进程:系统自举过程,实质为内int 0x800号进程1)初始化内核并进行系统配置2)创建若干个用于高速缓存和虚拟主存管理的内核线程execve()核本身。
操作系统第二章进程和线程复习题(总11页)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March第二章练习题一、单项选择题1.某进程在运行过程中需要等待从磁盘上读入数据,此时该进程的状态将( C )。
A. 从就绪变为运行; B.从运行变为就绪;C.从运行变为阻塞; D.从阻塞变为就绪2.进程控制块是描述进程状态和特性的数据结构,一个进程( D )。
A.可以有多个进程控制块;B.可以和其他进程共用一个进程控制块;C.可以没有进程控制块;D.只能有惟一的进程控制块。
3.临界区是指并发进程中访问共享变量的(D)段。
A、管理信息B、信息存储C、数据D、程序4. 当__ B__时,进程从执行状态转变为就绪状态。
A. 进程被调度程序选中B. 时间片到C. 等待某一事件D. 等待的事件发生5. 信箱通信是一种( B )通信方式。
A. 直接通信B. 高级通信C. 低级通信D. 信号量6. 原语是(B)。
A、一条机器指令B、若干条机器指令组成C、一条特定指令D、中途能打断的指令7. 进程和程序的一个本质区别是(A)。
A.前者为动态的,后者为静态的;B.前者存储在内存,后者存储在外存;C.前者在一个文件中,后者在多个文件中;D.前者分时使用CPU,后者独占CPU。
8. 任何两个并发进程之间存在着(D)的关系。
A.各自完全独立 B.拥有共享变量C.必须互斥 D.可能相互制约9. 进程从运行态变为等待态可能由于(B )。
A.执行了V操作 B.执行了P操作C.时间片用完 D.有高优先级进程就绪10. 用PV操作管理互斥使用的资源时,信号量的初值应定义为(B)。
A.任意整数 B.1 C.0 D.-111. 现有n个具有相关临界区的并发进程,如果某进程调用P 操作后变为等待状态,则调用P操作时信号量的值必定为(A)。
A.≤0 B.1 C.n-1 D.n12. 用PV操作管理临界区时把信号量的初值定义为1,现已有一个进程在临界区,但有n个进程在等待进入临界区,这时信号量的值为(C)。
操作系统第二章知识点总结操作系统是计算机系统中最核心的部分之一,它负责管理计算机的资源,并提供用户与计算机硬件之间的接口。
操作系统的设计和实现涉及到多个方面的知识,包括进程管理、内存管理、文件系统、输入输出等。
本文将针对操作系统第二章的知识点进行总结,主要涵盖了进程管理和线程管理、进程同步、死锁以及内存管理等方面的内容。
一、进程管理和线程管理1.1 进程的概念进程是指程序执行时的一次动态过程,是程序在执行过程中的实例。
进程是操作系统中的基本执行单元,每个进程都有自己的地址空间、代码、数据、环境变量等信息。
1.2 进程的状态操作系统中的进程通常具有多种状态,包括运行态、就绪态和阻塞态。
进程在不同的状态之间切换,这些状态的切换由操作系统的调度器完成。
1.3 进程的创建和删除进程的创建是指操作系统根据用户请求或者其他进程的要求,在内存中分配资源以及初始化进程控制块等信息。
进程的删除则是指进程执行完毕或者出现错误时,操作系统释放进程占用的资源,并将进程控制块从系统中移除。
1.4 进程的调度进程的调度是指操作系统根据一定的调度算法将就绪态的进程分配给处理器进行执行。
调度算法可以采用先来先服务、短作业优先、轮转等多种方式。
1.5 线程的概念线程是进程的一部分,是进程中的一个实体,是系统调度的基本单位。
一个进程可以包含多个线程,线程共享进程的资源。
1.6 线程的创建和删除线程的创建包括为线程分配资源、初始化线程控制块等操作。
线程的删除则是将线程控制块从系统中移除,并释放线程占用的资源。
1.7 线程的调度线程的调度是操作系统根据一定的调度算法将就绪态的线程分配给处理器进行执行。
线程调度与进程调度有一些不同之处,例如可以采用抢占式调度的方式。
二、进程同步2.1 进程同步的概念进程同步是指多个进程或者线程在对共享资源进行访问时,保证它们按照某种特定的顺序执行,避免发生竞争条件和数据不一致等问题。
2.2 临界区问题临界区是指一段代码,在同一时刻只能有一个进程或者线程执行。
第2章进程和线程的管理习题及解答例题解析例2.2.1 试说明进程和程序之间的区别和联系。
解进程和程序是既有区别又有联系的两个概念。
(1)进程是动态的,程序是静态的。
程序是一组有序的指令集合,是一个静态的概念;进程则是程序及其数据在计算机上的一次执行,是一个动态的集合。
离开了程序,进程就失去了存在的意义,但同一程序在计算机上的每次运行将构成不同的进程。
程序可看作是电影的胶片,进程可以看作电影院放电影的过程。
(2)一个进程可以执行多个程序,如同一个电影院的一场电影可放映多部影片。
(3)一个程序可被多个进程执行,如同多个影院同时利用一个电影的胶片放映同一部电影。
(4)程序可以长期保存,进程只能存在于一段时间。
程序是永久存在的,而进程有从被创建到消亡的生命周期。
例2.2.2 举例说明多道程序系统失去了封闭性和再现性。
解例如,有两个循环程序A和B,共享一个变量N。
程序A每执行一次时,都要做N:=N+1操作;程序B则每执行一次时,都要执行print(N)操作,然后再将N的值置成“0”。
程序A和B在多道程序系统中同时运行。
假定某时刻变量N的值为n,可能出现下述三种情况:(1)N:=N+1 在print(N)和N:=0之前,此时得到N值变化过程为n+1、n+1、0;(2)N:=N+1 在print(N)和N:=0之后,此时得到N值变化过程为n 、 0 、1;(3)N:=N+1 在print(N)之后和N:=0之前,此时得到N值变化过程为n、n+1、0。
所以,在A、B程序多次执行过程中,虽然其每次执行时的环境和初始条件都相同,但每次得到的结果却不一定相同。
例 2.2.3 为什么将进程划分成执行、就绪和阻塞三个基本状态?解根据多道程序执行的特点,进程的运行是走走停停的。
因此进程的初级状态应该是执行和等待状态。
处于执行状态的进程占用处理机执行程序,处于等待状态的进程正在等待处理机或者等待其它某种事件的发生。
但是,当处理机空闲时,并不是所有处于等待状态的进程都能放到处理机上执行,有的进程即使分配给它处理机,它也不能执行,因为它的执行的条件没有得到满足。