编辑:147小编 来源:147小编
操纵系统(Operation System),简称OS,是管理计算机『硬件』与『软件』资源的计算机步伐。是一种『系统软件』
与硬件交互对资源共享进行调度管理解决并发操纵处置惩罚中存在的协调问题数据结构复杂,外部接口多样化,
便于用户反复使用作为『系统软件』, OS做了哪些事?
管理与配置内存决定系统资源供需的优先序次控制输入设备与输出设备操纵网络与管理文件系统等基本领务提供一个让用户与系统交互的操纵界面OS 的功能
OS作为计算机系统资源的管理者处置惩罚机管理:进程控制、进程同步、进程通信、调度存储器管理:内存分配、内存保护、地址映射、内存扩充I/O设备管理:缓冲管理、设备分配、设备处置惩罚文件管理:文件存储空间的管理、目录管理、文件的读/写管理和掩护OS作为用户与计算机『硬件系统』之间的接口步伐接口命令接口GUI(Graphical User Interface),图形用户接口OS实现了对计算机资源的抽象将具体的计算机硬件资源抽象成软件资源,方便用户使用和扩展开放了简单的访问方式,隐藏了实现细节几个基本概念
内核步伐 <- - -> 应用步伐核心态 <- - -> 用户态特权指令 <- - -> 非特权指令进程(Process),是一个具有一定独立功能的步伐关于某个数据集合的一次运行活动,是系统进行『资源分配和调度』的一个独立单元。
几个要点
进程是『步伐』的『一次执行』an instance of a computer program that is being executed进程是一个步伐及其数据在处置惩罚机上顺序执行时所发生的『活动』 进程是步伐在一个『数据集合』上运行的过程进程是系统进行『资源分配和调度』的一个『独立』单元(或者说基本单位)进程的结构:控制块(PCB)、数据段、步伐段
进程的特征:
动态性:由创建而生,由打消而亡并发性:多个进程同时运行独立性:独立资源分配异步性:相互独立、互不干扰什么是线程?
Thread,进程的轻型实体,也叫“轻量级进程”,是一系列活动按事先设定好的顺序依次执行的过程,是一系列指令的集合是一条执行路径,不能单独存在,必须包罗在进程中线程是OS中运算调度的最小单元为什么引入线程?提高OS的并发性
线程的属性
轻型实体独立调度和分派的基本单元可并发执行共享进程资源进程与线程比力
调度拥有资源并发性系统开销地址空间和其它资源通信重点:线程相对于进程,大大降低了创建、打消和切换可执行实体的本钱和难度。
线程的实现方式
用户级线程(ULT)User Level Thread内核级线程(KLT)Kernel Level Thread进程的状态
三种基本状态就绪(Ready)执行(Running)阻塞(Blocked)进程控制:即OS对进程实现有效的管理,包罗创建新进程、打消已有进程、挂起、阻塞和唤醒、进程切换等多种操纵。OS通过原语(Primitive)操纵实现进程控制。
原语的概念:由若干条指令组成,完成特定的功能,是一种原子操纵(Action Operation)
原语的特点:
原子操纵,要么全做,要么全不做,执行过程不会被中断在管态/系统态/内核态下执行,常驻内存是内核三大支撑功能(中断处置惩罚/时钟管理/原语操纵)之一原语:
创建原语:create阻塞原语:block唤醒原语:wakeup打消原语:destroy挂起原语: suspend静止就绪:放外存,不调度静止阻塞:等候事件激活原语:active活动就绪:等候调度活动阻塞:等候唤醒处置惩罚机调度:根据一定的算法和原则将处置惩罚机资源进行重新分配的过程。
前提:作业/进程数远远大于处置惩罚机数目的:提高资源利用率,减少处置惩罚机空闲时间调度步伐:一方面要满足特定系统用户的需求(快速响应),另一方面要考虑系统整体效率(系统平均周转时间)和调度算法自己的开销调度的条理
高级调度/作业调度把后备作业调入内存只调入一次,调出一次调度方式
剥夺式/抢占式调度:立即暂停当前进程,分配处置惩罚机给另一个进程,原则:优先权/短进程优先/时间片原则非剥夺/非抢占式调度:若有进程请求执行,等候直到当前进程完成或阻塞,缺点:适用于批处置惩罚系统,不适用分时/实时系统调度时机
进程运行完毕进程时间片用完进程要求I/O操纵执行某种原语操纵高优先级进程申请运行(剥夺式调度)调度过程
生存镜像:记录进程现场信息调度算法:确定分配处置惩罚机的原则进程切换:分配处置惩罚机给其它进程处置惩罚机回收:从进程收回处置惩罚机调度算法指标
CPU利用率↑忙碌时间/总时间系统吞吐量↑完成作业数/总时间周转时间↓作业完成时间-提交时间带权周转时间:周转时间/实际运行时间等候时间↓作业等候处置惩罚机调度时间关注平均值响应时间↓提交请求到首次响应间隔调度算法
先来先服务(FCFS,First Come First Served)
算法内容:调度作业/就绪队列中最先入队者,等候操纵完成或阻塞算法原则:按作业/进程到达顺序服务(执行)调度方式:非抢占式调度适用场景:作业/进程调度优缺点:有利于CPU繁忙型作业,充实利用CPU资源倒霉于I/O繁忙型作业,操纵耗时,其它饥饿短作业优先(SJF,Shortest Job First )
算法内容:所需服务时间最短的作业/进程优先服务(执行)算法原则:追求最少的平均(带权)周转时间调度方式:SJF/SPF非抢占式适用场景:作业/进程调度优缺点:平均等候/周转时间最少长作业周转时间会增加或饥饿估计时间禁绝确,不能包管紧迫任务及时处置惩罚高响应比优先调度(HRRN,Highest Response Ratio Next)
算法内容:结合FCFS和SJF,综合考虑等候时间和服务时间计算响应比,高的优先调度算法原则:综合考虑作业/进程的等候时间和服务时间调度方式:非抢占式适用场景:作业/进程调度响应比计算:响应比=(等候时间+服务时间)/服务时间, ≥1只有当前进程放弃执行权(完成/阻塞)时,重新计算所有进程响应比长作业等候越久响应比越高,更容易获得处置惩罚机、优先级调度(PSA,Priority-Scheduling Algorithm)
算法内容:又叫优先权调度,按作业/进程的优先级(紧迫水平)进行调度算法原则:优先级最高(最紧迫)的作业/进程先调度调度方式:抢占/非抢占式(并不能获得及时执行)适用场景:作业/进程调度优先级设置原则:静态/动态优先级系统>用户;交互型>非交互型;I/O型>计算型低优先级进程可能会产生“饥饿”时间片轮转调度(RR,Round-Robin)
算法内容:按进程到达就绪队列的顺序,轮流分配一个时间片去执行,时间用完则剥夺算法原则:公平、轮流为每个进程服务,进程在一定时间内都能得到响应调度方式:抢占式,由时钟中断确定时间到适用场景:进程调度优缺点:公平,响应快,适用于分时系统时间片决定因素:系统响应时间、就绪队列进程数量、系统处置惩罚能力时间片太大,相当于FCFS;太小,处置惩罚机切换频繁,开销增大多级反馈队列调度(MFQ,Multileveled Feedback Queue)
算法内容:设置多个按优先级排序的就绪队列,优先级从高到底,时间片从小到大,新进程接纳队列降级法
进入第一级队列,按FCFS分时间片没有执行完,移到第二级,第三级。。。前面队列不为空,不执行后续队列进程
进程通信
概念:进程通信即进程间的信息交换进程是资源分配的基本单元,各进程内存空间相互独立一个进程不能随意访问其它进程的地址空间特点:共享存储(Shared-Memory)消息通报(Message-Passing)管道通信(Pipe)共享存储(Shared-Memory)
基于共享数据结构的通信方式多个进程共用某个数据结构(OS提供并控制)由用户(步伐员)负责同步处置惩罚级通信:可以通报少量数据,效率低基于共享存储区的通信方式多个进程共用内存中的一块存储区域由进程控制数据的形式和方式方式高级通信:可以通报大量数据,效率高消息通报(Message-Passing)
直接通信:点到点发送发送和接收时指明双方进程的ID每个进程维护一个消息缓冲队列间接通信:广播信箱以信箱为媒介,作为中间实体发进程将消息发送到信箱,收进程从信箱读取可以广播,容易建立双向通信链管道通信(Pipe)
管道用于连接读/写进程的共享文件,pipe文件本质是内存中固定巨细的缓冲区半双工通信同一时段只能单向通信,双工通信需要两个管道以先进先出(FIFO)方式组织数据传输通过系统调用read()/write()函数进行读写操纵进程同步
协调进程间的相互制约关系,使它们根据预期的方式执行的过程
前提进程是并发执行的,进程间存在着相互制约关系并发的进程对系统共享资源进行竞争进程通信,过程中相互发送的信号称为消息或事件两种相互制约形式间接相互制约关系(互斥):进程排他性地访问共享资源直接相互制约关系(同步):进程间的合作,好比管道通信互斥的访问临界资源
访问过程
进入区:实验进入临界区,乐成则加锁(lock)临界区:访问共享资源退出区:解锁(unlock),唤醒其它阻塞进程剩余区:其它代码访问原则
空闲让进:临界区空闲,允许一个进程进入忙则等候:临界区已有进程,其它进程等候(阻塞状态)有限等候:处于等候的进程,等候时间有限让权等候:等候时应让出CPU执行权,防止“忙等候”软件实现方法
1、单标记法:违背“空闲让进”
2、双标记法先检查:违背“忙则等候”
3、双标记法后检查:违背“空闲让进”、“有限等候”
4、皮特森算法(Petersons Algorithm):违背“让权等候”,会发生“忙等”
硬件实现方法
1、中断屏蔽方法:关中断/开中断
禁止一切中断,CPU执行完临界区之前不会切换关中断可能会被滥用关中断时间长影响效率不适用于多处置惩罚机,无法防止其它处理机调度其它进程访问临界区只适用于内核进程(该指令运行在内核态)2、Test-And-Set(TS指令/TSL指令)
读出标记并设置为true,返回旧值,原子操纵也被称作TSL指令( Test-And-Set-Lock )违背“让权等候”,会发生忙等3、Swap指令( EXCHANGE,XCHG指令)
交换两个变量的值,原子操纵违背“让权等候”信号量(Semaphore)机制
PV操纵:P操纵:wait原语,进程等候V操纵:signal原语,唤醒等候进程整型信号量:违背“让权等候”,会发生忙等u记录型信号量:进程进入阻塞状态,不会忙等管程(Monitor,监视器)
“管理进程”,即用于实现进程同步的工具。是由代表共享资源的数据结构和一组过程(进行PV操纵的函数)组成的管理步伐(封装)。
管程的组成
管程名称局部于管程内部的共享数据结构对该数据结构操纵的一组过程(函数)管程内共享数据的初始化语句管程的基本特性
是一个模块化的基本步伐单元,可以单独编译是一种抽象数据类型,包罗数据和操纵信息掩蔽,共享数据只能被管程内的过程访问条件变量/条件对象
进入管程的进程可能由于条件不满足而阻塞此时进程应释放管程以便其它进程调用管程进程被阻塞的条件(原因)有多个,移入差别的条件队列进程被移入条件队列后,应释放管程经典同步问题
生产者-消费者问题组生产者进程和一组消费者进程它们共享巨细为n的缓冲区未满可放,非空可读,否则阻塞每次只允许一个生产者/消费者放/读死锁定义:多个进程由于竞争资源而造成的阻塞现象,若无外力作用,这些进程将无法继续推进。
相似概念:饥饿。等候时间过长以至于给进程推进和响应带来明显影响,“饿而不死”
死锁产生的原因:统资源的竞争、进程推进顺序非法
死锁产生的须要条件
互斥条件:共享资源的排他性访问不剥夺条件:访问时该共享资源不会被剥夺请求并保持条件:保持当前资源时请求另一个资源循环等候条件:存在共享资源的循环等候链死锁预防
破坏互斥条件将只能互斥访问的资源改为同时共享访问将独占锁改为共享锁不是所有资源都能改成可共享的死锁制止
宁静性算法
系统宁静状态宁静状态一定不会出现死锁不宁静状态可能出现死锁银行家算法系统预判进程请求是否导致不宁静状态是则拒绝请求,否则允许请求死锁的检测
资源分配图(G=(N, E)):两种资源两种节点死锁定理(死锁状态的充实条件):当且仅当此状态下资源分配图是不可完全简化的简化过程类似于“拓扑排序”算法(注意数据结构考察)死锁的解除
资源剥夺挂起死锁进程剥夺其资源将资源分配给其它(死锁)进程打消进程进程回退回退到足以制止死锁的地步需要记录进程历史信息,设置还原点存储器的多层结构
进程的运行原理
用户步伐到进程:编译-链接-装入