操作系统要点一进程
操作系统(Operator System)
1.操作系统:
操作系统是一系列程序的集合,它负责组织和管理程序,并方便用户使用。操作系统又称中断驱动处理,即通过中断来进行其他任务的执行。
2.操作系统分类:
⑴批处理:将程序统一输入到一个程序中,集中进行处理。特点:减少人为操作的耗时,耗时少。
⑵单机多道:同时执行多个程序,将多个程序载入内存中。特点:执行的运行多个程序,进行进程和作业的调度;多道系统中涉及两个调度:作业调度和进程调度。
⑶分时系统:将CPU的执行时间划分为多个时间片,(这个时间片最少应该大于轮换(切换进程所消耗的时间)的时间)。特点 :交互性,即时性;对该系统的影响因素有:时间片的大小,用户数,对换的数据量;
⑷实时系统:严格的时间限制,精准的时间控制。eg:导弹发射系统。
注意:前三个都是通用系统,可以用于多个场景,而第四个是专用系统,只能用于特定的场景。
3.进程(速记:程序,进程,进程状态,进程的PCB结构,进程的调度,调度算法,进程之间的通信)
进程:一个运行的程序,根据进程数据的不同分为不同的进程;
⑴进程与程序的区别:进程是动态的,程序是静态的;进程有生命周期,创建,就绪,运行,阻塞,终止,程序则没有生命周期;进程=程序+进程控制块(PCB)+数据;一个程序可以对应多个进程,一个进程也可对应多个程序。
⑵进程的状态:创建,就绪,运行,阻塞,终止。主要状态为就绪,运行,阻塞。
就绪:进程已经获得除了CPU之外的所有资源,等待被调度;
运行:进程已经获得CPU,程序正在被CPU处理;
阻塞:正在运行的进程,由于某个时间而无法继续进行,而放弃CPU处于阻塞队列中,引起阻塞原因有:I/O,申请缓冲区被满足,信号量等。
进程之间的状态转换以及举例:
就绪-运行:处于就绪状态的进程,进程调度获得CPU后。eg:当CPU空闲,且进程处于就绪状态;或 当运行进程阻塞,特定的就绪进程就会被选择并运行。
运行-就绪:处于执行状态的进程,分配给进程的时间片执行完毕后,进程转为就绪状态。eg:进程锁获得CPU的时间片使用完毕,但是进程还没有运行完。
运行-阻塞:处于执行状态的进程,在遇到某事,无法继续,进程转为阻塞状态;eg:运行的进程需要等待键盘的输入。
阻塞-就绪:处于阻塞状态的进程,等待的事件完成,进程转为就绪状态。eg:键盘的输入完成,进程就转为就绪状态,重新竞争CPU资源。
⑶进程的信息:进程的区分,状态,位置都在PCB中记录,通过PCB中的进程号来确认来区分进程,进程在主存中的位置通过PCB中进程的起始地址和分配长度,PCB中有描述进程所有的状态。
⑷进程控制块(PCB):在主存的系统区中有一区块存储PCB,它是一个数据结构,里面有进程的所有信息,状态,位置,进程号,PCB随进程的创建而创建,PCB是进程创建的唯一标准。
⑸进程在哪等待:
队列:
作业队列:在批处理中,从外存加载信息到主存;进程队列:从主存中选择准备好的进程;设备队列:用到哪个设备的时候,进程到相应的设备上等待;注意进程排队的是PCB。
针对调度作业和进程的调度又分为:高级调度:(一般指的是作业),从后备队列中选择满足条件的作业放入到内存,然后将准备好的进程,放入到就绪队列;低级调度:(一般指的是进程),从就绪队列中选择进程;
⑺进程的调度算法:(对进程和作业通用)
①FCFS:First-Come-First-Service ,先来先服务,从就绪队列汇总选择最先进入该队列的进程,分配CPU,注意不是先进先出,因为最先执行的进程不一定先执行完。特点:简单,效率低。
②SJF:Short- Job -First,短作业优先,即从就绪队列中选择一个运行时间较短的进程,分配CPU。特点:出现饥饿,没有判断进程的紧迫程度。
③Priority:优先级调度算法,从就绪队列中选择一个优先级最高的进程,分配CPU。分为:非剥夺式优先级调度算法:即在进程的运行中,如果就绪队列中来了一个优先级比运行进程的优先级还高的进程,则等待运行进程获得的CPU时间片运行完或者等待其阻塞,才可以后来的最高级的进程。剥夺式优先级调度算法:即在进程的运行中,如果就绪队列中来一个优先级比运行进程的优先级还高的进程,则将运行的进程加入到阻塞队列中,运行新来的更高级别的进程。特点:出现饥饿。
④时间片轮换:适用于分时系统,系统将所有就绪进程按到达时间的先后次序排成一个队列,进程调度程序总是选择就绪队列中第一个进程执行,即先来先服务的原则,但仅能运行一个时间片,在使用完一个时间片后,即使进程并未完成其运行,它也必须释放出(被剥夺)处理机给下一个就绪的进程,而被剥夺的进程返回到就绪队列的末尾重新排队,等候再次运行。如果有I/O,则进入阻塞队列。注意:时间片的大小对算法有影响,最小时间片应该大于进程切换所消耗的时间。
⑤多级反馈队列:时间片轮转调度算法和优先级调度算法的综合,动态调整进程优先级和时间片大小。具体过程为:
Ⅰ.多个优先级不同的就绪队列,队列优先级依次降低,同时每个队列所分配的CPU时间片也不相同,越高级的队列时间片越少。
Ⅱ.当进程进入内存,按照FCFS算法,放入一级队列中,然后当进程被执行,如果在规定的时间片内没有完成,则放入二级队列的末尾,在按照FCFS算法进行调度,依次类推,将在上一级队列中未完成的进程放入到下一级别。
Ⅲ.当第一级队列为空时,才调用第二级别队列中的进程运行,对于新的较高的优先级的进程的进入,则采用剥夺式优先级算法,将正在运行的进程放入原先的队列的末尾,将CPU分配给更高优先级的进程。
特点是:解决优先级算法的饥饿问题。对于优先级高的大任务,则执行,但也给与其他优先级低的进程分配CPU资源。
⑻进程的分类:I/O型:主要操作是输入输出;CPU型:主要操作是进行计算。
⑼进程的创建:进程资源共享:①子进程和父进程共享所有资源;②子进程是父进程的子集;③父进程和子进程不共享任何资源。
子进程和父进程执行:①可并行;②父进程等待子进程运行;
⑽进程的终止:①正常终止:进程状态为终止状态,即删除进程,回收PCB;②非正常终止:父进程杀掉子进程;子进程不需要时,杀掉子进程;父进程被终止时,则递归杀死子进程。
⑼进程的通信:
关系:独立进程,互不影响;协作进程,共同完成一个任务;
交互:共享主存,两个进程在主存中有共享区间;消息传递,没有共享主存,进行send,recive系统调用;
进程通信:①建立链路;②send,recv来传递;
可分为:直接通信和间接通信;
直接通信:知道进程名,链路自动连接,只能在两个进程间创建;
间接通信:通过邮箱,进程之间共享通信。
⑽进程的同步
使用信号量来表示,wait(),signal(),wait()只能与signal()匹配,进程对资源的访问使用信号量来进行限制,对于进程wait(),表示进程获取信号量,可以访问临界资源,对于信号量的释放,只能使用signal(),来表示进程已经从临界区执行完毕,释放临界资源,当一个进程使用信号量访问资源的时候,其他的进程想要访问临界资源,则会去排队,只有释放临界资源,才会从队列中根据调度算法,选择一个进程来使用临界资源,这个和Java中的同步机制一样,使用锁,锁可以是对象,当用户访问资源的时候,使用锁,获取锁资源,当执行完临界资源后,释放锁资源,在这期间(即有进程正在使用临界资源),当其他用户想要使用临界资源的时候,会检查访问对象时候有锁资源,如果没有,则会在对象(锁)的队列中进行等待,直到锁资源释放,从队列中选择一个用户进行唤醒。
观看《操作系统原理》-中南大学,,,如有异议,敬请指出,与君共勉。