全文连接:https://www.cnblogs.com/nullering/p/9684820.htmlhtml
操做系统须要掌握如下五个方面linux
1:进程管理:主要掌握进程的状态,前驱图,PV操做以及死锁的相关问题算法
2:存储管理:主要掌握段页式存储,局部性原理,页面置换算法缓存
3:文件管理:索引文件,位示图安全
4:做业管理:做业调度算法网络
5:设备管理:数据传输控制,虚设备与SPOOLING技术数据结构
1):中断:中断是指计算机运行过程当中,出现某些意外状况需主机干预时,机器能自动中止正在运行的程序并转入处理新状况的程序,处理完毕后又返回原被暂停的程序继续运行。在如今的多任务操做系统中,cpu却只能是单任务的,这是就必须用到中断进行进程调度。多线程
2):进程:进程是一个具备独立功能的程序关于某个数据集合的一次运行活动。它能够申请和拥有系统资源,是一个动态的概念,是一个活动的实体。并发
3):做业:做业是用户向计算机提交的相关任务的集合,区别于进程,进程则是具体完成用户任务的运行实体,分配计算机资源的基本单位。异步
4):进程控制块(PCB):进程控制块(PCB)是系统为了管理进程设置的一个专门的数据结构。系统用它来记录进程的外部特征,描述进程的运动变化过程。同时,系统能够利用PCB来控制和管理进程,因此说,PCB(进程控制块)是系统感知进程存在的惟一标志。
进程是一个动态的实体,从建立到消亡,进程通常有三种状态,但也有的有五态
+运行状态(Running):一个进程正在处理机上运行,
+就绪状态(Ready):进程已经得到了除cpu之外的全部其余资源,在就绪队列中等待cpu调度
+阻塞状态:进程因等待所须要的资源或I/O完成而放弃处理机,或则进程原本就不拥有处理机,且其余资源也不知足
进程挂起
挂起(等待,阻塞)进程在操做系统中能够定义为暂时被淘汰出内存的进程,机器的资源是有限的,在资源不足的状况下,操做系统对在内存中的程序进行合理的安排,其中有的进程被暂时调离出内存,当条件容许的时候,会被操做系统再次调回内存,从新进入就绪态
按照必定的策略选择一个处于就绪状态的进程使其得到处理机的执行。常见的调度算法有:
(1)先来先服务调度算法(FCFS , First Come First Served)
特色:适合长做业,不利于段做业;适合CPU繁忙型做业,不利于I/O繁忙型做业。
(2)短做业优先(SJF, Shortest Job First)
特色:提升了系统吞吐量;对长做业不利,有可能长时间得不到执行。
(3)短进程优先调度算法(SPF):
(3)优先级调度(HPF , Highest Priority First)
特色:进程调度每次将处理机分配给具备最高优先级的就绪进程。最高优先级算法可与不一样的CPU方式结合造成“可抢占式”最高优先级算法和“不可抢占式”最高优先级算法。经常使用于批处理系统。
(4)最高响应比优先(HRN,Highest Response_ratio Next)
特色:HRN是对FCFS方式和SJF方式的一种综合平衡。
响应比R=(W + T)/ T . 其中W为等待时间,T为须要执行时间。
(5)时间片轮转算法(RR,Round Robin)
特色:时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法。将CPU的处理时间划分红一个个的时间片,就绪队列中的进程轮流运行一个时间片。当时间片结束时,就强迫进程让出CPU,该进程进入就绪队列,等待下一次调度,同时,进程调度又去选择就绪队列中的一个进程,分配给它一个时间片,以投入运行。
(6)最短剩余时间优先调度算法:
(7)多级队列轮转算法:几种调度算法的结合形式多级队列方式。
(7)多级反馈队列调度算法:
进程由于协同实现用户任务或则要共享计算机资源,在进程之间存在着相互制约的关系。
(1)同步关系:咱们把异步环境下的一组并发进程因直接制约而互相发送消息、进行互相合做、互相等待,使得各进程按必定的速度执行的过程称为进程间的同步。具备同步关系的一组并发进程称为合做进程,合做进程间互相发送的信号称为消息或事件。
(2)互斥关系:两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,不然可能发生与时间有关的错误,这种现象被称做进程互斥· 也就是说,一个进程正在访问临界资源,另外一个要访问该资源的进程必须等待。
(3)解决同步互斥问题——信号量机制:信号量就好像信号灯,若是一个资源最多容许三个进程同时访问,这时信号量初值设为三,当有一个进程获取了该资源,进行P操做,信号量减一,这个进程完成后释放该资源,进行V操做,信号量加一,若是当另外一个进程获取该资源时,信号量小于零,则进入等待状态。
(4)管程:互斥使用
互斥锁:
提供对临界资源的保护,当多线程试图访问临界资源时,都必须经过获取锁的方式来访问临界资源。(临界资源:是被多线程共享的资源)
条件变量:
提供线程之间的一种通知机制,当某一条件知足时,线程A能够通知阻塞在条件变量上的线程B,B所指望的条件已经知足,能够解除在条件变量上的阻塞操做,继续作其余事情。
信号量:
提供对临界资源的安全分配。若是存在多份临界资源,在多个线程争抢临界资源的状况下,向线程提供安全分配临界资源的方法。若是临界资源的数量为1,将退化为锁。
令牌:
一种高级的线程同步的方法。它既提供锁的安全访问临界资源的功能,又利用了条件变量使得线程争夺临界资源时是有序的
生产者与消费者问题:
这个问题写在这可能写不完,因此不写了,简单来讲就是想获得就P,不用了就V
前趋图:
因为须要限制不一样的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级 – 用户态 和内核态。
处于用户态执行中的进程,其所能访问的内存空间和对象受到限制,其所处于占有的处理机是可被抢占的;
处于核心态执行中的进程,其能访问全部的内存空间和对象,且所占有的处理机是不容许被抢占的。
死锁指的是多个进程因竞争资源而形成的一种僵局(互相等待),若无外力做用,这些进程都将没法向前推动。
必要条件:
处理死锁的四种方式:
银行家算法
基本思想:分配资源以前,判断系统是不是安全的;如果,才分配。每分配一次资源就测试一次是否安全。
咱们能够把操做系统看做是银行家,操做系统管理的资源至关于银行家管理的资金,进程向操做系统请求分配资源至关于用户向银行家贷款。
为保证资金的安全,银行家规定:
(1)当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客(试探性分配)。
(2)顾客能够分期贷款,但贷款的总数不能超过最大需求量(可能一次并不能知足所须要的所有资源)。
(3)当银行家现有的资金不能知足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里获得贷款(不存在死锁)。
(4)当顾客获得所需的所有资金后,必定能在有限的时间里归还全部的资金(运行后释放)。
本算法在理论上是出色的,能很是有效地避免死锁,但从某种意义上说,它缺少实用价值,由于不多有进程可以在运行前就知道其所需资源的最大值,且进程数也不是固定的,每每在不断地变化(如新用户登陆或退出),何况原来可用的资源也可能忽然间变成不可用(如打印机、磁带机可能被损坏)。