1概念
1.1操作系统
1.1.1操作系统定义
操作系统是一组计算机程序的集合,主要用于控制和管理计算机的硬件和软件资源,合理地组织计算机的工作流程,为用户提供方便、快捷、友好的应用程序使用接口。
1.1.2操作系统概念?
功能
-
进程管理 进程管理的任务是保证CPU正确地同时运行多到程序 多道程序同时运行是现代操作系统最重要、最本质的特征
-
存储管理 存储管理的主要任务是管理内存资源
-
设备管理 设备管理的基本任务是管理输入输出(I/O)设备,使多个用户能够共享设备,方便地使用设备
-
文件管理 文件管理的任务就是对文件进行组织、管理,向文件用户提供对文件按名进行存储、检索、查询、保护的接口
-
网络通信与服务
-
安全与保护
1.1.3操作系统发展阶段
-
手工操作阶段
-
早期批处理阶段:
早期联机批处理
早期脱机批处理
-
多道批处理系统阶段
多道程序设计
多道批处理设计
1.1.4操作系统特征级其联系
并发性
并发性使两个或多个事件在同一时间间隔内发生的、同时处于活跃状态的特性
共享性
所谓共享,主要指资源共享。内存中并发执行的多个程序可以共享计算机的硬件个软件资源。实现资源共享是多道程序系统的自然要求。
两种共享方式:互斥共享方式、交替共享方式
虚拟性
虚拟性是指将一个物理实体映射为一个或多个逻辑对象。
随机性(异步性)
随机性也叫异步性,指的是每道程序在何时执行、各个程序执行的顺序以及每道程序所需要的事件都是不确定的,也是不可预知的。
关联
操作系统的四个特性并不是独立存在的,二时相互交融在一起的。并发性和共享性是操作系统的两个最基本的特征,两者相互依存。一方面共享性以并发性为条件,若系统不允许程序并发执行,自然也不存在资源共享的问题;另一方面,若没有共享性,系统不能对资源实施有效管理,也会影响到程序并发执行的程度,甚至根本无法做到并发。虚拟性扩充了物理资源的数量和功能,可以帮助实现更大程度的共享和并发。由于共享和并发的存在,使得多道程序相互竞争使用各类有限的物理资源。正式由于这种竞争带来了操作系统环境的随机性和程序执行的异步性。
1.1.5操作系统分类
-
批处理操作系统
-
分时操作系统
-
实时操作系统
-
嵌入式操作系统
-
个人操作系统
-
网络操作系统
-
分布式操作系统
1.2进程调度
1.2.1进程的概念
进程就是正在运行的程序及其占用的系统资源,如CPU(寄存器)、内存、I/O等资源。
进程是资源分配和处理器调度的基本单位,是操作系统中最为活跃的因素,也是操作系统并发性、共享性、虚拟性和异步性的集中体现。
进程的特征:
-
结构性:进程包含程序级其相关数据结构。
-
动态性:进程是在数据集合上的一次执行过程,具有生命周期,由创建而产生,由调度而运行,由结束而消亡,是一个动态推进、不断变化的过程。
-
独立性:进程是操作系统资源分配、保护和调度的基本单位,每个进程都有其自己的的运行数据集,以各自独立的、不可预知的进度异步运行。但进程的运行环境不是封闭的,进程间也可以通过操作系统进行数据共享、通信。
-
并发性:在同一段时间内,若干个进程可以共享一个CPU。
1.2.2线程的概念
在引入线程的操作系统中,线程是调度和分配的基本单位,进程是拥有资源的基本单位。一般地说,线程自己不拥有系统资源(只有一些必不可少的资源),但可以访问、共享其隶属进程的资源——进程的代码段、数据段、打开的文件以及I/O设备等。
引入目的:提高系统内程序并发执行的速度,减少系统开销,从而进一步提高操作系统的吞吐量。
1.2.3程序的概念
程序的执行是指将二进制代码文件(如*.exe等)装入内存,由CPU按程序逻辑运行指令的过程。程序的执行方式包括顺序和并发两种方式。
程序的顺序执行:
一个具独立功能的程序独占处理器直至最终结束的过程称为程序的顺序执行。(系统任意时刻只有一个程序被载入内存,占用CPU等资源运行,一个程序执行完毕了才能执行下一个程序)不仅是程序内部程序的顺序执行。(便于程序的编制与调试,不利于充分利用计算机系统资源,运行效率低下)
顺序执行的特征:顺序性、封闭性、可再现性
程序的并发执行与并行执行:
并发性是指在一段时间内系统中宏观上有多个程序在同时运行,但在单CPU系统中,每一时刻却仅能由一道程序执行,故微观上这些程序只能是分时地交替运行。如果计算机系统中有多个CPU,则这些可以并发执行地程序便可以被分配到多个CPU上,实现并行执行,即利用每个CPU来处理一个可并发执行地程序,这样,多个程序便可以真正地同时执行。
并发地本质是一个CPU在多个程序运行过程中地分时复用,并发对有限地系统资源实现多用户共享,消除计算机软硬件之间地互相等待现象,以提高系统资源利用率。
并发执行地特征:间断性、开放/交互性、不可再现性
1.2.4进程与程序与线程的区别与联系
程序,特指代码文件,强调其静态性。(其代码可以是二进制机器指令,也可以是高级语言)
进程是可并发执行地程序在某个数据集合上地一次执行过程,是操作系统资源分配、保护和调度的基本单位。(其概念的理解侧重于进程是已装入内存中运行的程序及其相关的数据结构)
作业一般是指批处理系统要装入系统运行处理的一系列程序和数据,一般由相应的作业控制语言来描述作业步骤、参数等执行细节。
1.2.5进程状态(三态模型)
进程的三种基本状态:就绪状态、运行状态、阻塞状态
就绪状态
进程中在内存中已经具备执行的条件,等待分配CPU。一旦被分配CPU,进程立刻执行。一个进程在创建后处于就绪状态。如果一个系统由多个进程都处于就绪状态,这些处于就绪状态的进程以队列方式进行组织,称为就绪队列。
运行状态
进程占用CPU并正在执行。在单CPU系统中,任何一个时刻只有一个进程处于运行状态。
阻塞状态
也成为等待状态。当正在运行的进程由于发生某事件,如请求并等待输入输出过程的完成、等待进程通信之间的进程到来或进程同步之间的进程到来等,而受到阻塞不能继续执行时,便需要放弃CPU,从运行状态转换到阻塞状态。如果一个系统中有多个进程都处于阻塞状态,这些进程被组织成队列形式,称为阻塞队列。
1.2.6进程状态的转换
-
就绪状态--->运行状态:当CPU空闲时,操作系统从就绪队列中选中一个就绪进程并分配CPU,此时,该进程的状态便从就绪状态转换到运行状态。
-
运行状态--->阻塞状态:当正在运行的进程需要等待某些事件(如I/O请求响应)的发生时,其状态从运行状态转换为阻塞状态。
-
阻塞状态--->就绪状态:处于阻塞状态的进程,由于等待的事件到来而不需要再等待时,进程状态便从阻塞状态转换到就绪状态。(需要注意的是,即便阻塞的进程所等待的事件完成,运行条件满足,该进程也不会立即获得CPU运行,仍需要按部就班地先转换为就绪状态,进入就绪队列,再被操作系统调度。
-
运行状态--->就绪状态:正在运行地进程被操作系统中断执行(如分配地时间片用完,或优先级更高的进程进入就绪队列),该进程状态从运行状态转换到就绪状态,等待被再次调度。
1.2.7进程调度
进程调度的功能就是按一定策略动态地把CPU分配给处于就绪队列中的某一进程执行。
两种基本的进程调度方式:
抢占方式——剥夺式调度
剥夺原则有优先权原则、短进程优先原则、时间片原则。就绪队列中一旦出现符合上述原则的进程,系统便立即剥夺当前运行进行进程的CPU使用权,进行进程切换。
非剥夺式调度中,一旦CPU分配给某进程,即使就绪队列中出现了优先级比它高的进程,系统也不能抢占运行进程的CPU使用权,而必须等待进程主动让出。
可能引发调度的时机
-
正在运行的进程运行完毕
-
运行中的进程要求I/O操作
-
执行某种原语操作(如P操作)导致进程阻塞
-
比正在运行中的进程优先级更高的进程进入就绪队列
-
分配给运行进程的时间片已经用完
1.2.8临界区、临界资源
系统中同时存在多个进程,共享各种资源,然而某些资源在某一时刻只能允许一个进程使用,如果多个进程去使用这类资源就会造成混乱。这类在某段时间内只允许一个进程使用的资源称为临界资源。访问临界资源的代码段称为临界区。
1.2.9临界区调度原则
几个进程若共享同一临界资源,它们必须以互斥的方式使用这个临界资源
临界区调度原则:
-
一次至多一个进程能够进入临界区内执行
-
如果已有进程在临界区,其他试图进入的进程应该等待
-
进入临界区内的进程应在有限时间内退出,以便让等待进程中的一个进入
1.2.10死锁条件
死锁主要原因:并发进程对临界资源的竞争、并发进程推荐顺序不当
死锁产生的必要条件:
-
互斥条件——资源的使用是互斥的。每个资源要么分配给进程,要么能够提供给进程。
-
请求与保持条件——一个进程得到资源并再请求资源时,若请求的资源不能得到,已得到的资源也不会释放。
-
不剥夺条件——当进程得到资源后,只能由其自身主动释放。系统或其他进程不能剥夺进程已获得的资源。
-
环路等待条件——系统中若干进程形成环路,每个进程都在等待相邻进程正占用的资源,形成永远等待。
1.2.11死锁破坏
-
破坏第一个条件(互斥条件):使资源可同时访问而不是互斥使用,受资源本身特性限制,此法可行性较差
-
破坏第二个条件(请求与保持条件):进程必须获得所需要的所有资源才能运行——静态分配,此法会严重降低资源利用效率
-
破坏第三个条件(不剥夺条件):采用剥夺式调度方法——申请新资源前先释放已占用资源,申请不到新资源则释放已占用资源,此法只适用于CPU和内存
-
破坏第四个条件(环路等待条件):采用层次分配策略——资源被分成多个层次,当进程得到某一层的一个资源后,它只能再申请较高层次的资源;要释放某层的一个资源时,必须先释放占有的较高层次的资源;当进程得到某层的一个资源后,它想申请同层的另一个资源时,必须先释放该层已占资源。(层次分配策略的一个变种时按序分配策略:把系统的所有资源拍一个序列,例如,系统共有n进程,共有m个资源(R1,R2...Rm),规定进程不得再占用资源Rj后再申请Ri(1 <= i < j <= m).显然,按这种策略分配资源时系统不会发生死锁。)
上述死锁防止办法都会造成系统资源利用率和他吞吐率降低
1.2.12死锁的避免(银行家算法)
死锁避免法时通过资源分配算法分析系统是否存在一个并发进程的状态序列,在确定不会出现进程循环等待的情况下,才将资源真正分配给进程,以保证并发进程不会发生死锁。
银行家算法下,系统为进程提出以下约束条件:
-
每个进程必须先声明其资源需求。
-
每个进程每次提出部分子资源申请并获得分配。
-
进程获得所需资源,执行完毕后,必须及时将所占资源归还系统。
在进程保证遵守上述约束条件的基础上,系统将保证以下两点:
-
如果一个进程所请求最大资源数不超过系统所有的资源总数,则系统一定分配资源给进程;
-
如果系统在收到进程的请求时因资源不足而使进程等待,系统会保证在有限的时间内使进程获得资源。
银行家算法思路:
-
在某一时刻,各进程已获得做需要的全部资源。有一进程提出新的资源请求,系统将剩余资源试探性地分配给该进程。
-
如果此时剩余资源能够满足余下地某些进程地需求,则将剩余资源分配给能够充分满足的、资源需求缺口最大的进程,运行结束后释放的资源再并入系统的剩余资源集合。
-
反复执行(2),直到所有的进程都能够获得所需而运行结束,说明第一步的进程请求是可行的,系统处于安全状态,相应的进程执行序列称为系统的安全序列。如果所有的进程都试探过而不能将资源分配给进程,即不存在安全序列,则系统是不安全的。
1.3内存管理
1.3.1分页分段的概念与区别
段是信息的逻辑单位,由源程序的逻辑结构决定,用户可见,段长可根据用户需要来规定,段起始地址可以从任何地址开始。在分段方式中,源程序(段号,段内偏移)经连接装配后仍保持二维结构。
页是信息的物理单位,与源程序的逻辑结构无关,用户不可见,页长由系统决定,页面只能以页大小的整倍数地址开始。在分页方式中,源程序(页号,页内偏移)经连接装配后变成一维结构。
页式存储基于存储器的物理结构,存储利用率高,便于管理,但难以实现存储共享,保护和动态扩充;段式存储基于应用程序的结构,有利于模块化程序设计,便于段的扩充、动态链接、共享和保护,但往往会形成段之间的碎片,浪费存储空间。
区别归纳:
1、页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。
段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。
2、页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。
段的长度却不固定,决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时,根据信息的性质来划分。
3、分页的作业地址空间是维一的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。
分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。
1.3.2请求分页的策略
-
页面分配策略
分配策略决定系统应该给一个进程分配多少给物理块,进程才能运行
-
页面调入策略
页面调入策略决定如何将进程所需要的页面调入内存
-
页面置换策略
页面置换策略决定内存中的哪些页面被换出内存
1.3.3缺页率的影响以及影响缺页率的因素
影响缺页率的因素
-
进程分得的内存物理块数越多,缺页率越低
-
划分的页面越大,缺页率越低
-
程序局部性还,则缺页率低
-
如果选取的置换算法优,则缺页率低
缺页率对性能的影响
有效访问时间直接正比于缺页率
有效访问时间的计算:
vt:有效访问时间 p:缺页率 ma:内存访问一个页面的时间 st:缺页处理时间
缺页不止使得缺页进程本身的运行缓慢,还会使整个系统的运行效率降低,系统性能下降。
1.4设备管理
1.4.1设备的分配策略
按照设备本身使用属性,设备分为独占设备、共享设备和虚拟设备,相应的设备分配策略就称为独占方式、共享方式和虚拟方式。
-
独占方式:把一台设备固定地分配给一个用户或进程,直到它运行结束。这种方式对独占用户来说是方便的,管理简单,但往往造成资源浪费,因为用户程序或进程运行过程中不会自始至终使用像打印机这类设备。
-
共享方式:设备可以被多个用固话(或进程)”交替“使用,即一个进程需要时,便申请它,获得后使用它,用完释放它。其他进程也如此使用。磁盘、磁带就是可以用共享方式分配、使用的设备。
-
虚拟方式:利用快速、共享设备(如磁盘)把慢速、独占设备模拟成为同类物理设备。此种方式提高了独占设备的利用率,提高了进程并行程度。
1.4.2设备控制/设备管理/IO管理方式
设备管理的目标
-
提高使用效率。尽管计算机外设本身的工作速度在逐步提高,但与CPU相比仍太慢。为了减少两者之间过大的速度差异带来的使用效率问题,通常需要采取一定的措施对设备合理地分配和使用。
-
提高便捷的界面。所谓便捷,一方面指用户能独立于具体设备的复杂物理特性而方便地使用设备,另一方面是指对多种不同设备尽量有统一的操作方式。
设备管理的功能
-
设备的分配与回收
-
缓冲区管理
-
设备控制和中断处理
-
实现虚拟设备
设备管理的结构
设备管理的结构描述了设备、设备控制器、设备驱动程序与应用之间的逻辑关系。
设备控制方法
-
程序循环查询方式:
对CPU造成极大的浪费,但控制简单,在CPU速度慢、要求不高的场合下常被采用
-
中断方式:1) 消除了CPU轮询方式中的忙等待测试,很大程度上提高了CPU的利用率,但并没有把CPU从数据传输(设备和主存储器)中解脱出来
-
直接访问内存方式(DMA):较之中断方式减少了CPU对I/O的干预,进一步提高了CPU与I/O设备的并行操作程度
-
通道方式:是DMA方式的发展,进一步减少CPU对I/O的干预。主要差别在于中央处理器和外围设备并行工作的方式不同,并行工作的程度不同。
1.4.3假脱机(SPOOLing技术)
含义
当系统中引入了多道程序技术后,可以利用其中一道程序,来模拟脱机输入输出时的外围控制机功能,把低速I/O设备上的数据传送到高速磁盘上,或者把数据从磁盘传送到低速输出设备上。这样便可在主机的直接控制下,实现脱机输入输出功能。此时的外围操作与CPU对数据的处理同时运行,这种在联机情况下实现的同时外围操作称为SPOOLing,或者称为假脱机系统。
(用一类物理设备模拟另一类物理设备的技术,从而把独占型设备变成共享设备的技术。)
具体实现
-
系统在磁盘上开辟“输入井”和“输出井”:缓冲的区域,用于调节供求矛盾
-
组成:预输入程序(将信息从输入设备送至“输入井”);缓输出程序(将信息从磁盘输出缓冲区送至输出设备);井管理程序
-
有的操作系统用守护进程,有的用核心态线程,但操作系统都向用户提供:显示spooling队列,删除一个任务,挂起一个任务等服务
1.5文件系统
1.5.1文件物理结构、逻辑结构的概念、区别?、联系
逻辑结构的含义:从用户的观点出发观察到的文件组织形式,用户可以直接处理,独立于文件的物理特性
分类:流式文件和记录式文件(顺序文件,索引文件,索引顺序文件)
文件物理结构的含义:文件在物理存储空间中存放方法和组织关系,又称文件的存储结构
分类:连续文件,链接文件,索引文件,多级索引文件,直接文件
1.5.2文件的分区方式与其物理结构的的联系
文件的物理结构直接与外存的组织方式有关,不同的外村分配方式,将形成不同的文件物理结构,文件有如下三种外村分配方式,同时对应了三种文件的物理存储结构。
连续组织方式————顺序式文件结构
链接组织方式————链接式文件结构
索引组织结构————索引式文件结构
1.5.3文件、文件目录、目录文件的概念、区别、联系
为了加快文件的查找速度,通常把FCB集中起来进行管理,文件控制块的有序集合称为文件目录,即一个文件控制块就是一个文件目录项。
文件目录也是以文件的形式保存在外存上的,这就形成了目录文件。
因此,文件目录的目录项有两种,一种是用于描述子目录(即目录文件)的FCB,一种是普通文件的FCB。
目录文件与普通文件不同之处:
目录文件永远不会空,它至少包含两个目录项
当前目录项“.”
父目录项“..”
目录文件的组织是指目录项的设计和FCB的存储组织方法。
1.6其他
1.6.1缓冲技术的原理、作用、定义
定义:缓冲有硬件缓冲和软件缓冲之分。硬件缓冲是以专用的寄存器作为缓冲器。软缓冲即在操作系统的管理下,在内存中划出若干个单元作为缓冲区
作用:
-
它能改善中央处理器与外围设备之间速度不匹配的矛盾,提高CPU 和I/O 设备的并行性。
-
它能减少I/O 对CPU 的中断次数和放宽对CPU 中断响应时间的要求。
-
缓冲技术还能协调逻辑记录大小与物理记录大小不一致的问题。
1.6.2缓冲区的概念
缓冲区:有一定容量、暂存信息的存贮装置。
1.6.3单缓冲、双缓冲、多缓冲
-
单缓冲:单缓冲指当一个进程发出I/O请求时,操作系统便在主存中为之分配一个缓冲去,用来临时存放输入输出数据。它是操作系统提供的一种简单的缓冲形式。
-
-
双缓冲:双缓冲是指在操作系统中为某一设备设置两个缓冲区,当一个缓冲区中的数据尚未被处理时可使用另一个缓冲区存放从设备读入或读出的数据,以此来进一步提高CPU和外设的并行程度。
-
多缓冲:为了改善输入、输出设备和处理器进程速度不匹配的现象,获得较高的并行度
-
循环缓冲:每个缓冲区有一个链接指针指向下一个缓冲区,最后一个缓冲区指针指向第一个缓冲区,组成了循环缓冲。
-
缓冲池:缓冲区由内存中的一组缓冲区构成,各缓冲区之间并不一定采用循环链表的方式进行链接,而是操作系统与用户进程将轮流地使用各个缓冲区,以改善系统性能。
-
-