兰州大学操作系统重点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多道程序设计:处理器处理很多程序,执行顺序取决于它们的相对优先级以及它们是否正在等待I/O当一个程序被中断时,控制权转移给中断处理程序,一旦中断处理程序完成,控制权可能并不立即返回到这个用户程序,而可能转移到其他待运行的具有更高优先级的程序
操作系统的特征:并发性、共享、异步、虚拟
操作系统分类:批处理操作系统
分时操作系统实时操作系统
进程的概念:定义:可并发执行的程序,在一个数据集合上的运行过程。
申请/拥有资源∽调度(线程)
程序:静态概念,是指令和数据的集合,可长期存储
程序属于进程
进程与程序对应关系:
- 一个程序可以对应一个进程或多个进程
- 一个进程可以对应一个程序,或者一段程序
进程的特征:动态性并发性独立性异步性
进程的结构:组成(进程映像): 程序、数据集合、进程控制块PCB (Process Control Block )
PCB是进程存在的唯一标志。创建进程时,创建PCB;进程结束时,系统将撤消其PCB。(单一表格链表)
两状态:执行、未执行(队列)
- 进程获得处理机,进入执行状态;当时间片结束或其它某种原因,进程释放处理机,暂停执行,处于未执行状态。
五状态:执行状态就绪状态阻塞状态新状态终止状态
空新状态新创建的进程首先处于新状态
②新状态就绪状态当系统允许增加就绪进程时,操作系统接纳新建状态进程,将它变为就绪状态,插入就绪队列中。
③就绪状态执行状态当处理机空闲时,将从就绪队列中选择一个进程执行,该选择过程称为进程调度,或将处理机分派给一个进程,该进程状态从就绪转变为执行。
④执行状态终止状态执行状态的进程执行完毕,或出现诸如访问地址越界、非法指令等错误,而被异常结束,则进程从执行状态转换为终止状态。
⑤执行状态就绪状态分时系统中,时间片用完,或优先级高的进程到来,将中断较低优先级进程的执行。进程从执行状态转变为就绪状态,等待下一次调度。
⑥执行状态阻塞状态执行进程需要等待某事件发生。通常,会因为进程需要的系统调用不能立即完成,如读文件、共享虚拟内存、等待I/O操作、等待另一进程与之通信等事件而阻塞。
⑦阻塞状态就绪状态当阻塞进程等待的事件发生,就转换为就绪状态。进入就绪队列排队,等待被调度执行。
对换技术:将内存中暂时不能运行的进程,或暂时不用的数据和程序,换出到外存,以腾出足够的内存空间,把已具备运行条件的进程,或进程所需要的数据和程序,换入内存。 PCB不能换出去。(因为PCB是系统唯一感知进程的标志)挂起进程被交换到外存,状态变为挂起状态
进程的控制包括创建、阻塞、唤醒、挂起、激活、终止、撤销进程等。这些控制
和管理功能由操作系统中的原语实现。
原语(Primitive)是在管态下执行、完成系统特定功能的过程。
原语和机器指令类似,其特点是执行过程中不允许被中断,是一个不可分割的基本单位,原语的执行是顺序的而不可能是并发的。
执行模式:用户模式
低权限模式
用户程序一般在该模式下运行
系统模式/控制模式/内核模式
高权限模式
操作系统的内核运行于此模式
模式切换
程序状态字PSW中有一位用来标识当前执行模式
通过修改该位的值来切换模式
操作系统的控制结构:OS必须掌握每个进程和资源的当前状态信息
OS构造并维护它所管理的每个实体的信息表
内存表I/O表文件表进程表
互斥条件:每次只允许一个进程处于临界区(忙则等待);
进程只能在临界区内逗留有限时间,不得使其它进程在临界外无限期等待(有限等待)
如果临界区空闲,则只要有进程申请就立即让其进入(空闲让进);
进入临界区的进程,不能在临界区内长时间阻塞等待某事件,必须在一定期限内退出临界区(让权等待)
不能限制进程的执行进度及处理机的数量
信号量方法:软件方法和硬件方法都存在“忙等”问题,浪费了处理机时间。信号量方法能实现进程互斥与同步,而不必“忙等”
缓冲区的数量有限,为n
producer:
while (true) {
/* produce item v */
while ((in + 1) % n == out)
/* do nothing */;
b[in] = v;
in = (in + 1) % n
}
consumer:
while (true) {
while (in == out)
/* do nothing */;
w = b[out];
out = (out + 1) % n;
/* consume item w */
}
int readcount;
semaphore x=1,wsem=1;
void reader()
{
while(true){
semWait(x);
readcount++;
if(readcount==1)semWait(wsem);
semSignal(x);
READUNIT();
semWait(x);
readcount--;
if (readcount==0) semSignal(wsem);
semGisnal(x);
}
}
void writer()
{
while (true){
semWait(wsem);
WRITEUNIT();
semSignal(wsem);
}
}
void main()
{
readcount=0;
parbegin(reader,writer);
}
管程:cwait(c):调用进程的执行在条件c上挂起,管程现在可被另一个进程使用
csignal(c):恢复在cwait之后为某条件而挂起的进程的执行(选一)。
与信号量的semWait、semSignal不同
如果在管程中的一个进程发信号,但没有在这个条件变量上等待的任务,则该信号丢失
死锁的条件
互斥一次只有一个进程可以使用一个资源
占有且等待一个进程在等待其它资源分配时,继续占有已分配的资源
非抢占不能强行抢占已分配给其它进程的资源除非进程主动释放
循环等待资源分配图中存在一条封闭的进程链
死锁预防:
互斥一般条件下,第一个条件不能禁止
占有且等待要求进程一次性请求所需要的资源所有资源都满足时才执行
非抢占申请被拒绝,主动释放已分配的其它资源申请被拒绝,抢占已分配给其它进程的该资源