龙空技术网

初识操作系统-类型与结构,顺带看看操作系统原理-进程管理

红鱼程序生活 156

前言:

而今看官们对“用户进程的优先权应高于系统进程的优先权”大致比较重视,朋友们都需要学习一些“用户进程的优先权应高于系统进程的优先权”的相关知识。那么小编也在网摘上汇集了一些有关“用户进程的优先权应高于系统进程的优先权””的相关知识,希望同学们能喜欢,姐妹们一起来了解一下吧!

^_^点赞关注头条号,查看更多文章。

前几期了解了计算机组成与体系结构,而操作系统也是非常重要的一环。掌握操作系统原理的关键在于深入理解“一个观点,两个线索”。一个观点是以资源管理的观点来定义操作系统。两个线索是指操作系统如何管理计算机系统的各类资源和控制程序的执行。

操作系统(Operating System,OS)是计算机系统中的核心系统软件,负责管理和控制计算机系统中的硬件和软件资源,合理地组织计算机流程和有效的利用资源,在用户和计算机之间起到接口的作用。

操作系统与软件/硬件的关系

操作系统的基本类型有:分时操作系统,实时操作系统,批处理操作系统,网络操作系统,嵌入式操作系统,分布式操作系统,微内核操作系统等。

操作系统的主要功能是进行处理机与进程管理、设备管理、存储管理、文件管理和作业管理的工作。

进程管理

处理机是计算机系统的核心资源,操作系统的功能之一就是处理机管理。随着计算机的迅速发展,处理机管理更加重要,这主要由于计算机的速度越来越快,处理机的充分利用有利于系统效率的大大提高;处理机管理是整个操作系统的重心所在,其管理的好坏直接影响到整个系统的运行效率。

而进程是处理机管理中的最基本、最重要的概念。进程是体统并发处理执行的体现。在多道程序系统中程序运行的主要特点:资源共享;程序的并发执行或并行执行。

进程的状态转换

由于进程运行的间断性,决定了进程至少具有以下三种状态:

就绪状态。当进程已分配了除CPU以外的所有必要的资源后,只要能再获得处理机,便能立即执行。在一个系统中,可以有多个进程同时处于就绪状态,通常把它们排成一个队列,称为就绪队列。执行状态。指进程已经获得处理机,其程序正在运行。在单处理机系统中,只有一个进程处于执行状态。阻塞状态。指进程因发生某件事件(如请求I/O,申请缓冲空间等)而暂停执行时的状态,亦即进程的执行受到阻塞。也称为“等待”状态,“睡眠”状态。通常阻塞的进程排成一个队列,称为阻塞队列。

进程的变化情况如下:

运行态→等待态:一个进程运行中启动了外围设备,它就变成等待外围设备传输信息的状态。等待态→就绪态:外围设备工作结束后等待外围设备传输信息的进程结束等待。运行态→就绪态:进程用完了一个使用处理器的时间后强迫该进程暂时让出处理器,当有更优先权的进程要运行时也迫使正在运行的进程让出处理器。就绪态→运行态:等待处理器分配处理器的进程,系统按照一种选定的策略从处于就绪态的进程中选择一个进程,让它使用处理器,那个被选中的进程就变成了运行态。

进程三态模型及其状态转换

进程调度与死锁

进程调度即处理器调度(又称上下文转换),它的主要功能是确定在什么时候分配处理器,并确定分配给哪个进程,即让正在执行的进程改变状态并转入就绪队列的队尾,再由调度原语将就绪队列的队首进程取出,投入执行。

引起进程调度的原因分为以下几类:

正在执行的进程执行完成;执行中的进程自己调用阻塞原语将自己阻塞起来进入睡眠状态;执行中的进程调用了P原语操作,从而因资源不足而阻塞;或调用V原语操作激活了等待资源的进程队列;在分时系统中,当一进程用完一个时间片;就绪队列中的某个进程的优先级变得高于当前执行进程的优先级,也将引起进程调度。

进度调度的方式分为两类:剥夺方式和非剥夺方式。所谓的非剥夺方式是指一旦某个作业或进程占用了处理器,别的进程就不能把处理器从这个进程手中夺走,直到该进程自己因调用原语操作而进入阻塞状态,或时间片用完而让出处理器;剥夺方式是指当就绪队列中有个进程的优先级高于当前执行进程的优先级时,便立即发生进程调度,转让处理机。

进程调度的算法是服务于系统目标的策略,对于不同的系统和系统目标,常常采用不同的调度算法:

先来先服务(First Come and First Serverd,FCFS)调度算法,又称先进先出(First In and First Out,FIFO)。就绪队列按先来后到原则排队。优先数调度。优先数反映了进程优先级,就绪队列按照优先数排队。有两种确定优先级的方法,即静态优先级和动态优先级。静态优先级指进程的优先级在进程开始执行前确定,执行过程中不变,而动态优先级,则可以在进程执行过程中改变。轮转法(Round Robin)。就绪队列按FIFO方式排队。每个进程执行一次占用处理器的时间都不超过规定的时间 单位(时间片),若超过,则自行释放自己所占有的CPU而排列到就绪队列的队尾,等待下一次的调度。同时,进程调度程序又去调度当前就绪队列中的第一个进程。

进程管理是操作系统的核心,在进程管理的实现中,如果设计不当,就会出现一种尴尬的局面——死锁。

当若干个进程互相竞争对方已占有的资源,无限期待地等待,不能向前推进时造成“死锁”。例如:P1进程占有资源R1,P2进程占有资源R2,此时,P1进程又需要资源R2,P2进程也需要资源R1,它们在等待对方占有的资源时,又不会释放自己占有的资源,因而使得双方都进入无限等待状态。

死锁是系统的一种出错状态,它不仅浪费大量的系统资源,甚至还会导致整个系统的崩溃,所以死锁是应该尽量预防和避免的。

死锁的条件:产生死锁的主要原因是供共享的系统资源不足,资源分配策略和进程的推进顺序不当。系统资源既可能是可重复使用的永久性资源,也可能是消耗性的临时资源。产生死锁的必要条件:互斥条件、保持和等待条件、不可剥夺条件和环路等待条件。解决死锁的策略:处于死锁状态的进程不能继续执行但又占用了系统资源,从而阻碍了其他作业的执行。解决死锁有两种策略:一种是在死锁发生前采用的预防和避免策略;另一种是在死锁发生后采用检测与恢复策略。

死锁的预防主要是通过打破死锁产生的4个必要条件之一来保证不会产生死锁。但这样做会大大降低系统资源的利用率和进程之间的并行程度。

死锁避免策略,则是在系统进行资源分配时,先执行一个死锁避免算法(典型的如银行家算法),以保证本次分配不会导致死锁发生。但是由于资源分配太频繁,因此死锁避免策略要消耗大量的CPU和时间。

标签: #用户进程的优先权应高于系统进程的优先权