《计算机操作系统》小结(BASIC语言描述)
改编:WTZ(zwpwjwtz@163.com)
第一章 操作系统引论
1. 操作系统的目标:方便性、有效性、可扩充性、开放性;
2. 操作系统的作用:提供用户与硬件系统的接口、管理计算机系统的资源、作为扩充机器(即扩展硬件的原有功能)
3. 操作系统的层次模型:操作系统对象(处理机、存储器、设备、文件和作业)→对对象操纵和管理的软件集合→用户接口(命令接口、程序接口、图形用户接口);
4. 操作系统的发展过程:人工操纵→脱机输入输出方式(Off-line I/O,即用纸带、卡片输入程序)→单道批处理系统(磁带存储程序)→多道批处理系统(内存、调度)→分时系统(Time-sharing System)→实时系统;
5. 分时系统的实现方法:用户作业直接进入内存而非硬盘、不允许一个作业长期占用处理机(每个程序只运行很短的时间,这段时间称为时间片);
6. 分时系统的特性:多路性、独立性、及时性、交互性;
7. 对实时系统(Real-time System)的需要:实时控制、实时信息处理;
8. 实时任务的类型:(1)按执行任务时是否呈现周期性来划分:周期性(循环执行)、非周期性(设定开始和完成的截止时间);(2)按对截止时间的要求来划分:硬实时任务(必须满足时间要求)、软实时任务(时间要求不严格,可错过截止时间);
9. 实时系统与分时系统的区别:多路性、独立性、及时性(一般为秒级)、交互性、可靠性(要求高,采用多级容错);
10. 操作系统的特征:并发(单处理机中,微观上仍是交替执行;为并发执行,必须建立进程——即任务[X1] )、共享(互斥方式、同时访问方式)、虚拟、异步性(“走走停停”、速度不可预知);
11. 操作系统的服务:程序执行、I/O操作、文件系统操纵(File-system Manipulation)、通信、差错检测(硬件故障、软件异常);
12. 操作系统调用的类型:进程控制类、文件操纵系统调用、设备管理系统调用、通信系统调用、信息维护(在OS与用户程序之间传递信息);
13. 操作系统的功能:存储器管理(内存分配、内存保护、地址映射、内存扩充)、处理机管理(进程控制、进程同步、进程通信、调度【过程:按照后备算法选择作业→分配资源→建立进程→插入队列;必须遵循一定的算法】)、设备管理(缓冲管理、设备分配、设备处理)、文件管理(存储空间、目录、读写与存取)、用户接口(命令接口、程序接口、图形接口);
14. 操作系统的进一步发展:单用户单任务(CP/M、MS-DOS)→单用户多任务(PS/2、OS/2 1.X、MS WINDOWS)→多用户多任务(UNIX OS);
15. 网络操作系统:计算机网络类型(……)、功能(通信、资源管理、服务【电子邮件、文件传输、共享硬盘、共享打印】、网络管理、互操作).
第二章 进程的描述与控制
1. 前趋图(Procedence Graph):是一个有向无循环图(Directed Acyclic Graph, DAG);
2. 程序执行方式:
(1) 顺序执行:特征:顺序性、封闭性(执行时只有本程序能改变全机状态)、可再现性(条件相同则结果相同);
(2) 并发执行:特征:间断性、失去封闭性、不可再现性;
(3) 并发执行的条件:设R(pi)={a1,a2,...,an}为程序p在执行期间所需参考的所有变量的集合(“读集”),W(pi)={b1,b2,...,bn}为程序p在执行期间所需改变的所有变量的集合(“写集”),则应满足:R(p1)∩W(p2)∪W(p1)∩R(p2)∪W(p1)∩W(p2)=?,称Bernstein条件;
3.进程的描述:
(1)进程的特征:动态性(由创建而产生,由调度而执行,因得不到资源而暂停执行,由撤销而消亡)、并发性、独立性、异步性、结构特征【由程序段、数据段及进程控制块三部分构成,统称“进程映像”】);
(2)进程的基本状态:就绪(Ready)、执行、阻塞(Block),以及新(New)、终止(Terminated);
(3)进程挂起的需要:终端用户需要、父进程需求、操作系统需要、对换的需要(外存?内存)、负荷调节的需要;
进程控制块(PCB):是进程实体的一部分,是操作系统中最重要的记录型数据结构;包括:进程标识符信息(Process Name、PID)、处理机状态信息、进程调度信息(进程状态、优先级、事件)、进程控制信息(程序和数据的地址、进程同步和通讯机制、资源清单、链接指针);组织方式:链接方式(队列,headP->Node->...->Node->NULL)、索引方式(几张索引表,分别指向不同的PCB);
4、进程控制:
(1)操作系统内核:支撑功能、中断处理、时钟管理、原语操作(是“原子操作”,Atomic Operation,一组不可分割的操作)、进程管理、存储器管理、设备管理;
(2)进程的创建:进程图(进程树形式)、引起事件(用户登录、作业调度、提供服务、应用请求)、过程(申请空白PCB、分配资源、初始化【进程标识符、处理机状态、控制信息】、插入就绪队列);
(3)进程的终止:正常结束(产生中断、通知系统)、异常结束(原因:越界错误、保护错、特权指令错、非法指令错、运行超时、等待超时、算数运算错、I/O故障等)、外界干预;
5、线程的概念:
(1)引入:线程是进程的一个实体,是被系统独立调度和分派的基本单位;基本上不拥有系统资源,只拥有一点在运行中不可少的资源并且可以共享进程所拥有的全部资源;
(2)与进程比较:调度(切换更方便)、并发性(提高处理量)、拥有资源、系统开销
(3)用户级线程(User-level Threads):如Informix[X2] ;内核级线程(Kernel-supported Threads):如Mach、OS/2;同时实现:如Sun Solaris。
6、会晤(Session):与设备的操作,可看做一个应用程序和一个虚拟计算机,当程序处于前台时,它利用的是实设备;处于后台时,则利用虚设备工作,或者被挂起。操作系统需要记住每个应用程序当前与设备通信的状态,并在它被调到前台时恢复之。
7、线程的控制:同进程控制(TCB、TID)。
第三章 进程的同步与通信
1. 基本概念:资源共享(抱着进程能互斥地访问临界资源)、相互合作(次序协调);
2. 临界资源:经典的进程同步问题:生产者-消费者问题(Producer-Cosumer)。并发执行时counter的值不可预知;
3. 临界区:每个进程中访问临界资源的代码;进程互斥地进入临界区是保证对临界资源互斥访问的关键;方法:进入临界区前先对欲访问的临界资源进行检查:
Repeat
Entry section’进入区,设置访问标识
Critical section
Exit section’退出区,清除访问标识
Remainder section
Until false
4.同步机制应遵循的原则:空闲让进(有效利用资源)、忙则等待、有限等待(避免“死等”)、让全等待(避免“忙等”);
5.软件方法解决进程互斥问题:
(1)设置公用变量Turn,记录被运行进入临界区的进程的编号:
Do
If turn≠i then continue
Critical section
Turn=j
Remainder section
Loop Until EXIT;
缺点:当进程i暂时不要求访问临界资源时,j却无法进入临界区——不满足“空闲让进”;
(2)观察临界资源是否在访问:设置数组,记录进程是否在临界区中执行;但是
Dim flag(n) as boolean
Do
If flag(i) then continue do
Flag(i)=true
Critical section
Flag(i)=false
Remainder section
Loop Until EXIT
缺点:当进程i更改自己的标识flag(i)为true时,由于需要一段时间,仍然会被当做false,结果导致进程i、j均将标识设为true——不满足“忙则等待”;
(3)flag改为需要进入临界区的标识:
Do
Flag(i)=true
If falg(j) then continue do
Critical section
Flag(i)=false;
Remainder section
Loop until EXIT
缺点:当进程i、j同时要进入临界区时,同时将自己的标识设为true,然后观察发现对方均为true,故都不能进入临界区——不满足“空闲让进”;
(4) 组合(1)和(3):
Do
Flag(i)=true: turn=j
If flag(j) and turn=j then continue do
Critical section
Flag(j)=flase
Remainder section
Loop until EXIT
6.软件方法解决进程互斥问题:
(1)Test-and-set指令:
Function TS (ByRef lock as boolean) as boolean
TS=lock
Lock=true
End function
Lock=false时,资源空闲;lock=true时,资源正在被使用;
(2)利用TS实现进程互斥:每个临界资源设置一个lock,赋初值false;
Do
If TS(lock) then continue do
Critical section
Lock=false
Remainder section
Loop until EXIT
(3)Swap指令:在危机中又称为XCHG指令:
Sub swap (ByRef a as boolean, b as boolean)
Dim temp as boolean
Temp=a: a=b: b=temp
End sub
(4)利用Swap指令实现进程互斥:每个进程中利用一个局部变量key,实质是将资源状态lock传递到每个进程;
Do
Key=true
Do
Swap lock,key
Loop until key=false
Critical section
\ lock=false
Remainder section
Loop until EXIT
7.信号量机制:
(1)整形信号量机制:Dijkstra提出,仅含两个标准的原子操作(Atomic Operation)wait(s)和signal(s)来访问;也被称为P、V操作:
Wait(s): do: if s<=0 then continue do: loop: s=s-1
Signal(s): s=s+1;
(2)利用信号量实现互斥:为资源设置一互斥信号量mutex,设初始值为1;每个进程进入临界区之前执行wait操作,成功后方可进入临界区;退出临界区后,执行signal操作:
Dim mutex as integer, semaphore [X3] as integer=1
Do
Wait(mutex)
Critical section
Singal(mutex)
Remainder section
Loop until EXIT
(3)利用信号量来描述前趋关系:设有两并发执行的进程P1、P2,分别含有语句S1、S2,若要先执行S1再执行S2,则可以再S1后插入signal(s),在S2前插入wait(s)。
(4)记录型信号量机制:采用让权等待的策略,处理一个用于代表资源数目的整型变量value外,还要一个进程链表L,用于链接上述所有的等待进程:
Type semaphore
Dim value as integer, L as list
End type
Sub wait(ByRef s as semaphore)
s.value=s.value-1
If s.value<0 then block(s.L)
End sub
Sub signal(ByRef s as semaphore)
s.value=s.value+1
if s.value<=0 then wakeup(s.L)
End sub
(5)信号量集机制:
①AND型信号量集机制:为避免两进程同时设置mutex时出现的死锁,将进程在运行过程中所需要的资源一次性地全部分配给进程,用完后一次性释放;并在wait中增加AND条件;又称为“同步wait操作”(Simultaneous Wait, Swait):
Sub Swait(S1,S2,...,Sn, p as process)
Dim i as integer
If S1>=1 and S2>=1 and... and Sn>=1 then
For i=1 to n: Si=Si-1: next i
Else
For i=1 to n: if Si<1 then exit for: next i
waitingList.add p,Si’如果有一个资源不能满足,则将其阻塞
End if
End sub
Sub Ssignal (S1,S2,...,Sn)
Dim i as integer
For i=1 to n
Si=Si+1
waitingList.remove Si’所有满足该资源要求的进程都进入就绪状态
next i
End sub
②一般信号量集机制:
Sub Swait(S1,t1,d1,...,Sn,tn,dn)
If S1>=t1and ... and Sn>=tn then
For i=1 to n: Si=Si-di: next i
Else
For i=1 to n: if Si<1 then exit for: next i
waitingList.add p,Si’如果有一个资源不能满足,则将其阻塞
End if
End sub
Sub Ssignal (S1,d1, ... ,Sn,dn)
For i=1 to n
Si=Si+di
waitingList.remove Si
next i
End sub
几种特殊情况:
① Swait(S,d,d),此时信号量集中只有一个信号量,但可每次申请d个资源;
② Swait(S,11),此时信号量集蜕化称一般的记录型信号量(S>1)或互斥型信号量(S=1);
③ Swait(S,1,0),当S≥1时,语序多个进程进入;当S=0时,将阻止任何程序进入;即相当于一个可控开关。
8. 经典进程同步问题:
(1)生产者-消费者问题:利用记录型信号量解决,empty与full分别控制缓冲区满与空的数量,mutex则控制对缓冲区操作的互斥作用:
public mutex as semaphore=1 , empty as semaphore =n, full as semaphore=0
public buffer(n-1) as object, in as integer=0, out as integer=0 ‘采用队列的形式
Process producer:
Do
Dim nextp as object=New object ‘Produce an item as nextp
Wait empty
Wait mutex
Buffer(in)=nextp
In=(in+1) mod n
Signal mutex
Signal full
Loop Until EXIT
Process consumer:
Do
Wait full
Wait mutex
Nextc=buffer(out)
Out=(out+1) mod n
Signal mutex
Signal empty
Set nextc = nothing ‘Consum the item
Loop until EXIT
若用AND信号量解决,则将Wait empty、Wait mutex两句改为Swait empty, mutex即可,同样Signal mutex、Signal empty须改为Ssignal full, mutex;
(2)读者-写者(Reader-writer Problem):一个writer进程必须与其他进程互斥地访问共享对象的同步问题,1971年由Courtois等人解决。用记录型信号量解决,设置互斥信号量Rmutex、Wmutex;又设置正在读的进程数目readcount,仅当readcount=0即没有“读进程”操作时“写进程”才可以操作,这样可以减少判断(同理也可设置writecount)。
Dim rmutex as semaphoer=1, wmutex as semaphore=1
Dim readcount as integer=0
Process reader:
Do
Wait rmutex
If readcount=0 then wait wmutex
Readcount=readcount+1
Read
Signal rmutex ’在写writer释放后,为保险起见,还需再次进行信号量的判断,以防冲突
Wait wumtex
Readcount=readcount-1
If readcount=0 then signal wmutex
Signal rmutex
Loop until false
End process
Process writer:
Do
Wait wmutex
Write
Signal wmutex
Loop
End process
若用信号量集来解决,则有:
Dim RN as integer, L as semaphore, mx as semaphore
L={RN,1}:mx={RN,1}
Process reader
Do
Swait(L,1,1)’reader数量<=RN
Swait(mx,1,0)’writer数量<1,起到开关作用
Read
Ssignal(L,1)
Loop
End process
Process writer
Do
Swait(mx,1,1;L,RN,0)
Write
Ssignal(mx,1)
Loop
End process
(3)哲学家进餐问题(Dijkstra提出并解决)
利用记录型信号量解决:
Dim chopstick(4) as semaphore
Process philosopher(i)
Do
Think
Wait(chopstick(i))
Wait(chopstick((i+1) mod 5))
Eat
Signal(chopstick(i))
Signal(chopstick((i+1) mod 5))
Loop until false
End process
缺点:五个进程同时触发会使chopstick均为0,引起死锁。
改进:利用AND信号量机制解决:
Dim chopstick(4) as semaphore{1,1,1,1,1,1}
Process philosopher (i)
Do
Think
Swait(chopstick((i+1) mod 5),chopstick(i))
Eat
Ssignal(chopstick((i+1) mod 5),chopstick(i))
Loop until false
End process
9、管程机制:
(1)引入:每个访问临界资源的进程都要有wait(s)和signal(s),且同步不当会导致系统死锁。故把所有进程对某一种临界资源的同步操作都集中起来,构成一个“秘书”进程。
(2)基本概念:仅用少量信息描述各种硬件资源和软件资源的分配情况,忽略其内部结构和实现细节。例如:
Process monitor
Procedure entry P1(…)’可以视作一个interface,后面的代码中添加实现接口的一个function
End entry
Procedure entry P2(…)
End entry
Procedure entry Pn(…)
End entry
‘Initialization code
End process
(3)解决生产者-消费者问题:
Process monitor
Dim in as integer, out as integer, count as integer
Dim buffer as item(n-1)
Dim notfull as condition, notempty as condition
Procedure entry put(item)
If count>=n then notfull.wait
Buffer(in)=nextp
In=(in+1) mod n
Count=count+1
If notempty.queue then notempty.signal
End entry
Procedure entry get(item)
If count<=0 then notempty.wait
Nextc=Buffer(out)
Out=(out+1) mod n
Count=count-1
If notfull.queue then notfull.signal
End entry
In=0:out=0:count=0
End process
(4)解决哲学家进餐问题:
Process monitor
Dim state_enum as enum{thinking,hungry,eating}
Dim state as state_enum(4)
Dim self as condition(4)
Procedure entry pickup(i)
State(i)= hungry;
Test i
If state(i)<>eating then self(i)=wait
End entry
Procedure entry putdown(i)
State(i)=thinking
Test(i+4 mod 5)
Test(i+4 mod 5)
End entry
Sub test(k)
If state(k+4 mod 5)<>eating and state(k)=hungry and state(k+1 mod 5)<> eating then
State(k)=eating: self(k).signal
End if
End sub
For i=0 to 4: state(i)=thinking: next i
End process
10、进程通信:
(1)类型:共享存储器系统(划出共享存储区,并由系统指定的关键字在系统与进程之间建立联系)、消息传递系统(利用一组通信命令(原语)来操作,为目前主要的进程通信方式)、管道通信(用共享文件实现读进程和写进程之间的数据发送与接收);
(2)直接通信方式:利用OS提供的发送命令,将消息直接发送给目标进程,形式如send(receiver, message)、receive(sender, message);当对象不确定时,也可以使用返回值表示,如receive(id, message);
间接通信方式:通过共享数据结构的实体,形式如send(mailbox, message)、receive(mailbox, message);发送进程与接收进程之间存在一对一(专用通信链路)、一对多(广播形式)、多对一(客户/服务器交互)、多对多(公用信箱)四种关系。
(3)通信链路:根据建立方式,可分为显式链路(用命令请求建立和拆除)、隐式链路(仅用发送命令请求);根据连接方法,可分为点对点链路、多点连接链路;根据通信方式,可分为单向通信链路、双向通信链路;根据容量,可分为无容量通信链路(无缓冲区)、有容量通信链路(设置缓冲区);
消息格式:消息头通常包括发送进程名、接收进程名、消息长度、消息类型、消息编号及发送日期等;
进程同步方式:发送进程阻塞、接收进程阻塞(又称紧密同步,两进程平时都处于阻塞状态);发送进程不阻塞、接收进程阻塞(发送进程平时可以广播;应用得最广);发送进程和接收进程均不阻塞(仅当发生某事件时发送进程或接收进程才被阻塞;如建立消息队列容纳发送进程的消息,当消息队列满时发送进程阻塞,消息队列空时接收进程阻塞);
(4)消息缓冲队列通信机制:
数据结构:消息缓冲区:
Type buffer
Sender as long
Size as long
Text as bite(n)
Next as long’指向下一缓冲区的指针
End type
PCB:
Type block
……
Mq’队列队首指针
Mutex’队列互斥信号量
Sm’队列资源信号量
End type
发送原语:
Sub send(receiver, a)’a为发送区
Getbuf a.size, i
With i
.sender= a.sender
.size=a.size
.text=a.text
.next=NULL
End with
Getid PCB, receiver, j
Wait j,mutex
Insert j,mq, I ’insert的操作应包括修改sm(sm=sm-1)
Signa j,mutex
End sub
接收原语:
Sub receive(b)’b为接收区
J=[internal name]
With j
Wait .sm
Wait .mutex
Remove .mq, i
Signal .mutex
b.sender=.sender
b.size=.size
b.text=.tex
End with
第四章 调度与死锁
1、调度的类型与模型:
(1)调度类型:
高级调度:又称作业调度或长程调度(Long-Term Scheduling),用于将外设或后背队列中的作业调入内存,并为其创建进程、分配资源;实时输入的数据不需要作业调度);
低级调度:又称进程调度、短程调度(Short-Term Scheduling),决定哪个进程将被处理;可采用非抢占方式(简单、系统开销小,但不能满足紧急任务的要求)或抢占方式(允许停止正在执行的进程以执行另一个进程;抢占原则有:时间片原则【设定时间限额】、优先权原则【等级高的先做】、短作业(进程)优先原则【快的先做】);此调度运行频率最高,故算法不能太复杂;
中级调度:又称中程调度(Medium-Term Scheduling),实际上是存储器管理中的对换功能,将暂时不能运行的进程调入外存,将外存上满足运行条件的进程调入内存。
(2)调度队列模型:
仅有进程调度的队列模型:
具有高级和低级调度的调度队列模型:
同时具有三级调度的调度队列模型:
(3)选择调度方式和算法的若干准则:
1.面向用户准则:周转时间短(作业在外设上等待调度的时间、进程在就绪队列上等待调度的时间、进程在CPU上执行的时间、等待I/O操作完成的时间)、响应时间快(响应时间、处理时间、反馈时间)、截止时间保证、优先权准则;
2.面向系统准则:系统吞吐量高、处理机利用率好(试剂系统中,CPU利用率一般在40%到90%之间)、各类资源平衡利用。
2、调度算法:
(1)先来先服务(FCFS):该算法总是把处理机分配给最先进入就绪队列的进程,一个进程一旦分得处理机,便执行下去,直到该进程完成或阻塞时,才释放处理机。
优点:实现简单;缺点:没考虑进程的优先级;
(2)短作业 (进程)优先调度算法(SJ(P)):从就绪队列中选出“下一个CPU执行期”最短的进程,为之分配处理机。
优点:可获得较好的调度性能;缺点:难以准确地知道下一个CPU执行期,只能根据每一个进行的执行历史来预测;未考虑作业的紧迫程度,不能保证紧迫性作业得到及时处理;
(3)时间片轮转调度算法:把CPU划分成若干时间片,并且按顺序赋给就绪队列中的每一个进程,进程轮流占有CPU,当时间片用完时,即使进程未执行完毕,系统也剥夺该进程的CPU,将该进程排在就绪队列末尾。同时系统选择另一个进程运行;
简单轮转法:系统将所有就绪进程按FIFO规则排队,按一定的时间间隔把处理机分配给队列中的进程。这样,就绪队列中所有进程均可获得一个时间片的处理机而运行;
多级队列方法:将系统中所有进程分成若干类,每类为一级;
时间片大小的确定:系统对响应时间的要求(响应时间T与进程数N和时间片q成正比:T=Nq)、就绪队列中进程的数目(时间片大小T反比于分时系统所配置的终端数目n:Tn=C)、系统的处理能力(必须保证输入的常用命令在一个时间片内处理完毕);
(4)优先权调度算法:
i.优先权高度算法类型:非抢占式(一旦分配给最高优先权进程后就一直执行下去)、抢占式(出现另一个优先权更高的进程时便让位);
ii.优先权的类型:静态优先权(在创建进程时确立,且规定在整个运行期间不变;一般用一个整数表示;简单易行,但不够精确)、动态优先权(优先权可随进程的推进而改变,以便获得更好的调度性能;如就绪队列中的进程的优先权随等待时间增长而增加,则最先进入者往往优先权最高【此即FCFS算法】,同时正在执行的进程优先级随执行时间增长而下降,可防止一个长作业长时间占有CPU);
(5)(最)高响应比优先调度算法:优先权=(等待时间+要求服务时间)/ 要求服务时间=响应时间 / 要求服务时间;此算法特点:(实现了优先权与作业长短选择的折衷)
i.等待时间相同,则要求服务时间越短优先权越高,即短作业优先;
ii.要求服务时间相同,则等待时间越长优先权越高,即FCFS;
iii.对于长作业,等待时间很长时优先权也可以很高,故也可以被处理;
(6)多级队列制度:根据作业的性质或类型的不同,将就绪进程队列再分为若干独立的子队列,各个作业固定地分属于一个队列;每个队列的算法可以采用不同的调度算法,队列之间分配的比例也可不同(如系统级进程队列时间片长多,应用级进程队列时间片长短;)
(7)多级反馈队列调度算法:将就绪队列分为N级,每个就绪队列分配给不同的时间片,级别越小,时间片越小,各队列采用先进先出(最后一级可采用时间片轮转); 系统从第一级调度,当第一级为空时,系统转向第二个队列;每当运行进程用完一个时间片,放弃CPU时,进入下一级队列;等待进程被唤醒时,进入原来的就绪队列;当进程第一次就绪时,进入第一级队列;性能:对短作业、长作业均有较好保障;
3、实时系统中的调度:
(1)对实时系统的要求:提供必要的信息(就绪时间、截止时间、处理时间、资源优先级) 、采用抢占式调度机制、系统处理能力强、具有快速切换机制;
(2)实时调度算法:非抢占式调度算法(非抢占式轮转调度算法、非抢占式优先调度算法)、抢占式调度算法(基于时钟中断的抢占优先调度算法、立即抢占优先权调度算法);
4、多处理机调度:
(1)多处理器系统的类型:紧密耦合(Tightly Coupted)MPS(MultipleProcesSor)、松散耦合(Loosely Coupled)MPS;
(2)对称多处理器系统和非对称多处理器系统
(3)进程分配方式:对称多处理器系统中的进程分配方式(静态分配【Static Assigenment】方式、动态分配【Dynamic Assgement】方式、非对称MPS中的进程分配方式;
(4)进程(线程)调度方式:自调度(Self-Scheduling)方式、成组调度(Gang Scheduling)方式。
5、线程的优先权:OS/2中,有三类执行优先权:(每一类优先权中又分为32个优先级)
(1)时间紧急(time-critical)类:最高优先权级别,如管理计算机之间通信的任务、进行实时控制的任务等;
(2)常规(regular)类:允许有一定延迟的线程,含大多数线程;但可修改具有该类优先权线程的的优先级以便系统尽可能忙碌并保证有合适的用户响应,通常是将处于前台的线程或正在利用I/O服务的线程移至较高的优先级队列上,而将计算型的线程放到较低的优先级队列上;
(3)空闲时间(idle-time)类:仅在处理机空闲时才被执行。
第一和第三类中的优先级为静态优先级,第二类则为动态优先级。
【更多请参见《计算机操作系统》(西安电子科技大学出版社,1996年12月第1版);部分资源来自“处理器调度与死锁.ppt”(傅秀芬,《网格计算及关键技术研究》)。】
[X1]系统中能独立运行并作为资源分配的基本单位;是一个活动实体,区别于程序的静态实体。
[X2]数据库管理系统
[X3]【's?m?for】n.信号量(即signal中的变量s)