网站如何更换域名,网站建设考试多选题,中国企业网址大全,国外建站工具一、计算机系统概述
1.1 操作系统的基本概念
1.1.1 操作系统的概念
操作系统#xff08;OperatinggSystem#xff0c;OS#xff09;是指控制和管理整个计算机系统的硬件与软件资源#xff0c;合理地组织、调度计算机的工作与资源的分配#xff0c;进而为用户和其他软件…一、计算机系统概述
1.1 操作系统的基本概念
1.1.1 操作系统的概念
操作系统OperatinggSystemOS是指控制和管理整个计算机系统的硬件与软件资源合理地组织、调度计算机的工作与资源的分配进而为用户和其他软件提供方便接口与环境的程序集合。操作系统是计算机系统中最基本的系统软件。
1.1.2 操作系统的特征 1.1.3 操作系统的目标和功能
作为系统资源的管理者 向上层提供方便易用的服务 作为最接近硬件的层次 1.2 操作系统的发展与分类
1.2.1 手工操作阶段此阶段无操作系统 1.2.2 批处理阶段操作系统开始出现
引入脱机输入/输出技术用磁带完成并监督程序负责控制作业的输入、输出。 1.2.3 分时操作系统
计算机以时间片为单位轮流为各个用户/作业服务各个用户可通过终端与计算机进行交互。
多个用户通过终端同时共享一台主机用户可以同时与主机进行交互操作而互不干扰。
同时性同时性也称多路性指允许多个终端用户同时使用一台计算机即一台计算机与若干台终端相连接终端上的这些用户可以同时或基本同时使用计算机。交互性用户能够方便地与系统进行人机对话即用户通过终端采用人机对话的方式直接控制程序运行与同程序进行交互。独立性系统中多个用户可以彼此独立地进行操作互不干扰单个用户感觉不到别人也在使用这台计算机好像只有自己单独使用这台计算机一样。及时性用户请求能在很短时间内获得响应。分时系统采用时间片轮转方式使一台计算机同时为多个终端服务使用户能够对系统的及时响应感到满意。优点 用户请求可以被即时响应解决了人机交互问题。允许多个用户同时使用一台计算机并且用户对计算机的操作相互独立感受不到别人的存在。缺点无法优先处理紧急任务
1.2.4 实时操作系统 1.2.5 网络操作系统和分布式计算机系统 1.2.6 个人计算机操作系统 1.3 操作系统的运行环境
1.3.1 操作系统的运行机制 1.3.2 中断和异常的概念 1.3.3 系统调用 1.4 操作系统结构 1.5 操作系统引导
激活CPU激活的CPU读取ROM中的boot程序将指令寄存器置为BIOS基本输入/输出系统的第一条指令即开始执行BIOS的指令。硬件自检BIOS程序在内存最开始的空间构建中断向量表接下来的POST过程要用到中断功能。然后进行通电自检检查硬件是否出现故障。如有故障主板会发出不同含义的蜂鸣启动中止如无故障屏幕会显示CPU、内存、硬盘等信息。加载带有操作系统的硬盘通电自检后BIOS开始读取BootSequence通过CMOS里保存的启动顺序或者通过与用户交互的方式将控制权交给启动顺序排在第一位的存储设备然后CPU将该存储设备引导扇区的内容加载到内存中。加载主引导记录MBR硬盘以特定的标识符区分引导硬盘和非引导硬盘。如果发现一个存储设备不是可引导盘就检查下一个存储设备。如无其他启动设备就会死机。主引导记录MBR的作用是告诉CPU去硬盘的哪个主分区去找操作系统。扫描硬盘分区表并加载硬盘活动分区MBR包含硬盘分区表硬盘分区表以特定的标识符区分活动分区和非活动分区。主引导记录扫描硬盘分区表进而识别含有操作系统的硬盘分区活动分区。找到硬盘活动分区后开始加载硬盘活动分区将控制权交给活动分区。加载分区引导记录PBR读取活动分区的第一个扇区这个扇区称为分区引导记录PBR其作用是寻找并激活分区根目录下用于引导操作系统的程序启动管理器。加载启动管理器分区引导记录搜索活动分区中的启动管理器加载启动管理器。加载操作系统将操作系统的初始化程序加载到内存中执行。
1.6 虚拟机
1.6.1 虚拟机的基本概念 1.7 本章疑难点
1、并行性与并发性的区别和联系 并行性和并发性是既相似又有区别的两个概念。并行性是指两个或多个事件在同一时刻发生并发性是指两个或多个事件在同一时间间隔内发生。 在多道程序环境下并发性是指在一段时间内宏观上有多个程序同时运行但在单处理器系统中每个时刻却仅能有一道程序执行因此微观上这些程序只能分时地交替执行。若在计算机系统中有多个处理器则这些可以并发执行的程序便被分配到多个处理器上实现并行执行即利用每个处理器来处理一个可并发执行的程序。 2、特权指令与非特权指令 特权指令是指有特殊权限的指令由于这类指令的权限最大使用不当将导致整个系统溃如清内存、置时钟、分配系统资源、修改虚存的段表或页表、修改用户的访问权限等。若所有程序都能使用这些指令则系统一天死机次就不足为奇。为保证系统安全这类指令不能直接提供给用户使用因此特权指令必须在核心态执行。实际上CPU在核心态下可以执行指令系统的全集。形象地说特权指令是那些儿童不宜的东西而非特权指令是老少皆宜的东西。 为了防止用户程序中使用特权指令用户态下只能使用非特权指令核心态下可以使用全部指令。在用户态下使用特权指令时将产生中断以阻止用户使用特权指令。所以将用户程序放在用户态下运行而操作系统中必须使用特权指令的那部分程序在核心态下运行从而保证了系统的安全性和可靠性。从用户态转换为核心态的唯一途径是中断或异常。 3、访管指令与访管中断 访管指令是一条可以在用户态下执行的指令。在用户程序中因要求操作系统提供服务而有意识地使用访管指令从而产生一个中断事件自愿中断将操作系统转换为核心态称为访管中断。访管中断由访管指令产生程序员使用访管指令向操作系统请求服务。 为什么要在程序中引入访管指令呢这是因为用户程序只能在用户态下运行。若用户程序想要完成在用户态下无法完成的工作该怎么办解决这个问题要靠访管指令。访管指令本身不是特权指令其基本功能是让程序拥有“自愿进管”的手段从而引起访管中断。 4、定义微内核结构OS的四个方面 足够小的内核。基于客户/服务器模式应用“机制与策略分离”原理。机制是指实现某一功能的具体执行机构。策略则是在机制的基础上借助于某些参数和算法来实现该功能的优化或达到不同的功能目标。在传统的OS中将机制放在OS内核的较低层中将策略放在内核的较高层中。而在微内核OS中通常将机制放在OS的微内核中。正因如此才可以将内核做得很小。采用面向对象技术。基于面向对象技术中的“抽象”和“隐蔽”原则能控制系统的复杂性进一步利用“对象”“封装”和“继承”等概念还能确保操作系统的正确性、可靠性、易扩展性等。正因如此面向对象技术被广泛应用于现代操作系统的设计之中。 二、进程与线程
2.1 进程与线程
2.1.1 进程的概念和特征
进程的概念 进程的特征 2.1.2 进程的组成 注PCB是操作系统用的而程序段和数据段都只是程序用的。 2.1.3 进程的状态与转换 进程的组织可能是一个被删掉的考点 2.1.4 进程控制 进程的创建进程的终止进程的阻塞和唤醒进程的切换
2.1.5 进程的通信 共享存储消息传递 直接通信方式间接通信方式管道通信
注一个管道允许多个写进程一个读进程。
2.1.6 线程和多线程模型 1、线程的基本概念 2、线程与进程的比较 3、线程的属性 4、线程的状态和转换 注就和进程一样一样滴。
5、线程的组织和控制
线程控制块与进程类似系统也为每个线程配置一个线程控制块TCB用于记录控制和管理线程的信息。同一进程中的所有线程都完全共享进程的地址空间和全局变量。各个线程都可以访问进程地址空间的每个单元所以一个线程可以读、写或甚至清除另一个线程的堆栈。线程控制块通常包括 线程标识符一组寄存器包括程序计数器、状态寄存器和通用寄存器线程运行状态用于描述线程正处于何种状态优先级线程专有存储区线程切换时用于保存现场等堆栈指针用于过程调用时保存局部变量及返回地址等。线程的创建线程也是具有生命期的它由创建而产生由调度而执行由终止而消亡。相应地在操作系统中就有用于创建线程和终止线程的函数或系统调用。用户程序启动时通常仅有一个称为初始化线程的线程正在执行其主要功能是用于创建新线程。在创建新线程时需要利用一个线程创建函数并提供相应的参数如指向线程主程序的入口指针、堆栈的大小、线程优先级等。线程创建函数执行完后将返回一个线程标识符。线程的终止当一个线程完成自己的任务后或线程在运行中出现异常而要被强制终止时由终止线程调用相应的函数执行终止操作。但是有些线程主要是系统线程一旦被建立便一直运行而不会被终止。通常线程被终止后并不立即释放它所占有的资源只有当进程中的其他线程执行了分离函数后被终止线程才与资源分离此时的资源才能被其他线程利用。终止但尚未释放资源的线程仍可被其他线程调用以使被终止线程重新恢复运行。
6、线程的实现方式 7、多线程模型 2.1.7 本节小结
1、为什么要引入进程 在多道程序设计的背景下进程之间需要共享系统资源因此会导致各程序在执行过程中出现相互制约的关系程序的执行会表现出间断性等特征。这些特征都是在程序的执行过程中发生的是动态的过程而传统的程序本身是一组指令的集合是静态的概念无法描述程序在内存中的执行情况即无法从程序的字面上看出它何时执行、何时停顿也无法看出它与其他执行程序的关系因此程序这个静态概念已不能如实反映程序并发执行过程的特征。为了深刻描述程序动态执行过程的性质乃至更好地支持和管理多道程序的并发执行便引入了进程的概念。 2、什么是进程进程由什么组成 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源是一个动态的概念是一个活动的实体。它不只是程序的代码本身还包括当前的活动通过程序计数器的值和处理寄存器的内容来表示。 一个进程实体由程序段、相关数据段和PCB三部分构成其中PCB是标志一个进程存在的唯一标识程序段是进程运行的程序的代码数据段则存储程序运行过程中相关的一些数据。 3、进程是如何解决问题的 进程将能够识别程序运行状态的一些变量存放在PCB中通过这些变量系统能够更好地了解进程的状况并在适当时机进行进程的切换以避免一些资源的浪费甚至划分为更小的调度单位一一线程来提高系统的并发度。 本节主要介绍什么是进程并围绕这个问题进行一些闸述和讨论为下一节讨论的内容做铺垫但之前未学过相关课程的读者可能会比较费解到现在为止对进程这个概念还未形成比较清晰的认识。接下来我们再用一个比较熟悉的概念来类比进程以便大家能彻底理解本节的内容到底在讲什么到底解决了什么问题。 我们用“人的生命历程”来类比进程。首先人的生命历程一定是一个动态的、过程性的概念要研究人的生命历程先要介绍经历这个历程的主体是什么。主体当然是人相当于经历进程的主体是进程映像人有自己的身份相当于进程映像里有PCB人生历程会经历好几种状态出生的时候、弥留的时候、充满斗志的时候、发奋图强的时候及失落的时候相当于进程有创建、撤销、就绪、运行、阻塞等状态这几种状态会发生改变人会充满斗志而转向发奋图强发奋图强获得进步之后又会充满斗志预备下一次发奋图强或者发奋图强后遇到阻碍会进入失落状态然后在别人的开导之下又重新充满斗志。类比进程会由就绪态转向运行态运行态转向就绪态或者运行态转向阻塞态然后在别的进程帮助下返回就绪态。若我们用“人生历程”这个过程的概念去类比进程则对进程的理解就更深一层。前面生活化的例子可以帮我们理解进程的实质但它毕竞有不严谨的地方。一种较好的方式是在类比进程和人生历程后再看一遍前面较为严谨的书面述和讨论这样对知识的掌握会更加准确而全面。 这里再给出一些学习计算机科学知识的建议。学习时很多同学会陷入一个误区即只注重对定理、公式的应用而忽视对基础概念的理解。这是我们从小到大应付考试而培养出的一个毛病因为熟练应用公式和定理对考试有立见影的效果。公式、定理的应用固然重要但基础概念的理解能让我们透彻地理解一门学科更利于我们产生兴趣培养创造性思维。
2.2 CPU调度
2.2.1 调度的概念 1、调度的基本概念 在多道程序系统中进程的数量往往多于CPU的个数因此进程争用CPU的情况在所难免。CPU调度是对CPU进行分配即从就绪队列中按照一定的算法公平、高效的原则选择一个进程并将CPU分配给它运行以实现进程并发地执行。 CPU调度是多道程序操作系统的基础是操作系统设计的核心问题。
2、调度的层次 3、三级调度的联系 2.2.2 调度的实现
1、调度程序调度器 2、调度的时机、切换和过程 3、进程调度的方式 4、闲逛进程 5、两种线程的调度
2.2.3 调度的目标 2.2.4 进程切换
2.2.5 典型的调度算法 1. 先来先服务FCFS算法 2. 短作业优先SJF算法 3. 高响应比优先调度算法 4. 优先级调度算法 5. 时间片轮转RR调度算法 6. 多级队列调度算法 7. 多级反馈队列调度算法融合了前几种算法的优点 2.2.6 本节小结
1、为什么要进行CPU调度 若没有CPU调度则意味着要等到当前运行的进程执行完毕后下一个进程才能执行而实际情况中进程时常需要等待一些外部设备的输入而外部设备的速度与CPU相比是非常缓慢的若让CPU总是等待外部设备则对CPU的资源是极大的浪费。而引进CPU调度后可在运行进程等待外部设备时将CPU调度给其他进程从而提高CPU的利用率。用一句简单的话说就是为了合理地处理计算机的软/硬件资源。 2、调度算法有哪几种结合第章学习的分时操作系统和实时操作系统思考有没有哪种调度算法比较适合这两种操作系统。 本节介绍的调度算法有先来先服务调度、短作业优先调度、优先级调度、高响应比优先调度、时间片轮转调度、多级队列调度、多级反馈队列调度7种。 先来先服务算法和短作业优先算法无法保证及时地接收和处理问题因此无法保证在规定的时间间隔内响应每个用户的需求也同样无法达到实时操作系统的及时性需求。优先级调度算法按照任务的优先级进行调度对于更紧急的任务给予更高的优先级适合实时操作系统。 高响应比优先调度算法、时间片轮转调度算法、多级反馈队列调度算法都能保证每个任务在一定时间内分配到时间片并轮流占用CPU适合分时操作系统。 本节主要介绍了CPU调度的概念。操作系统主要管理CPU、内存、文件、设备几种资源只要对资源的请求大于资源本身的数量就会涉及调度。例如在单处理器系统中CPU只有一个而请求的进程却有多个因此就需要CPU调度。出现调度的概念后又有了一个问题即如何调度、应该满足谁、应该让谁等待这是调度算法所面对的问题而应该满足谁、应该让谁等待要遵循一定的准则。调度这一概念贯穿于操作系统的始终读者在接下来的学习中将接触到几种资源的调度问题。将它们与CPU调度的内容相对比将发现有异曲同工之妙。
2.3 同步与互斥
2.3.1 同步与互斥的基本概念 临界资源和互斥 实现临界区互斥必须遵循的准则 同步 2.3.2 实现临界区互斥的基本方法 软件实现方法 单标志法 注违背了“空闲让进”准则两个进程必须交替进入临界区双标志先检查法双标志后检查法 注违背了“空闲让进”准则且因此会导致“饥饿”现象违背了“有限等待”准则Peterson算法 注很好的遵守了其他三个准则但是还是违背了“让权等待”硬件实现方法 中断屏蔽方法硬件指令方法——TestAndSet方法 注违背了“让权等待”硬件指令方法——Swap方法
2.3.3 互斥锁 2.3.4 信号量 整型信号量记录型信号量利用信号量实现进程互斥利用信号量实现同步利用信号量实现前驱关系多级同步
2.3.5 经典同步问题
1. 生产者-消费者问题
单消费者单生产者 注一定得是先同步后互斥否则将造成死锁。多消费者多生产者 注该结论不适用于多个盘子也就是盘子容量不唯一的情况哦。
2. 读者-写者问题 3. 哲学家进餐问题 4. 吸烟者问题 2.3.6 管程 2.3.7 本节小结
1为什么要引入进程同步的概念 在多道程序共同执行的条件下进程与进程是并发执行的不同进程之间存在不同的相互制约关系。为了协调进程之间的相互制约关系引入了进程同步的概念。
2不同的进程之间会存在什么关系 进程之间存在同步与互的制约关系 同步是指为完成某种任务而建立的两个或多个进程这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系 互斥是指当一个进程进入临界区使用临界资源时另一个进程必须等待当占用临界资源的进程退出临界区后另一进程才允许去访问此临界资源。
3当单纯用本节介绍的方法解决这些问题时会遇到什么新的问题吗 当两个或两个以上的进程在执行过程中因占有一些资源而又需要对方的资源时会因为争夺资源而造成一种互相等待的现象若无外力作用它们都将无法推进下去。这种现象称为死锁。
2.4 死锁
2.4.1 死锁的概念 死锁、饥饿和死循环的共同点和区别 死锁产生的必要条件 什么时候会发生死锁 死锁的处理机制 2.4.2 死锁预防 破环互斥条件破坏不可剥夺条件破坏请求并保持条件破环循环等待条件
2.4.3 死锁避免 2.4.4 死锁检测和解除
死锁检测死锁解除
2.4.5 本节小结
1为什么会产生死锁产生死锁有什么条件 由于系统中存在一些不可剥夺资源当两个或两个以上的进程占有自身的资源并请求对方的资源时会导致每个进程都无法向前推进这就是死锁。死锁产生的必要条件有4个分别是互条件、不剥夺条件、请求并保持条件和循环等待条件 互斥条件是指进程要求分配的资源是排他性的即最多只能同时供一个进程使用。 不剥夺条件是指进程在使用完资源之前资源不能被强制夺走。 请求并保持条件是指进程占有自身本来拥有的资源并要求其他资源 循环等待条件是指存在一种进程资源的循环等待链。
2有什么办法可以解决死锁问题 死锁的处理策略可以分为预防死锁、避免死锁及死锁的检测与解除
死锁预防是指通过设立一些限制条件破坏死锁的一些必要条件让死锁无法发生。死锁避免指在动态分配资源的过程中用一些算法防止系统进入不安全状态从而避免死锁。死锁的检测和解除是指在死锁产生前不采取任何措施只检测当前系统有没有发生死锁若有则采取一些措施解除死锁。
2.5 本章疑难点
1、进程与程序的区别与联系 1进程是程序及其数据在计算机上的一次运行活动是一个动态的概念。进程的运行实体是程序离开程序的进程没有存在的意义。从静态角度看进程是由程序、数据和进程控制块PCB三部分组成的。而程序是一组有序的指令集合是一种静态的概念。 2进程是程序的一次执行过程它是动态地创建和消亡的具有一定的生命周期是暂时存在的而程序则是一组代码的集合是永久存在的可长期保存。 3一个进程可以执行一个或几个程序一个程序也可构成多个进程。进程可创建进程而程序不可能形成新的程序。 4进程与程序的组成不同。进程的组成包括程序、数据和PCB 2、银行家算法的工作原理 银行家算法的主要思想是避免系统进入不安全状态。在每次进行资源分配时它首先检查系统是否有足够的资源满足要求若有则先进行试分配并对分配后的新状态进行安全性检查。若新状态安全则正式分配上述资源否则拒绝分配上述资源。这样它保证系统始终处于安全状态从而避免了死锁现象的发生。 3、进程同步、互斥的区别和联系 并发进程的执行会产生相互制约的关系一种是进程之间竞争使用临界资源只能让它们逐个使用这种现象称为互斤是一种竞争关系另一种是进程之间协同完成任务在关键点上等待另一个进程发来的消息以便协同一致是一种协作关系。 三、内存管理
3.1 内存管理概念
3.1.1 内存管理的基本原理和要求 注重定位寄存器也称基址寄存器、界地址寄存器也称为限长寄存器。 将用户程序变为可在内存中执行的程序的步骤 1、程序的链接和装入 绝对装入可重定位装入动态运行时装入 链接的三种方式
静态链接在程序运行之前先将各目标模块及它们所需的库函数连接成一个完整的可执行文件装入模块之后不再拆开。装入时动态链接将各目标模块装入内存时边装入边链接的链接方式。运行时动态链接在程序执行中需要该目标模块时才对它进行链接。其优点是便于修改和更新便于实现对目标模块的共享。
3.1.2 连续分配管理方式 单一连续分配固定分区分配动态分区分配 系统要用什么样的数据结构记录内存的使用情况当很多个空闲分区都能满足需求时应该选择哪个分区进行分配如何进行分区的分配与回收操作 将相邻的空闲空间合并。
动态分区分配算法 1、首次适应算法First Fit 2、邻近适应Next Fit算法 3、最佳适应Best Fit算法 4、最坏适应Worst Fit算法 3.1.3 基本分页存储管理 1. 分页存储的基本概念
分页存储的定义 重要的存储结构——页表 每个页表项占多少字节 注页表是隐含的
如何实现地址的转换 逻辑地址结构 2. 基本地址变换机构 3. 具有快表的地址变换机构 快表是什么 4. 两级页表 3.1.4 基本分段存储管理 分页、分段管理的对比 3.1.5 段页式存储管理 3.1.6 本节小结
1为什么要进行内存管理 在单道批系统阶段一个系统在一个时间段内只执行一个程序内存的分配极其简单即仅分配给当前运行的进程。引入多道批程序后进程之间共享的不仅仅是处理机还有主存储器。然而共享主存会形成一些特殊的挑战。若不对内存进行管理则容易导致内存数据的混乱以至于影响进程的并发执行。因此为了更好地支持多道程序并发执行必须进行内存管理。 2多级页表解决了什么问题又会带来什么问题 多级页表解决了当逻辑地址空间过大时页表的长度会大大增加的问题。而采用多级页表时一次访盘需要多次访问内存甚至磁盘会大大增加一次访存的时间。 无论是段式管理、页式管理还是段页式管理读者都只需要掌握下面三个关键问题 逻辑地址结构页段表项结构寻址过程。 搞清楚这三个问题就相当于搞清楚了上面几种存储管理方式。再次提醒读者区分逻辑地址结构和表项结构。 3.2 虚拟内存管理
3.2.1 虚拟内存的基本概念 传统存储管理方式的特征虚拟内存器的定义和特征虚拟内存技术的实现
3.2.2 请求分页管理方式 页表机制缺页中断机构 地址变换机构
3.2.3 页框分配 3.2.4 页面置换算法 最佳OPT置换算法先进先出FIFO算法最近最久未使用LRU算法时钟CLOCK置换算法改进型CLOCK置换算法
*3.2.5 抖动和工作集 3.2.6 内存映射文件 3.2.7 虚拟存储器性能影响因素
3.2.8 地址翻译
3.2.9 本节小结
1为什么要引入虚拟内存 上一节提到过多道程序并发执行不仅使进程之间共享了处理器而且同时共享了主存。然而随着对处理器需求的增长进程的执行速度会以某种合理平滑的方式慢下来。但是若同时运行的进程太多则需要很多的内存当一个程序没有内存空间可用时那么它甚至无法运行。所以在物理上扩展内存相对有限的条件下应尝试以一些其他可行的方式在逻辑上扩充内存。 2虚拟内存虚存空间的大小由什么因素决定 虚存的容量要满足以下两个条件 虚存的实际容量内存容量和外存容量之和这是硬件的硬性条件规定的若虚存的实际容量超过了这个容量则没有相应的空间来供虚存使用。虚存的最大容量≤计算机的地址位数能容纳的最大容量。假设地址是32位的按字节编址一个地址代表1B存储空间则虚存的最大容量≤4GB2B。这是因为若虚存的最大容量超过4GB则32位的地址将无法访问全部虚存也就是说4GB以后的空间被浪费了相当于没有一样没有任何意义 。 实际虚存的容量是取条件1和2的交集即两个条件都要满足仅满足一个条件是不行的。 3虚拟内存是怎么解决问题的会带来什么问题 虚拟内存使用外存上的空间来扩充内存空间通过一定的换入/换出使得整个系统在逻辑上能够使用一个远远超出其物理内存大小的内存容量。因为虚拟内存技术调换页面时需要访问外存会导致平均访存时间增加若使用了不合适的替换算法则会大大降低系统性能。 本节学习了4种页面置换算法要将它们与处理机调度算法区分开。当然这些调度算法之间也是有联系的它们都有一个共同点即通过一定的准则决定资源的分配对象。在处理机调度算法中这些准则比较多有优先级、响应比、时间片等而在页面调度算法中就比较简单即是否被用到过或近段时间内是否经常使用。在操作系统中几乎每类资源都会有相关的调度算法读者通过将这些调度算法作为线索可将整个操作系统的课程连成一个整体。 3.3 本章疑难点 四、文件管理
4.1 文件系统基础 4.1.1 文件的基本概念 一个文件有哪些属性 文件名由创建文件的用户决定文件名主要是为了方使用户找到文件同一目录下不允许有重名文件。标识符一个系统内的各文件标识符唯一对用户来说毫无可读性因此标识符只是操作系统用于区分各个文件的一种内部名称。类型指明文件的类型位置文件存放的路径让用户使用、在外存中的地址操作系统使用对用户不可见大小指明文件大小创建时间、上次修改时间、文件所有者信息保护信息对文件进行保护的访问控制信息 4.1.2 文件控制块和索引节点
文件控制块索引节点
4.1.3 文件的操作 注读写文件操作用文件描述符即可指明文件无需用到文件名
创建文件删除文件读文件写文件打开文件关闭文件
4.1.4 文件保护 4.1.5 文件的逻辑结构 无结构文件有结构文件定长记录、变长记录 顺序文件索引文件索引顺序文件
4.1.6 文件的物理结构 连续分配链接分配 显式链接FAT在整个磁盘中只有一张常驻内存、开机读入内存。盘块号可隐含隐式链接Default索引分配 链接方案多级索引分配方式混合索引分配方式
4.1.7 本节小结
1什么是文件 文件是以计算机硬盘为载体的存储在计算机上的信息集合它的形式多样。 2单个文件的逻辑结构和物理结构之间是否存在某些制约关系 文件的逻辑结构是用户可见的结构即从用户角度看到的文件的全貌。文件的物理结构是文件在存储器上的组织结构。它和文件的存取方法以及存储设备的特性等都有着密切的联系。单个文件的逻辑结构和物理结构之间虽无明显的制约或关联关系但是如果物理结构选择不慎也很难体现出逻辑结构的特点比如一个逻辑结构是顺序结构而物理结构是隐式链接结构的文件即使理论上可以很快找出某条记录的地址而实际仍需在磁盘上一块一块地找。 学到这里时读者应能有这样的体会现代操作系统的思想中处处能见到面向对象程序设计的影子。本节我们学习的一个新概念一—文件实质上就是一个抽象数据类型也就是一种数据结构若读者在复习操作系统之前已复习完数据结构则遇到一种新的数据结构时一定会有这样的意识要认识它的逻辑结构、物理结构以及对这种数据结构的操作。 4.2 目录 4.2.1 目录的基本概念 4.2.2 目录结构
单级目录结构单级目录结构实现了“按名存取”但是存在查找速度慢、文件不允许重名、不便于文件共享等缺点而且对于多用户的操作系统显然是不适用的。两级目录结构 两级目录结构提高了检索的速度解决了多用户之间的文件重名问题文件系统可以在目录上实现访问限制。但是两级目录结构缺乏灵活性不能对文件分类。树形目录结构树形目录结构可以很方便地对文件进行分类层次结构清晰也能够更有效地进行文件的管理和保护。在树形目录中不同性质、不同用户的文件可以分别呈现在系统目录树的不同层次或不同子树中很容易地赋予不同的存取权限。但是在树形目录中查找一个文件需要按路径名逐级访问中间节点增加了磁盘访问次数这无疑会影响查询速度。目前大多数操作系统如UNIX、Linux和Windows系统都采用了树形文件目录。无环图目录结构
4.2.3 目录的操作
搜索当用户使用一个文件时需要搜索目录以找到该文件的对应日录项。创建文件当创建一个新文件时需要在日录中增加一个日录项。删除文件当删除一个文件时需要在日录中删除相应的目录项创建目录在树形日录结构中用户可创建白己的用户文件目录并可再创建子目录删除目录。有两种方式 不删除非空目录删除时要先删除目录中的所有文件并递归地删除子目录。可删除非空目录目录中的文件和子目录同时被删除。移动目录将文件或子目录在不同的父目录之间移动文件的路径名也会随之改变。显示目录用户可以请求显示目录的内容如显示该用户目录中的所有文件及属性。修改目录某些文件属性保存在目录中因而这些属性的变化需要改变相应的目录项。
*4.2.4 目录实现
4.2.5 文件共享 基于索引节点的共享方式硬链接利用符号实现文件共享软链接
4.2.6 本节小结
1目录管理的要求是什么 实现“按名存取”这是目录管理最基本的功能。提高对目录的检索速度从而提高对文件的存取速度。为了方便用户共享文件目录还需要提供用于控制访问文件的信息。允许不同用户对不同文件采用相同的名字以使用户按自己的习惯给文件命名。 2在目录中查找某个文件可以使用什么方法 可以采用线性列表法或哈希表法。线性列表将文件名组织成一个线性表查找时依次与线性表中的每个表项进行比较。 若将文件名按序排列则使用折半查找法可以降低平均的查找时间但建立新文件时会增加维护线性表的开销。哈希表用文件名通过哈希函数得到一个指向文件的指针这种方法非常迅速但要注意避免冲突。 4.3 文件系统 磁盘空闲空间管理的方法
空闲表法空闲链表法 空闲盘块链空闲盘区链位示图法成组链接法
虚拟文件系统VFS所定义的对象类型 1超级块对象表示一个已安装或称挂载的特定文件系统。超级块对象对应于磁盘上特定扇区的文件系统超级块用于存储已安装文件系统的元信息。其操作方法包含一系列可在超级块对象上调用的操作函数主要有分配inode、销毁inode、读inode、写inode等。 2索引节点对象表示一个特定的文件。索引节点和文件是一对一的关系。只有当文件被访问时才在内存中创建索引节点对象每个索引节点对象都会复制磁盘索引节点包含的一些数据。索引节点对象还提供许多操作函数如创建新索引节点、创建硬链接、创建新目录等。 3目录项对象表示一个特定的目录项。目录项对象是一个路径的组成部分它包含指向关联索引节点的指针还包含指向父目录和指向子目录的指针。不同于前面两个对象目录项对象在磁盘上没有对应的数据结构而是VFS在遍历路径的过程中将它们逐个解析成目录项对象的。 4文件对象表示一个与进程相关的已打开文件。可以通过调用openO打开一个文件通过调用closeO关闭一个文件。文件对象和物理文件的关系类似于进程和程序的关系。文件对象仅是进程视角上代表已打开的文件它反过来指向其索引节点。文件对象包含与该文件相关联的目录项对象包含该文件的文件系统、文件指针等还包含在该文件对象上的一系列操作函数。当进程发起一个面向文件的系统调用时内核调用VFS中的一个函数该函数调用目标文件系统中的相应函数将文件系统请求转换到面向设备的指令。以在用户空间调用writeO为例它在VFS中通过sys_writeO函数处理sys_writeO找到具体文件系统提供的写方法将控制权交给该文件系统最后由该文件系统与物理介质交互并写入数据如图所示。 4.4 本章疑难点
1、文件的物理分配方式的比较 2、文件打开的过程描述 检索目录要求打开的文件应该是已经创建的文件它应登记在文件目录中否则会出错。在检索到指定文件后就将其磁盘iNode复制到活动iNode表中。将参数mode所给出的打开方式与活动iNode中在创建文件时所记录的文件访问权限相比较如果合法则此次打开操作成功。 当打开合法时为文件分配用户打开文件表表项和系统打开文件表表项并为后者设置初值通过指针建立表项与活动iode之间的联系再将文件描述符f返回给调用者。 五、输入/输出I/O管理
5.1 I/O管理概述
5.1.1 I/O设备 注稍微注意一下块设备是可以寻址的但是字符设备是不可寻址的。 I/O接口又称为设备控制器
5.1.2 I/O控制方式 程序直接控制方式中断驱动方式DMA方式*通道控制方式
5.1.3 I/O软件层次结构 用户层软件产生I/O请求格式化I/OSPOOLing设备独立性软件映射保护分块缓冲分配设备驱动程序设置设备寄存器检查状态中断处理程序
5.1.4 应用程序I/O接口 5.1.5 本节小结
I/O管理要完成哪些功能 I/O管理需要完成以下4部分内容 状态跟踪。要能实时掌握外部设备的状态。设备存取。要实现对设备的存取操作。设备分配。在多用户环境下负责设备的分配与回收。设备控制。包括设备的驱动、完成和故障的中断处理。 5.2 设备独立性软件 注设备独立性是指用户编程时使用的设备与实际使用的设备无关。
5.2.1 设备独立性软件 5.2.2 高速缓存与缓冲区 单缓冲 双缓冲 注实现”同一时刻“下数据的双向传输。循环缓冲
5.2.3 设备分配与回收 注设备分配常用的算法1、先来先服务算法 2、最高优先级算法 5.2.4 SPOOLing技术假脱机技术 注
其主要目的就是提高了独占设备技术前提的利用率。实现的基本条件是不仅要有大容量、高速度的外存作为输入和输出井而且还要有SPOOLing软件。是一种以空间换取时间的技术能够提高作业执行的速度。只需要外存蛤不需要外围计算机。建立在多道程序设计的基础上在同一时间段内输入进程、输出进程是可以和运行的作业进程并发执行的。 5.2.5 设备驱动程序接口
5.2.6 本节小结
1当处理机和外部设备的速度差距较大时有什么办法可以解决问题 可采用缓冲技术来缓解CPU与外设速度上的矛盾即在某个地方一般为主存设立一片缓冲区外设与CPU的输入/输出都经过缓冲区这样外设和CPU就都不用互相等待。 2什么是设备的独立性引入设备的独立性有什么好处 设备独立性是指用户在编程序时使用的设备与实际设备无关。一个程序应独立于分配给它的某类设备的具体设备即在用户程序中只指明IO使用的设备类型即可。 设备独立性有以下优点①方便用户编程。②使程序运行不受具体机器环境的限制。③便于程序移植。 5.3 磁盘和固态硬盘
5.3.1 磁盘 5.3.2 磁盘的管理 5.3.3 磁盘调度算法 注减少延迟时间的方法有1、交替编号 2、错位命名 5.3.4 固态硬盘 注静态磨损均衡算法通常比动态磨损均衡算法的表现更优秀。 5.3.5 本节小结
1在磁盘上进行一次读/写操作需要哪几部分时间其中哪部分时间最长 在磁盘上进行一次读/写操作花费的时间由寻道时间、延迟时间和传输时间决定。其中寻道时间是将磁头移动到指定磁道所需要的时间延退时间是磁头定位到某一磁道的扇区块号所需要的时间传输时间是从磁盘读出或向磁盘写入数据所经历的时间。一般来说寻道时间因为要移动磁头臂所以占用时间最长。 2存储一个文件时当一个磁道存储不下时剩下部分是存在同一个盘面的不同磁道好还是存在同一个柱面上的不同盘面好 上一问经说到寻道时间对于一次磁盘访问的影响是最大的若存在同一个盘面的不同磁道则磁头臂势必要移动这样会大大增加文件的访问时间而存在同一个柱面上的不同盘面就不需要移动磁道所以一般情况下存在同一个柱面上的不同盘面更好。 5.4 本章疑难点
1、为了增加设备分配的灵活性、成功率可以如何改进 可以从以下两方面对基本的设备分配程序加以改进 增加设备的独立性。进程使用逻辑设备名请求IO。这样系统首先从SDT中找出第一个该类设备的DCT。若该设备忙则又查找第二个该类设备的DCT。仅当所有该类设名都忙时才将进程挂到该类设备的等待队列上只要有一个该类设备可用系统便进一步计算分配该设备的安全性。考虑多通路情况。为防止IO系统的“瓶颈”现象通常采用多通路的IO系统结构。此时对控制器和通道的分配同样要经过几次反复即若设备控制器所连接的第一个控制器通道忙时则应查看其所连接的第二个控制器通道仅当所有控制器通道都忙时此次的控制器通道分配才算失败才将进程挂到控制器通道的等待队列上。而只要有一个控制器通道可用系统便可将它分配给进程。 设备分配过程中先后分别访问的数据结构为SDT→DCT→COCT→CHCT。要成功分配备一个设备必须要①设备可用②控制器可用③通道可用。所以“设备分配要过三关”。 2、什么是用户缓冲区、内核缓冲区 5.1.4节中讨论过“IO操作完成后系统将数据从内核复制到用户空间”这里说的是“内核”其实是指内核缓冲区“用户空间”是指用户缓冲区。 用户缓冲区是指当用户进程读文件时通常先申请一块内存数组称为Buffer用来存放读取的数据。每次read调用将读取的数据写入Buffer之后程序都从buffer中获取数据当buffer使用完后再进行下一次调用填充buffer。可见用户缓冲区的目的是减少系统调用次数从而降低系统在用户态与核心态之间切换的开销。 内核也有自己的缓冲区。当用户进程从磁盘读取数据时不直接读磁盘而将内核缓冲区中的数据复制到用户缓冲区中。若内核缓冲区中没有数据则内核请求从磁盘读取然后将进程挂起为其他进程服务等到数据已读取到内核缓冲区中时将内核缓冲区中的数据复制到用户进程的缓冲区才通知进程当然IO模型不同处理的方式也不同。当用户进程需要写数据时数据可能不直接写入磁盘而将数据写入内核缓冲区时机适当时如内核缓冲区的数据积累到一定量后内核才将内核缓冲区的数据写入磁盘。可见内核缓冲区是为了在操作系统级别提高磁盘I/O效率优化磁盘写操作。