您的位置:首页 > 理论基础

计算机四级操作系统--内容框架

2015-07-19 08:32 260 查看
第3章 进程线程模型

    3.1多道程序设计模型

        3.1.1程序的执行顺序

            1.顺序性

            2.封闭性

            3.程序执行结果的确定性

            4.程序执行结果的可再现性

        3.1.2 多道程序系统中程序执行环境的变化

            1、多道程序设计技术的引入

            2、多道程序设计环境的特点

                1.独立性(逻辑独立,执行速度与其他程序无关,起止时间也独立)

                2.随机性(程序和数据的输入与执行开始时间是随机的)

                3.资源共享性(例如:各个程序只能共享系统中已有的CPU)

        3.1.3程序的并发执行

            1、并发程序在执行期间具有相互制约的关系

            2、程序与计算不再一一对应(一个编译程序往往同时为几个用户服务)

            3、并发程序的执行结果不可再现

    3.2进程模型

        3.2.1 进程的概念

         分为系统进程和用户进程。

            1.进程与程序的区别和联系

                1)联系

                    静态的角度看,进程是程序、数据和进程控制块

                2)区别

                    程序是静态的,进程是动态的

            2.进程的特性

                1)并发性

                2)动态性

                    其一:动态产生,动态消亡

                    其二:在进程的生命周期内,其状态是动态变化的

                3)独立性

                    资源分配的单位

                4)交互性

                    一个进程运行过程中和其他的进程发生直接或间接的相互作用。

                5)异步性

                    进程各自独立,不可预知的速度向前推进。

        3.2.2进程的状态及其状态转换

            1、三状态进程模型

                1)运行状态(已获得CPU,并且在CPU上执行的状态)

                2)就绪状态(具备运行条件,却缺CPU而不能运行)

                3)等待状态(阻塞状态或封锁状态)

            2、五状态进程模型

                1)运行状态

                2)就绪状态

                3)阻塞状态

                   由于进程等待I/O操作或进程同步条件而暂停运行时处于阻塞状态

                4)创建状态

                   1.分配和建立进程控制块表项

                   2.建立资源表项

                   3.加载程序并建立地址空间表

                5)结束状态

                    回收进程控制块之外的其他资源,让其他进程从进程控制块中收集有关信息

            3、七状态进程模型

                1、挂起

                    阻塞到阻塞挂起

                    就绪到就绪挂起

                    进行到就绪挂起

                2、激活

                    就绪挂起到就绪

                    阻塞挂起到阻塞

                3、事件出现

                    阻塞到就绪

                    阻塞挂起到就绪挂起

                4、提交

 

        3.2.3进程控制块

 

            为了便于系统控制和描述进程的活动过程

            PCB 是进程存在的唯一标志

            1.PCB 的内容

                1)调度信息

                2)现场信息

            2.进程的组成

                进程是有程序、数据和进程控制块三部分组成

            3、PCB组织

                1)线性方式

                    不分状态 、连续表中

                2)索引方式

                    相同状态、各设PCB索引表 构成就绪索引表和等待索引表

                3)链接方式

                    相同状态、通过PCB中的链接字构成一个队列

            4、进程的队列

                1)就绪队列

                   进程的入队和出队次序和处理机的调度算法有关。

                2)等待队列

                3)运行队列

        3.2.4进程控制

            从创建到消亡的生命周期,对进程在整个生命周期中各种状态之间的转换进行有效控制

            1.进程控制原语

                1)创建原语

                    导致进程的创建

                     * 系统的初始化

                     * 正在运行的系统进程 调用 进程创建 系统调用

                     * 用户请求创建一个进程

                     * 一个批处理作业的初始化

                2)撤销原语

                    撤销进程实质: 撤销PCB

                3)阻塞原语

                    进程执行过程中,需要执行I/O操作,由进程 调用 阻塞原语 把 进程从 运行态  转换为 阻塞状态

                4)唤醒原语

                    进程因等待事件的发生而处于等待状态,当等待事件完成后,等待原语将其转换 为就绪状态

            2.UNIX的fork() 函数及使用

                1、子进程得到与父进程

           用户地址空间相同的一份拷贝(文本、数据等)

                2、子进程得到与父进程

           任何打开文件描述符的相同拷贝(文件)

                3、子进程和父进程的区别: 不同的PID

 

                fork()函数的特点: 一次被调用,两次返回。

        

    3.3线程模型

 

        3.3.1线程的引入

            1)创建进程

            2)撤销进程

            3)进程切换

        3.3.2线程的基本概念

            1、线程的属性

                线程是进程中一个实体,是CPU调度和分派的基本单位。

                线程有就绪、等待、和运行。

            2、引入线程的好处

                

            3、线程与进程的比较

                1)调度

                    传统的操作系统: 进程是拥有资源的基本单位和独立调度、分派的基本单位

                    引入线程的操作系统: 线程是调度和分派的基本单位。进程:资源拥有的单位

                2)并发性

                    

                3)拥有资源

                    进程是拥有资源的一个独立的单位。

                4)系统开销

                    

 

        3.3.3线程的实现机制

            1、用户级线程

                允许每个进程有自己定制的调度算法。

 

            2、内核级线程

                1)线程的调度与切换速度

                2)系统调用

                3)线程执行时间

            3、混合实现方式

                同时实现用户级线程和内核及线程

        3.3.4Pthread线程包

            每一个都含有一个标识符、一组寄存器、

 

 

    3.4进程(线程)调度

        高级调度:按一定的原则,对磁盘中处于后备状态的作业进行选择并创建为进程。

        中级调度:按给定的原则和策略,将处于磁盘兑换区中,并具备运行条件的就绪进程调入内存,

                        将处于内存就绪状态或内存阻塞状态的进程交换到对换区

        低级调度:决定就绪队列中那个进程将获得处理机,并将处理机分配格该进程的操作。

        3.4.1 概述

            1、进程调度的主要功能

                1、纪录系统中所有进程的执行情况

                2、根据一定的调度算法,从就绪队列中选出一个进程,准备把CPU分配给他

                3、把CPU分配给进程(线程),即把选中进程(线程)的进程(线程)控制块内有关的现场

                信息送入处理器相应的寄存器中,从而让它占用CPU的运行。

            2、进程(线程)调度的时机

                1、正在执行的进程(线程)运行完毕

                2、调用阻塞原语将自己阻塞起来进入等待状态

                3、调用阻塞原语操作,并且因为资源不足而被阻塞,或调用了唤醒原语操作激活了等待资源的进程(线程);

                4、时间片用完

                5、就绪队列中的某个进程的优先级高于当前进程的优先级时,引发进程调度

 

        3.4.2 调度算法设计原则

            1、进程行为

            2、系统分类

                批处理、交互式、实时系统

 

                实时系统和交互式的差别:

                    实时系统:只运行那些用来推进现有应用的程序

                    交互式系统:是通用的,运行任意的非协作甚至是有恶意的程序。

            3、调度算法调度设计目标

                吞吐量、周转时间、cpu 的利用率

 

        3.4.3 进程(线程)调度算法

            1、先来先服务

            2、最短作业优先

            3、最短时间优先

            4、轮转法

            5、最高优先级算法

            6、多级反馈队列算法

            7、最短进程优先

            8、实时系统中的调度算法

                1、速率单调调度算法

                2、最早最终时限优先调度

            

                

第4章 并发与同步

    4.1 进程(线程)间的相互作用

        1、相关进程和无关进程           

            在一个多道程序系统中同时运行并发进程有多个

                相关进程:逻辑上有某种联系的进程

                无关进程;反之

 

        2、与时间有关的错误 

            1、由于自身或外界的原因而可能被中断,且断点不固定。

            2、进程执行的速度不能有进程自身控制

                对于相关进程,可能有若干并发进程同时使用共享资源,

                (一个进程一次使用未结束,另一进程也开始使用,形成交替使用共享资源)

 

    4.2 进程互斥

        解决办法有两种:

            1)、由竞争者各平等协商 

            2)、引入进程管理者,由管理者来协调竞争各方对互斥资源的使用

        1、进程互斥的软件方法

            算法1、单标志算法

            算法2、双标志、先检查算法

            算法3、双标志、后检查算法

            算法4、先修改、后检查、后修改者等待算法

        2、进程互斥的硬件方法

            1)TS(Test-and-Set)指令

                TS指令的功能是读出指定标志后把该标志设置为TRUE

            2)Swap指令(或Exchange指令)

                Swap:交换两个字的内容

            硬件方法的优点:

                (1)适用范围广:硬件方法使用于任意数目的进程,在单处理器和多处理器环境中完全相同。

                (2)简单:硬件方法的标志设置简单,含义明确,容易验证其正确性

                (3)支持多个临界区:在一个进程内有多个临界区是,只需为每个临界区设立一个布尔型变量。

            硬件方法的缺点:

                 (1)进程在等待进入临界区时,要耗费处理机时间,不能实现“让权等待”。

                 (2)由于进入临界区的进程是从等待进程中随机选择的,有的进程可能一直选不上,从而导致“饥饿”。

 

    4.3 信号量

        信号量是有操作系统提供的管理共有资源的有效手段。信号量代表可用资源实体的数量。

 

     

    4.4 经典进程同步问题

        1、单个生产者-消费者问题

        2、多个生产者-消费者问题

        3、读者-写者问题

        4、同步与互斥的综合应用

    4.5 管程

        1、管程的提出

            采用P、V原语同步机制编写并发进程,对于共享变量及信号量变量的操作将被分散于各个进程中,

            缺点是:

            1、程序易读性差

            2、程序不利于修改和维护

            3、正确性难以保证

 

        2、管程的概念及组成

        3、管程中的条件变量

        4、用管程解决生产者-消费者问题

        5、Pthread中的互斥与同步

    4.6 进程通信

        4.6.1、共享内存

            在相互通信的进程之间设有一个公共内存区,一组进程往公共内存中写,另一组进程从公共内存中读,

            进而实现进程间的通信。

 

        4.6.2、消息机制

            1、消息缓冲通信

            利用内存中公用消息缓冲区实现进程之间的信息交换。

            2、信箱通信

 

        4.6.3、管道通信

            管道:连接两个进程之间的一个打开的共享文件,专用于进程之间进行数据通信。

            传送数据量大,但通信速度较慢。

 

 

第5章 内存管理

    5.1 基本概念

        5.1.1 存储体系

            :各种速度和容量的存储器硬件在操作系统协调下,形成了一种存储器层次结构

        5.1.2 存储管理的任务

            存储器有内存和外存组成。

            内存空间:由存储单元(字节或字)组成的一维连续的地址空间。

                  用来存放当前正在运行程序的代码及数据。

            内存空间分两部分:

                1、系统区

                    用来存放操作系统常驻内存部分,用户不能占用这部分空间。

                2、用户区

                    分配给用户使用,用于装入并存放用户程序和数据,这部分的信息

                    随时变化。

            存储管理的实质上是管理供用户使用的那部分空间。

            1、内存的分配和回收

                应该具有以下功能:

                1)、记住每个存储区域的状态

                2)、实施分配

                3)、回收

                引入分配表格,统称内存分配表

                    1、位示图表示法

                    2、空闲页面表

                    3、空闲块表

                内存分配的两种方式:

                (1)、静态分配

                    分配工作是在程序运行前一次完成。

                (2)、动态分配

                    分配工作在程序运行前及运行过程中逐步完成。

            2、存储共享

                两个或多个进程共用内存中的相同区域,使多道程序动态地共享内存,

                提高利用率,而且还能共享内存中某个区域的信息。

 

                共享内容:代码共享和数据共享

            3、存储保护

                目的:为多个程序共享内存提供保障。使各程序只能访问其自己区域。避免程序之间的干扰。

                内容:

                    保护系统程序区不被用户有意或无意的侵犯;

                    不允许用户程序读写不属于自己地址空间的数据,如系统区地址空间、

                    其他用户程序的地址空间。

                1、地址越界保护

                    如果进程在运行时所产生的地址超出其地址空间,发生地址越界。

 

                2、权限保护

                    对于允许多个进程共享的公共区域,每个进程都有自己的访问权限。

                当发生地址越界或非法操作时,有硬件产生中断,进入操作系统处理。

            

            4、“扩充”内存容量

        5.1.3 地址转换

            1、地址重定位

                逻辑地址转换为绝对地址

            2、静态重定位

                在装入一个程序时,把程序中的指令地址和数据地址全部转换成绝对地址。

                由于地址转换工作是在程序开始执行前集中完成的,所以在程序执行过程

                中就无需再进行地址转换工作。

            3、动态重定位

                再装入程序时,不进行地址转换,而直接把程序装入到分配的内存区域中。

                在程序的执行过程中,每当执行一条指令都由硬件的地址转换机构将指令

                中的逻辑地址换成绝对地址。这种方式的地址转换是在程序执行时动态完成的。

            

        5.1.4 内存管理方案简介

    5.2 分区存储管理方案

        5.2.1 固定分区

        5.2.2 可变分区

    5.3 覆盖技术与交换技术

        区别:控制交换的方式不同。

 

        5.3.1 覆盖技术

            一个程序的若干程序段或几个程序的某些部分共享某一个存储空间。

            覆盖技术实现是把程序划分为若干功能上相对独立的程序段,按照自身的逻辑结构使那些不会同时执行的程序段共享同一块内存区域。

            1、优点:

                打破了需要将一个程序的全部信息装入内存后程序才能运行的限制。

            2、缺点:

                早期采用了简单的扩充内存的是技术,对用户不透明,增加了用户的负担,要求

                用户清楚的了解程序的结构,并指定各程序调入内存的次序,以及内存中可以覆盖掉的程序段的位置等。而且程序段的最大长度仍受内存容量的限制。

 

        5.3.2 交换技术

            交换:进程从内存移到磁盘并再移回内存

 

            目的:尽可能的达到“足够快的交换进程,以使当CPU调度程序向重新调度CPU时,总有进程在内存汇总处于“就绪状态”的理想状态,从而提高内存的利用率。

 

            相关的问题:

                1)换出进程的选择

                    可根据时间片轮转法或基于优先数的调度算法来选择要换出的进程

                2)交换时机的确定

                    1.内存空间不够或又不够的危险时,换出内存的部分进程到外存,以

                    释放所需内存。

                    2.当系统发现一个进程长时间不运行是就将该进程换出。

                3)交换空间的分配

                    1、一些系统中,当进程在内存中,不再为它分配空间。被换出时,必须为它分配磁盘交换空间。每次交换,进程可能被交换到磁盘的不同地方。

 

                    2、另外一些系统中,进程一旦创建,就分配给它磁盘上的交换空间

                    无论何时进程被换出,都被换到已经为他分配的空间,而不是每次交换到不同的空间。

进程结束,进程空间被回收。

 

                4)换入进程换回内存时的位置的确定

                    如果引用的地址是绝对地址,被换入内存的进程一定还在原来的位置上。

                    如果引用的地址是相对地址,被换入内存的进程可进行地址重定位,即被换入进程不再原来的位置上。

            缺点:

                交换时需要大量CPU时间,将影响用户的相应时间,减少交换信息量是交换技术的关键。

 

                合理做法:

                在外存中保留每一个程序的交换副本,换出时仅将执行时修改过的部分复制到外存。

 

            优点:

                1、打破了一个程序一旦进入内存变一直运行到结束的限制。

                2、不要求用户给出程序段之间的逻辑结构,对用户是透明的

                3、交换发生在不同进程或程序之间,

                覆盖发送在同一进程或程序内部,且只能覆盖那些与覆盖段无关的程序段。

 

            覆盖技术和交换技术的发展导致虚拟存储技术的出现。

 

    5.4 页式存储管理方案

 

        分区方式管理内存时,每道程序都占用内存的一块或几块连续的内存空间。

        如果内存无足够大的连续空间,程序就无法装入,必须移动内存中某些程序后

        才能装入新的程序,这不方便,且系统开销很大。

 

        5.4.1 基本思想

        存储管理部件首先把内存分成大小相等的许多区,每个区叫“块”,块是进行主存空间分配的单位。

        页式存储器使用的逻辑地址有两部分构成:页号和页内地址

 

        5.4.2 存储空间的分配与回收

 

        页式存储管理分配内存空间是以物理页面为单位,由于物理页面大小固定,在内存分配表中,指定那块已经分配,那块尚未分配,以及当前剩余的空间块数等三种不同的标示即可。

        5.4.3 地址转换与快表

            1、页式存储管理的地址转换

                实现页式存储管理,系统提供了(硬件的)页表控制寄存器,即页表起始地址

                寄存器和页表长度寄存器,还要高速缓冲寄存器的支持。

                

                页表:该程序逻辑地址中的页号与所占用的内存块号之间的对应关系。

                

                物理地址 = 内存块号*块长+页内地址

            2、页表

                1)多级页表

                    存放页表的页面为页表页。

                    页表页不连续存放,需要对页表页的地址进行索引。

                2)散列页表

                    散列页表中每个表项都有三个字段:a.虚拟页号b.所映射的页框号

                    c.指向链表中下一各元素的指针。

                3)反置页表

                    根据页面的虚拟地址对其进行访问。有其缺点,为了记录内存的使用

                    情况,就消耗了大量的物理内存。

 

                    在反置页表中,每个物理页框对应一个表项,每个表项包含与该页框

                    对应的虚拟页面地址以及拥有该页面进程的信息。

 

            3、快表

            页表存放在内存中。当要给定的逻辑地址进行读写时,必须访问两次内存。第一次按页号读出页表对应的块号,第二次计算出绝对地址进行读写。

 

            提高存取速度,有两种办法:

                1、在地址映射机制中增加一组寄存器保存页表,大量的硬件开销,经济不可行。

                2、在地址映射机制中增加一个小容量的联想寄存器,由高速缓冲存储器组成。

 

    5.5 虚拟存储技术与虚拟页式存储管理方案的实现

        5.5.1 虚拟存储技术

            利用大容量的外存来扩充内存,产生一个比有限的实际内存空间大的多的、逻辑的虚拟内存空间,简称虚存。

 

            虚拟存储技术和交换技术在原理上类似,

            区别:

                1、在传统的交换技术中,交换到外存上的对象一般都是进程,(交换技术是以进程为单位进行的),如果一个进程所需内存大于当前系统内存,那么进程就不能在系统中运行。

                2、虚拟存储是以页或端为单位,如果一个进程所需内存大于当前系统内存,进程仍然可以在系统中正常运行,因为该进程部分可以交换到外存上。

 

        5.5.2 虚拟页式存储管理

            1、基本思想

                进程在开始运行之前,不是装入全部页面,而是装入一个或零个页面,之后根据进程运行的需要,动态装入其他页面;当内存空间已满,而又需要装入新的页面时,

则根据某种算法置换出某个页面,以便装入新的页面。

            2、缺页中断

                若在页表中发现所要访问的页面不在内存,则产生缺页中断。

            3、页面调度策略

                定义三种策略进行页面调度:

                    1)调入策略

                        *请求调页

                            只调入发生缺页时所需的页面。

                            优点:实现简单

                            缺点:容易产生较多的缺页中断,造成对外存I/O次数多,

                            时间开销大,容易产生抖动。

                        *预调页

                            在发生缺页需要调页时,一次调入该页以及相邻的几个页。

 

                            优点:提高了调页的I/O效率,减少了I/O的次数。

                            缺点:基于局部性原理的预测,若调入的页在以后

                            很少被访问,则造成浪费。

                        

                    2)置页策略

                        当线程产生缺页中断时,内存管理器还必须将调入的虚拟页放在物理内存的何处。

                    3)置换策略

                    用于确定那个虚页面必须从内存中移出,为新的为新的页面腾出位置。

                        *固定分配局部置换

                        *可变分配全局置换

                        *可变分配局部置换

                    

            4、页面置换算法

                1)先进先出页面置换算法(FIFO)

                    最老的页面在表头,最新的页面在表尾。当发生缺页时,置换表头的

                    页面并把新调入的页面加到表尾。

                2)最近最少使用页面置换算法(LRU)

                    在缺页时,首先置换出最长时间未被使用过的页面。

                3)最近最不常用页面置换算法(Last Frequenty Used,LFU)

                    在一段时间里,页面被使用的次数选择可以调出的页,如果一个页面

被访问的次数较多,则是经常使用的页面,就不应该把它调出。(总是选择被访问次数少的页面调出)

                4)理想页面置换算法(OPT)

                    置换以后不再需要的或者最长时间以后才会用到的页面。

                5)最近未使用页面置换算法(NRU)

                6)第二次机会页面置换算法

                    寻找一个最近的时钟间隔以来没有被访问过的页面。如果所有的页面

都被访问过,该算法退化为FIFO算法。

                7)时钟页面置换算法

            5、缺页中断率

                假定一个程序共有n页,系统分配给它的内存块是m块。因此,该程序最多有m页可同时被装入内存。如果程序执行中访问页面的总次数为A.其中有F次访问的页尚未装入内存,故产生了F次缺页中断。

                f = F/A

                缺页中断率与缺页中断的次数有关。

 

                影响缺页中断率的因素如下:

                    1)分配给程序的内存块数

                    2)页面的大小

                    3)程序编制方法

                    4)页面置换算法

 

            6、虚拟存储管理的性能问题

            把内存和外存统一管理的,真正的目的,是把那些访问概率非常高的页放入内存,减少内外存交换的次数。

 

            任何程序对内存都有一个临界值要求,当分配给进程的物理页面数小于这个临界值时,缺页率上升;当分配给进程的物理页面数大于该临界值,在增加物理页面数也不能显著减少缺页次数。

 

        5.5.3 段式与段页式存储管理方案

            1、段式存储管理方案

                1)设计思想

                    将内存空间动态划分为若干个长度不同的区域,每个区域称作一个物理段。                 

                    内存分配时,系统是以段为单位进行内存分配,为每个逻辑端分配一个连续的内存区。逻辑上连续的段在内存中不一定连续存放。

 

                2)地址转换

                    与页式存储管理相同,为了实现段式管理,系统提供了一对寄存器:段表起始地址寄存器和段表长度寄存器。

 

                3)与可变分区管理方案的比较

            2、段页式存储管理方案

                思想:

                    1.用页式方法来分配和管理内存空间,

                    2.用段式方法对用户程序按照其内在的逻辑关系划分若干段

                    3.按照划分内存页面的大小,把每一段划分成若干大小相等的页面。

                采用段页式存储管理方案时,一个进程仍然拥有一个自己的二维地址空间,这与段式管理时相同。

1、一个进程包含具有独立逻辑功能的程序或数据仍被划分成段 ,并各自的段号。

2、对于段中的程序或数据,则按照一定的大小将其划分为不同的页。

3、和页式系统一样,最后不足一页的部分仍站一页。反映了段页式管中的页式的特征。

 

第6章 文件管理

    6.1 概述

        6.1.1 文件和文件系统

            1.文件的定义

                文件是一组带标识的、在逻辑上有完整意义的信息项的序列。

                信息项是构成文件的内容的基本单位,这些信息项是一组有序序列,他们之间具有一定的顺序关系。

            2.文件系统

                是一种软件,管理文件的存储、检索、更新、提供安全可靠的共享和保护手段,并且方便用户使用。

        6.1.2 文件分类

            1、按文件的用途分类

                1)、系统文件

                    操作系统和各种文件系统应用程序和数据所组成的文件。

 

                    用户可以执行文件。不允许对文件进行读写和修改。

 

                2)、库函数文件

                    标准子程序及常用应用程序组成的文件。

 

                    允许用户对其进读取、执行、但不允许对其修改。

                3)、用户文件

                    是用户委托文件系统保存的文件。

 

                    只有文件的所有者或所有者授权的用户才能使用。

            

            2.按文件的组织形式分类

                1)、普通文件

                    是文件组织格式为文件系统中所规定的最一般格式的文件。例如字符流式文件。

                2)、目录文件

                    是由文件的目录构成的特殊文件

                3)、特殊文件

                    形式与普通文件相同,也可进行查找目录等操作。

            3.一些常见的文件分类方式

                文件的保护方式:只读文件、读写文件、可执行文件、无保护文件

                信息的流向分类:输入文件、输出文件和输入输出文件

                使用介质类型:磁盘文件、磁带文件、卡片文件和打印文件

 

                文件的组织结构:逻辑文件:采用流式文件和记录文件两种组织方式。

 

            4.Unix类操作系统中文件的分类

                1)、普通文件

                2)、目录文件:由文件目录项所构成的文件

                3)、特殊文件:I/O设备--特殊文件

        6.1.3 文件系统的功能

            1)统一管理文件的存储空间,实施存储空间的分配与回收

            2)实现文件从名字空间到外存地址空间的映射。

            3)实现文件信息的共享,并提供文件的保护和保密措施

            4)向用户提供一个方便使用的接口

            5)系统维护及向用户提供有关信息

            6)保持文件系统的执行效率

            7)提供与I/O的统一接口

            

    6.2 文件的结构

        6.2.1 文件的逻辑结构

            1、设计文件逻辑结构的原则

                1)、易于操作

                2)、查找快捷

                3)、修改方便

                4)、空间紧凑

            2、文件的逻辑结构

                是用户看到的文件的组织形式。

                描述的是记录在文件中信息的组织形式

                文件分三类:无结构的字符流式文件、定长记录的文件和不定长的记录文件构成的记录树。

                1)流式文件

                    是有序字符的集合,其长度为该文件包含的字符个数,又称字符流式文件

                2)记录式文件

                    是有序记录的集合。构成文件的基本单位是记录

        6.2.2 文件的物理结构

            1、顺序结构

                把逻辑上连续的文件信息依次放在连续的编号的物理块。

            2、链接结构

                链接结构的实质是为每个文件构造所使用的磁盘块的链表。

                使用这种链表结构的文件,将逻辑上连续的文件分散存放在若干不连续的物理块中。

            3、索引结构

                把每个物理盘块的指针字集中存放在被称为索引表的数据结构中的内存索引表中。

 

        6.2.3 文件的存储介质

            1、存储介质的特点

                有容量大、断电后仍可保存信息、速度较慢、成本较低

            2、用户对外存储设备的要求

                方便、效率、安全、

            3、文件在存储设备中的存取

                1)顺序存取设备

                2)随机存取设备

                

        6.2.4 文件的存取方式

            文件的存储方式:由文件的性质和用户使用文件的情况而确定。

            常用存取方法:顺序存取和随机存取

            1、顺序存取

                从前到后的次序依次访问文件的各个信息项。

            2、随机存取

                即允许用户按任意的次序直接存取文件中的任意一个记录,或者根据存取命令把读写指针移到文件中的制定记录处读写。

    6.3 文件目录

        6.3.1 文件目录的组成

            1、文件控制块FCB结构

                

            2、目录文件

                当用户建立一个新文件时,与该文件的一些信息与属性记录在该文件的文件控制块之内。

        6.3.2 文件的目录结构

            1、一级目录结构

                是一种最简单、最原始的文件目录结构。

                优点:简单,容易实现

            2、二级目录结构

                为了克服一级目录结构中文件目录命名的可能冲突,并提高对目录文件的检索速度,一级目录被改进扩充成二级目录。

 

        6.3.3 树形目录

            1)层次清楚

            2)解决了文件重名的问题

            3)查找速度快

        6.3.4 路径名

            1、当前目录与目录检索

                一种全路径,另一种是相对路径

            2、文件目录的改进

                

        6.3.5 目录操作

            1)、CREATE,创建目录

            2)、Delete,删除目录

            3)、Opendir,打开目录

            4)、Closedir,关闭目录

            5)、Readdir,返回打开目录的下一条目录。

            

    6.4 文件系统的实现

        6.4.1 存储空间的分配与回收

            1、位示图

            2、空闲块表

            3、空闲链表

            4、成组链接

 

        6.4.2 实现文件系统的表目

            1、系统打开文件表

            2、用户打开文件表

            3、系统打开文件表与用户打开文件表之间的关系。

        6.4.3 纪录的成组与分解

            1、记录的成组

            2、记录的分解

            

        6.4.4 文件的操作

            1、建立文件

            2、打开文件

            3、读文件

            4、写文件

            5、关闭文件

            6、删除文件

            7、指针定位

    6.5 文件的保护和安全

        6.5.1 文件的共享

            一个文件可以允许多个用户共同使用。

            1、文件可以同时使用

            2、文件不允许同时使用

            

        6.5.2 文件的保护

            1)、灾祸

            2)、硬件或软件故障

            3)、人为的出错

            1、建立副本

            2、定时转储

            3、规定文件的存取权限

                1)、采用树形目录结构

                2)、存取控制表

 

        6.5.3 文件的存取权限

            1、存取控制矩阵

            2、二级存取控制

 

        6.5.4 文件的保密

            1、隐藏文件

            2、设置口令

            3、使用密码

    6.6 文件系统的性能

        1、块高速缓存

        2、合理分配磁盘空间

        3、磁盘的驱动调度

            1)、公平性:

                一个磁盘访问请求应当在有限时间内得到满足

            2)、高效性:

                减少设备机械运动带来的时间开销

            1、移臂调度

                *先来先服务调度算法

                *最短寻道时间优先调度

                *扫描算法(电梯原理)

                *循环扫描算法

            2、旋转调度

        4、信息的优化分布

        5、RAID技术

    6.7 Windows 的FAT文件系统和UNIX文件系统

        6.7.1 Windows 的FAT文件系统

            1、引导扇区

            2、文件分配表

            3、根目录

 

        6.7.2 UNIX文件系统

            每个目录项包含了两个域,文件名,I节点的编号。

 

第7章 I/O设备管理

7.1 设备与设备分类

        7.1.1 设备管理的重要性

            操作系统复杂和庞大的主要原因是:

            它管理的资源的庞杂和并发技术的采用,而I/O设备的庞杂是操作系统庞杂的主要原因

            I/O设备的速度远低于处理器的速度导致并发技术产生的直接原因

        7.1.2 设备管理的任务

            1、OS需要在设备管理和系统的其他部分之间提供简单而易于使用的接口

            2、接口对于所有的设备都一样

            3、用户对I/O设备的使用必须是安全的

 

        7.1.3 设备的分类

            1、按设备的使用特性分类

                I/O设备和存储设备

            2、按设备的信息组织方式来划分

                按信息的组织方式分:字符设备和块设备

                块设备:是能够随时读写其中的任何一块而与所有别的块无关。

                字符设备:以字符为单位发送或接收字符流

            3、按设备的共享属性分类

                按共享属性:共享设备、独占设备和虚拟设备

 

    7.2 I/O硬件组成

        7.2.1 计算机I/O系统的结构

            中央部分是CPU和主存,通过总线与第二层的接口部件相连,第三层各种外围设备控制器

            最外层:外围设备

 

            两种编址方式:内存映射编址和I/O独立编址

 

            操作系统并不直接与设备本身打交道,而是与设备控制器打交道,即:OS通过对设备控制器中的寄存器进行读写操作与设备交换数据。

 

 

        7.2.2 I/O设备数据传送控制方式

            1、程序直接控制方式

                用户进程直接控制内存或CPU和外围设备之间进行信息传送的方式。

 

                优点:CPU和外设的操作能通过状态信息得到同步,硬件结构比较简单

                缺点:CPU效率低,传输完全在CPU控制下完成,对外部出现的异常事件无实事相应能力

            2、中断控制方式

                中断控制方式:

                1)、CPU与外设在大部分时间内并行工作,提高了CPU的利用率

                2)、具有实时相应能力,可使用于实时控制场合。

                3)、及时处理异常情况,提高计算机的可靠性。

 

                中断控制方式的处理过程:

                1)、CPU通过数据总线发出命令,启动外设工作,当前进程阻塞,调度程序调度其他进程。

                2)、外设数据准备好,指位中断请求触发器

                3)、若此时接口中断屏蔽触发器状态为非屏蔽状态,则接口向CPU发中断请求

                4)、CPU接受中断请求,且中断为允许中断状态,则中断判优电路工作

                5)、中断判优电路对相应优先级最高的中断请求给予相应,CPU中断正在执行其他进程,转而执行中断服务程序。

            3、DMA方式

                从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和I/O设备之间进行。

            4、通道控制方式

                通道有自己的指令和程序,可以实现对外围设备的统一管理和外围设备与内存之间的数据传送

                

                一个系统中设立三种类型的通道:选择通道、数组通道和字节多路通道

                

                选择通道: 物理上可以连接多个设备,但是这些设备不能同时工作,在某一段时间内通道只能

                选择一个设备进行。

                优点:是以数据块为单位进行传输,缺点:通道利用率低

 

 

                数组多路通道:

                当设备在执行寻址等控制性动作时,通道暂时断开与这个设备的连接,挂起该设备的通道程序。

                去为其他设备服务,即执行其他设备的通道程序。

 

                字节多路通道:

                各设备与通道之间的数据传送是以字节为单位交替进行的,各设备轮流占用一个很短的 时间片

                多路并行操作能力与数组多路通道相同。

        

    7.3 I/O软件的特点及结构

        I/O软件分四个层次:中断处理程序、设备驱动程序、与设备无关的操作系统软件、用户级软件

        7.3.1 设备驱动程序

            1、设备驱动程序的特点

                与I/O设备的硬件结构密切联系

            2、设备驱动程序的结构

                设备驱动程序的结构同I/O设备的硬件特性有关。

                采用通用的设备驱动程序,还是采用专用的设备驱动程序,取决于用户在这台I/O设备上追求的目标。

 

            3、设备驱动程序的工作过程

                驱动程序将向控制器的设备寄存器中写入这些命令。

                控制命令发出后有两种可能:

1、驱动程序等待控制器完成一些操作,所以驱动程序阻塞,直到中断

                信号到达才解除阻塞。

2、操作没有任何延迟,所以驱动程序无需阻塞。

                

        7.3.2 与设备无关的系统软件

            1、统一命名

            2、设备保护

            3、提供与设备无关的逻辑块

            4、缓冲

            5、存储设备的块分配

            6、独占设备的分配和释放

            7、出错处理

 

        7.3.3 用户空间的I/O软件

            并非所有的用户层I/O软件是库函数组成。

    7.4 典型的I/O技术

        7.4.1 缓冲技术

            1、缓冲技术的引入

            2、缓冲区的设置与管理

        7.4.2 设备分配技术

            1、设备分配算法的数据结构

                数据结构有四张表:系统设备表SDT、设备控制表DCT、控制器控制表COCT和通道控制表CHCT先来先服务,也可按优先级

            2、设备分配的原则

                一方面:充分发挥设备的使用效率

                另一方面:避免不合理的分配方式造成死锁、系统工作

                1)、考虑设备的特性和安全性

                2)、设备分配策略

                    先来先服务策略

                    高优先级优先策略                

 

            3、独占设备的分配

            4、共享设备的分配

                若干个进程同时共享的设备

            5、虚拟设备

                申请到独占设备的进程在其整个运行期间虽然占有设备,

                利用率却非常低,设备还经常处于空闲状态。

    7.5 I/O性能问题及解决方案小结

        1)、通过应用缓冲技术,减少或缓解不同设备之间传输速度的差距

        2)、通过应用异步I/O技术,使CPU计算不必等待I/O操作结果

        3)、通过应用DMA和通道部件,使CPU摆脱I/O操作,与这些部件并行执行

        4)、通过应用虚拟设备技术,提高独占设备的利用率

 

 

第8章 死锁

    8.1死锁基本概念

        8.1.1 死锁的概念

            1、死锁

                在多道程序系统中,一组进程中的每一个进程均无限期地等待被该组进程中的

                另一个进程所占有且永远不会释放的资源。

            2、活锁与饥饿

                如果进入临界区互斥的时间很短,而阻塞等待的时间开销很大,那么在某种情形下,可采用轮询原语进入临界区或存取资源。

 

                如果进程A先运行并得到资源1,然后进程2运行且得到资源2,以后不管哪一个进程运行,都不会有任何进展,但是哪一个进程也没有被阻塞。两个进程总是一再消耗完分配给他们的时间片,但是没有进展也没有阻塞。没有出现死锁现象(因为没有进程阻塞),但是从现象上看,好像死锁发生了,这就是活锁。

        8.1.2 死锁产生的原因

        一是:竞争资源,系统提供的资源数量有限,不能满足每个进程的需求

        二是:多道程序运行时,进程推进顺序不合理

            1、资源的概念

                资源是若干进程因使用资源不当而造成的现象。

                永久性资源:指系统中可供进程重复使用、长期存在的资源。

                临时性资源:指由某个进程所产生、只为另一个进程使用一次或经过短暂时间后便不再使用的资源。

            2、死锁的例子

                1、申请不同类资源产生死锁

                2、申请同类资源产生死锁

                3、P、V操作使用不当产生死锁

                4、对临时性资源的使用不加限制

        8.1.3 产生死锁的必要条件

            1)、互斥条件

                资源是独占的且排他使用

 

            2)、不可剥夺条件

                进程所获得的资源在未使用完毕之前,不能被其他进程强行剥夺,而只能由获得该资源的进程资

                源释放。

 

            3)、请求和保持条件

                进程每次申请它所需要的一部分资源,在申请资源的同时,继续占用已分配的资源

 

            4)、循环等待条件

                环路中每一个进程已占有的资源同时被另一个进程所申请,前一个进程占有后一个进程所请求的资源

 

        8.1.4 解决死锁的方法

            一种方式是忽视它(鸵鸟算法),另一种是通过各种手段解决死锁的问题。

 

            1)、预防死锁

                通过设置严格的限制,破坏产生死锁的条件以防止死锁的发生。

 

            2)、避免死锁

                资源的动态分配中,采取某种方法防止系统进入不安全状态,从而避免死锁的产生。

 

            3)、检测死锁

                通过系统中设置检测机构,及时检测死锁是否发生,精确的确定与死锁有关的进程与资源,然后采取措施解除死锁。

 

            4)、解除死锁

                与死锁检测相配套的措施,用于进程从死锁状态下解脱出来。

    8.2 死锁的预防

        8.2.1 破坏“互斥条件”

            可以采用(SPOOLing)技术,允许若干个进程同时产生输出

 

        8.2.2 破坏“不可剥夺”条件

            在允许进程动态申请资源的前提下:

            一个进程在申请新资源的要求不能立即得到满足是便处于等待状态,而一个处等待状态的进程的全部资源可以被剥夺。

 

        8.2.3 破坏“请求和保持”条件

            静态资源策略:

                每一个进程必须在开始执行前就申请它所需要的全部资源,仅当系统能满足进程的资源申请要求且把资源一次性分配给进程后,该进程才能开始执行。

            第二种方法:

                仅当进程没有占用资源时才允许它去申请资源,如果进程已经占用了某些资源而又要申请资源,

                则它应先归还所占的资源后再申请资源。

 

        8.2.4 破坏“循环等待”条件

            

            将系统中所有资源顺序编号,一般原则是,较为紧缺、稀少的资源的编号较大。进程申请资源时,必须严格按照编号的顺序进行,否则系统不予分配。(一个进程只有得到编号小的资源,才能申请编号大的资源;释放资源是,按编号递减的次序进行)

 

    8.3 死锁的避免

        几种死锁预防策略总体上是增加了较强的限制条件,从而实现较为简单,但影响了系统性能。

        死锁避免和死锁预防:

            死锁预防是设法至少破坏产生死锁的四个必要条件之一,严格地防止死锁的出现。

            死锁避免不那么严格地限制产生死锁的必要条件的存在,(即使死锁的必要条件存在,也不一定产生死锁)

 

        8.3.1 安全与不安全状态

            如果操作系统能保证所有的进程在有限时间内得到所需的全部资源,则称系统处于“安全状态”,否则说系统是不安全的。

 

        8.3.2 银行家算法

            是通过动态地检测系统中资源分配情况和进程对资源的需求情况来决定如何分配资源的,在能确保系统处于安全状态是才把资源分配格申请者,从而避免系统发生死锁。

 

            银行家算法要求每类资源的数量是固定不变的,而且必须事先知道资源的最大需求量,这难以做到。

            不安全状态并非一定是死锁状态,如果一个进程申请的资源当前是可用的,但该进程必须等待,这样资源的利用率下降。

            

 

    8.4 死锁检测与解除

        死锁预防和死锁避免:是以牺牲系统效率和浪费资源为代价的。

 

        如果操作系统允许死锁发生,一旦发生死锁,则采用专门的措施解除死锁,并以最小代价使整个系统恢复正常,

        这就是死锁检测和解除。

 

        8.4.1 死锁检测

            

        8.4.2 死锁解除

            实质上:如何让释放资源的进程能够继续运行。

                1)、选择一个牺牲进程,即要剥夺那个进程的那些资源?

                2)、重新运行或回退到抹一点开始继续运行。

                3)、怎样保证不发生“饿死”现象(不总是剥夺同一进程的资源)

                4)、最小代价

            1、剥夺资源

                1)、还原算法(恢复计算结果和状态)

                2)、建立检查点,主要是用来恢复分配前的状态

                

            2、撤销进程

                1)、进程优先数

                2)、进程类的外部代价

                3)、运行代价,即重新启动进程并运行到当前撤销点所需要的代价

    8.5 资源分配图

        8.5.1 死锁的表示---资源分配图

        8.5.2 死锁判定法则

        8.5.3 资源分配图化简法

 

 

 

 

 

            

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  操作系统