操作系统期末复习(包括练习题)

《操作系统》期末复习指导(2023年12月)

  1. 操作系统引论

学习重点:

  1. 什么是操作系统

操作系统是控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行的系统软件(或程序集合),是用户与计算机之间的接口。它是配置在计算机上的第一层软件,是对硬件功能的首次扩充。

  1. 操作系统的目标:

    以一种有效的方式使用资源(有效性--系统管理人员的观点)。

使计算机系统更易于使用(方便性--用户的观点)。

采用新的OS结构,易于功能的增、删、改(可扩充性)。

要求统一开放的环境,各种类型的计算机硬件系统,出自不同的厂家,能通过网络集成并能够正确、有效地协同工作,实现应用程序的移植(开放性)。

  1. 操作系统在计算机系统中处于硬件层之上,应用软件层之下(是其他软件的共同环境)。其作用是:

(1)用户与计算机硬件系统之间的接口(用户通过操作系统提供的命令方式 系统调用方式 图形、窗口方式使用计算机);

(2)计算机系统资源的管理者(资源状态、分配、回收、访问);

  1. 扩充机器(实现了对于计算机资源的抽象)。
  1. 操作系统的发展过程
  1. 无操作系统的计算机系统

人工操作方式(穿孔)、脱机输入、输出方式

  1. 单道批处理系统
  2. 多道批处理系统
  3. 分时系统
  4. 实时系统
  5. 微机操作系统(配置在微型机上的操作系统)
  6. 多处理机操作系统
  7. 网络操作系统
  8. 分布式操作系统
  1. 操作系统的主要功能

处理机管理:主要是对处理机的分配和运行进行管理。

主要功能:作业和进程调度、进程控制和进程通信;

存储器管理:内存分配、地址映射、内存保护和内存扩充;

设备管理:缓冲区管理、设备分配、设备驱动和设备无关性;

文件管理:文件存储空间的管理、文件操作的一般管理、目录管理、文件的读写管理和存取控制、文件的逻辑结构和物理结构。

用户接口功能:命令接口、图形接口和系统调用接口;

  1. 操作系统的基本特征(2个最基本的特征是并发和共享,它俩互为存在条件):

a.并发:两个或多个活动在同一给定的时间间隔内进行;(最重要的特征,其他特征均以并发为前提)

宏观上:多道程序同时在执行

    微观上:任何时刻只有一道程序在执行,即微观上多道程序在CPU上轮流(交替)执行(单机)

并行:与并发类似,只多道程序在同一时刻执行,但需多个硬件支持

b.共享:计算机系统中的资源被多个任务所共用。(互斥共享方式,同时访问方式)

c.虚拟:通过某种技术把一个物理实体映射为若干个对应的逻辑实体——分时(时分复用技术)或分空间(空分复用技术)。

处理机、虚拟内存、虚拟外设等。——提供资源利用率

d.异步:多道程序下,各程序的执行过程由程序执行时的现场决定。

  1. 三种基本类型的操作系统:

批处理系统:用户作业成批的处理,作业建立、过渡、完成都自动由系统成批完成,且在计算机内存中同时存放几道相互独立的程序,使它们在管理程序的控制下,相互穿插运行。

分时系统:在一台主机上连接了多个配有显示器和键盘的终端并由此组成的系统,该系统允许多个用户同时通过自己的终端,以交互方式使用计算机,共享主机中的资源。UNIX是分时操作系统。(多路性、独立性、及时性、交互性)

实时系统:计算机对于外来信息能够以足够快的速度进行处理,并在被控对象允许的时间范围内做出快速反应。(多路性、独立性、及时性、交互性、可靠性)

  1. 分时概念:分时主要指若干并发进程对CPU时间的共享。
  2. 通用操作系统:兼备了批处理、分时和实时操作系统三者或其中二者的功能的操作系统。
  3. 现代操作系统的三种用户接口:命令接口、图形接口和系统调用接口。
  4. 操作系统的结构设计:

无结构OS

模块化结构OS

分层式结构OS

微内核结构OS——客户/服务机模式

例题:

1.

2.实现分时系统的关键问题是使用户能与自己的作业交互

  1. 进程管理

学习重点:

  1. 前驱图:有向无循环图
  2. 程序的顺序执行(顺序性、封闭性、可再现性)

程序的并发执行(间断性、失去封闭性、不可再现性)

  1. 程序并发执行的条件

  1. 什么是进程,进程与程序的区别和关系:

进程:进程是可以和别的计算并发执行的计算;

进程是程序的一次执行,是在给定内存区域中的一组指令序列的执行过程;

进程是一个程序在给定活动空间和初始条件下在一个处理机上的执行过程;

进程可定义为一个数据结构和能在其上进行操作的一个程序;

进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

进程与程序的区别:

  • 程序是静态概念,而进程是程序的一次执行过程,是动态概念。程序的存在是永的,而进程是有生命期
  • 进程是一个能独立运行的单位,能与其它进程并发执行。进程是作为申请和调度单位存在的;而通常的程序是不能作为一个独立运行的单位而并发执行的。             
  • 程序和进程无一一对应关系。一个程序可对应多个进程,一个进程可对应多个程序。
  • 各个进程在并发执行过程中会产生相互制约关系,而程序本身是静态的,不存在这种异步特征。
  • 程序仅是指令的有序集合。而进程则由程序段、相关数据段、进程控制块(PCB)组成。
  1. 进程的两个基本属性可拥有资源的独立单位、可独立调度和分派的基本单位。
  2. 进程的特征:动态性、并发性、独立性、异步性、结构特征。
  3. 进程的基本状态及其变化:

两种短暂的状态:new新状态和terminated终止状态;

三种基本状态: 运行态:当前进程已分配到CPU,它的程序正在处理机上运行;

就绪态:进程已具备运行条件,但因为其它进程正占用CPU,所以暂时不能运行而等待分配CPU的状态;

阻塞态:因等待某件事件发生而暂时不能运行的状态。

就绪→运行:被调度程序选中,分配到CPU。

运行→阻塞:因缺乏某种条件而放弃对CPU的占用。

阻塞→就绪:阻塞态进程所等待的事件发生了。

运行→就绪: 进程用完时间片(分时系统中)或一个优先权更高的进程进入就绪队列(“优先权高优先”调度算法中)。

  1. 某些操作系统中引入的进程的挂起状态(静止状态)-- 挂起就绪、挂起阻塞。

引入挂起状态的原因:终端用户的需要、父进程的需要、操作系统的需要、对换的需要、负荷调节的需要

  1. 进程由哪些部分组成

进程控制块(PCB)的作用:进程由程序段、相关数据段和PCB组成;PCB 是进程实体的一部分,是操作系统中最重要的记录型数据结构

作用是使一个在多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位,成为能与其它进程并发执行的进程。OS是根据PCB对并发执行的进程进行控制和管理的。进程控制块是进程组成中最关键的部分,每个进程有唯一的PCB,操作系统根据PCB对进程实施控制和管理,PCB是进程存在的唯一标志

PCB通常包含以下信息:进程标识符、处理机状态(断点信息)、进程调度、进程控制

PCB的组织方式通常有链接方式(队列)、索引方式(索引表)

  1. 进程的控制包括进程的创建、进程的撤消、进程的阻塞与唤醒,一般都是由操作系统的内核完成的
  2. 为了防止OS及其关键数据(如PCB等)不被用户有意或无意破坏,通常将处理机的执行状态分为两种:

处理机状态

特权(执行指令,访问)

程序

系统态(核心态、管态)

较高(一切指令,所有寄存器及存储区)

OS内核

用户态(目态)

较低(规定指令,指定寄存器及存储区)

用户程序或系统外层的应用程序

会导致用户进程从用户态切换到内核态的操作:(1)整数除以 0 (2)read 系统调用

  1. 进程的创建(创建原语create())

引起进程创建的事件:用户登录、作业调度、提供服务、应用请求

进程的撤销

引起进程撤销的事件:进程正常结束、进程异常结束、外界干预

进程的阻塞block()与唤醒wakeup()

引起阻塞和唤醒的事件:请求系统服务、启动某种操作、新数据尚未到达、无新工作可做

进程的挂起suspend()与激活active()

引起进程挂起和激活的事件:见8引起挂起状态的原因

  1. 进程的切换(处理机从一个进程转到另一个进程),可能引起进程切换的时机(进程运行结束;进程从运行态变为就绪态;进程从运行态变为等待态;进程从等待态变为就绪态)。
  2. 并发进程间两种相互制约关系:

进程的同步(直接制约关系—进程合作)与互斥(间接制约关系—资源共享):

进程的同步:进程间共同完成一项任务时直接发生相互作用的关系;

进程的互斥:两个逻辑上本来完全独立的进程由于竞争同一个物理资源而相互制约。

  1. 用于实现同步的机制称为同步机制,如软件和硬件的方法、信号量机制、管程机制
  2. 多道程序设计概念: 多道程序设计是在一台计算机上同时运行两个或更多个程序,多道程序设计具有提高系统资源利用率和增加作业吞吐量的优点。
  3. 线程:什么是线程?有哪几种基本状态?为什么要在操作系统中引入线程?

线程是进程中的一个实体,是被系统独立调度和分派的基本单位。线程基本上自己不拥有系统资源,只拥有少部分在运行中必不可少的资源,但它可与同属一个进程中的其它线程共享进程所拥有的全部资源。

引入进程:为了使程序能够正确的并发执行,以提高资源利用率和系统吞吐量

引入线程:为了减小并发执行的时空开销尽可能使OS具有更好的并发性

  1. 线程的属性

是一种轻型进程;

是系统独立调度和分派的基本单位;可并发执行;共享所属进程所拥有的资源。

  1. 线程是调度的基本单位(即是分配CPU的基本单位)

进程是系统进行资源分配的基本单位。

  1. 什么是临界资源、临界区:

临界资源:一次仅允许一个进程使用的共享资源;(打印机、绘图机)

临界区:每个进程访问临界资源的那段程序。

访问临界资源:

  1. 进程同步机制应遵循的准则:空闲让进、忙则等待、有限等待、让权等待

  1. 进程同步的机制:信号量机制

(整形信号量、记录型信号量、AND型信号量、一般信号量集)

互斥信号量:初值为1;

资源信号量:初值为资源的数目;

  1. 整形信号量:非负整数,除了初始化(即赋初值:必须置一次且只能置一次初值,初值不能为负数)外,只能通过两个原子操作wait和signal(或者叫P、V操作)来访问(即信号量的值仅能由这两个原子操作来改变 )

  1. 记录型信号量:

设置一个代表资源数目的整型变量value(资源信号量)

设置一链表L用于链接所有等待访问同一资源的等待进程

  • 记录型信号量的数据结构

     Type semaphore=record

                      value:integer;

                      L: list of process;

                    end

     Var  S: semaphore;

S.value的初值表示系统中某类资源的数目。

S.value的初值为1,S为互斥信号量;

S.value的初值大于1,S为资源信号量。

  1. 信号量的应用

利用信号量实现进程互斥

为使多个进程能互斥地访问某个临界资源,只需为该资源设置一互斥信号量,并将其初值置为1,然后将访问该资源的临界区置于waitmutex)和signalmutex之间。

利用信号量描述前驱关系

  1. 进程同步的机制:管程机制---管程由哪几部分组成,为什么要引入条件变量?

管程:管程名称、局部于管程的共享数据结构说明、对该数据结构进行操作的一组操作过程初始化代码

管程定义的是公用数据结构,而进程定义的是私有数据结构PCB;

管程把共享变量上的同步操作集中起来,而临界区却分散在每个进程中;

管程是为管理共享资源而建立的,进程主要是为占有系统资源和实现系统并发性而引入的;

管程是被要使用共享资源的进程所调用的,管程和调用它的进程不能并发工作,而进程之间能并发工作,并发性是进程的固有特性;

管程是OS中一个资源管理模块,供进程调用;而进程有生命周期,由创建而产生、由撤销而消亡

条件变量:

(条件变量的类型是condition,是指向等待该条件的PCB的指针),当一个进程调用了管程,又因为某些原因被阻塞或挂起,在此期间如果不释放管程,其他进程也无法进入管程,被迫忙等。为解决这个问题,引入条件变量,每个条件变量可以保存一个链表,记录因该条件变量而阻塞的所有进程,阻塞时可将管程释放给其他进程使用,当条件满足时再将阻塞进程唤醒,使用管程。

  1. 三个经典的进程同步问题:生产者-消费者问题(能否将消费者进程的wait(full)和wait(mutex)语句互换,为什么?)、哲学家进餐问题(不出现死锁)、读者-写者问题。能够使用信号量及PV操作解决进程的同步问题。

生产者-消费者问题(相互合作进程的抽象:输入进程与计算进程、计算进程与打印进程)

(1)一个生产者,一个消费者,共用一个缓冲区

定义两个同步信号量

empty——表示缓冲区是否为空,初值为n

full——表示缓冲区中是否为满,初值为0

(2)M个生产者,K个消费者,公用有n个缓冲区的缓冲池

设置两个同步信号量及一个互斥信号量

empty:说明空缓冲区的数目,其初值为缓冲池的大小n,表示消费者已把缓冲池中全部产品取走,有n个空缓冲区可用。

full:说明满缓冲区的数目(即产品数目),其初值为0,表示生产者尚未把产品放入缓冲池,有0个满缓冲区可用。

mutex:  说明该缓冲池是一临界资源,必须互斥使用,其初值为1

mutex = 1: 表示资源(临界区)当前是可用的,没有其他线程在使用它。

mutex = 0: 表示资源(临界区)当前已被某个线程占用,其他线程需要等待。

代码:

semaphore full=0;   /*表示满缓冲区的数量*/

semaphore empty=n;  /*表示空缓冲区的数量*/

semaphore mutex=1;  /*表示对缓冲池进行操作的互斥信号量*/

main()

{

  cobegin

    producer();     /*启动生产者进程*/

    consumer();     /*启动消费者进程*/

  coend

}

producer()

{

  while(true)

  {

    生产一个产品放入nextp;  /*生产一个产品,并将其放入nextp*/

    P(empty);               /*等待空缓冲区,如果没有空缓冲区则阻塞*/

    P(mutex);               /*互斥地访问缓冲池*/

    Buffer[in] = nextp;     /*将产品放入缓冲区*/

    in = (in + 1) mod n;    /*更新缓冲区的写指针*/

    V(mutex);               /*释放对缓冲池的互斥访问*/

    V(full);                /*增加满缓冲区的数量,表示有新的产品可消费*/

  }

}

consumer()

{

  while(true)

  {

    P(full);               /*等待满缓冲区,如果没有满缓冲区则阻塞*/

    P(mutex);              /*互斥地访问缓冲池*/

    nextc = Buffer[out];   /*从缓冲区中取出一个产品*/

    out = (out + 1) mod n;  /*更新缓冲区的读指针*/

    V(mutex);              /*释放对缓冲池的互斥访问*/

    V(empty);              /*增加空缓冲区的数量,表示有新的空间可供生产者放入产品*/

    消费nextc中的产品;     /*消费从缓冲区中取出的产品*/

  }

}

PS:

1. 互斥信号量的P、V操作在每一进程中必须成对出现。

2. 对资源信号量(full,empty)的P、V操作也必须成对出现,但可分别处于不同的程序中。

3. 多个P操作顺序不能颠倒,V操作顺序可以颠倒,它只是改变临界资源的释放次序

4. 先执行资源信号量的P操作,再执行互斥信号量的P操作,否则可能引起进程死锁。

5. 它是一个同步问题:

   (1)消费者想要取产品,缓冲池中至少有一个缓冲区是满的。

   (2)生产者想要放产品,缓冲池中至少有一个缓冲区是空的。

6. 它是一互斥问题

     缓冲池是临界资源,因此,各生产者进程和各消费者进程必须互斥访问。

可以用用管程机制解决生产者-消费者问题

哲学家进餐问题(可以看作是并发进程并发执行时,处理共享资源的一个有代表性的问题)

1、此算法可以保证不会有相邻的两位哲学家同时进餐

2、若五位哲学家同时饥饿而各自拿起了左边的筷子,这使五个信号量stick均为0,当他们试图去拿起右边的筷子时,都将因无筷子而无限期地等待下去,即可能会引起死锁

死锁的解决:

  1. 至多允许四个哲学家同时进餐

while(true)

{

    wait(Sm);                             // 等待可以进餐的信号

    wait(stick[i]);                       // 等待拿起左边的叉子的信号

    wait(stick[(i+1) mod 5]);             // 等待拿起右边的叉子的信号

    // 进餐

    eat;

    // 放下叉子,释放资源

    signal(stick[i]);                     // 放下左边的叉子

    signal(stick[(i+1) mod 5]);           // 放下右边的叉子

    signal(Sm);                           // 释放可以进餐的信号

    // 思考

    think;

}

  1. 奇数号先取左手边的筷子,偶数号先取右手边的筷子

  1. 每个哲学家取到手边的两只筷子才进餐,否则一只筷子也不取

    读者-写者问题(当有读者进程读文件时,不允许任何写者进程写,但允许多个读者同时读;当有写者进程写时,不允许任何其它写者进程写,也不允许任何读者进程读)

设置一个共享变量和两个信号量:

共享变量readcount:记录当前正在读数据集的读进程数目,初值为0。

读互斥信号量rmutex :表示读进程互斥地访问共享变量readcount,初值为1.

写互斥信号量wmutex:表示写进程与其它进程(读、写)互斥地访问数据集,初值为1.

semaphore rmutex = 1;  // 读者互斥信号量

semaphore wmutex = 1;  // 写者互斥信号量

int readcount = 0;     // 读者计数器

main()

{

  cobegin

    reader();

    writer();

  coend

}

reader()

{

  while (true)

  {

    P(rmutex);          // 获取读者互斥信号量

    if (readcount == 0)

      P(wmutex);        // 第一位读者阻止写者

    readcount++;

    V(rmutex);          // 释放读者互斥信号量

    // 读数据集

    P(rmutex);          // 获取读者互斥信号量

    readcount--;

    if (readcount == 0)

      V(wmutex);        // 最后一位读者允许写者进

    V(rmutex);          // 释放读者互斥信号量

  }

}

writer()

{

  while (true)

  {

    P(wmutex);          // 阻止其它进程(读、写)

    // 写数据集

    V(wmutex);          // 允许其它进程(读、写)

  }

}

由于只要有一个读者在读,其余读者便无需等待而可直接进行读操作,因此,仅当readcount=0,即尚无其他读者在读时,读者进程才需要执行P(mutex)操作,而写者必须与任意其他进程互斥,故每次写操作之前都必须进行P(wmutex)操作

如果增加一个限制条件:最多只允许RN个读者同时读(利用信号量集机制解决)

  1. 进程通信—四类高级通信机制:

共享存储器系统:数据结构/存储区

消息传递系统(以格式化的消息为单位):直接通信方式(通信命令、原语)和间接通信方式(信箱,共享中间实体)

管道通信系统:pipe共享文件,字符流形式传输

客户机-服务器系统

  1. 进程同步的例题(多看看习题集中的相关例题):

例1(生产者-消费者问题)

  父亲Father、女儿Daughter、儿子Son互斥使用一个包含20个格子的容器。Father每次取一个水果(苹果或香蕉),用putfruit()把水果送入容器的某一个空格子中;Daughter每次用getapple()从该容器中取出一个苹果并用countapple()统计苹果的个数;Son每次用getbanana()从该容器中取出一个香蕉并用countbanana()统计香蕉的个数。请用信号量机制实现三者的同步与互斥活动。

参考答案:

semaphore mutex = 1;    // 用于对共享资源(容器)进行互斥访问的信号量

semaphore apple = 0;    // 用于同步父亲和女儿的信号量,表示容器中有苹果

semaphore banana = 0;   // 用于同步父亲和儿子的信号量,表示容器中有香蕉

semaphore empty = 20;    // 表示容器中空格子的数量,初始为20

main()

{

  cobegin

  {

    // 进程Father:

    while(true)

    {

      取水果;

      P(empty);           // 等待空格子

      P(mutex);           // 进入临界区,对容器进行操作

      putfruit();         // 将水果放入容器

      V(mutex);           // 退出临界区

      if (水果是苹果) V(apple);  // 通知女儿容器中有苹果

      else V(banana);             // 通知儿子容器中有香蕉

    }

    // 进程Daughter:

    while(true)

    {

      P(apple);           // 等待容器中有苹果

      P(mutex);           // 进入临界区,对容器进行操作

      getapple();         // 从容器中取出苹果

      V(mutex);           // 退出临界区

      V(empty);           // 通知容器空格子数增加

      countapple();       // 统计苹果的个数

    }

    // 进程Son:

    while(true)

    {

      P(banana);          // 等待容器中有香蕉

      P(mutex);           // 进入临界区,对容器进行操作

      getbanana();        // 从容器中取出香蕉

      V(mutex);           // 退出临界区

      V(empty);           // 通知容器空格子数增加

      countbanana();      // 统计香蕉的个数

    }

  }

  coend.

}

例2  (生产者-消费者问题)

某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用。水缸可容10桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为3个。每次入、取缸水仅为1桶,且不可以同时进行。试用P、V操作给出小和尚、老和尚动作的算法描述。

分析:

      小和尚从井中取水并向缸中倒水为一个进程,而老和尚从缸中取水为另一个进程。

      有关互斥的资源有:

      水井(一次仅允许一个水桶进出);

      水缸(一次倒水、取水仅一个水桶)。

      分别为它们设置信号量mutex1、mutex2来实现互斥,初值均为1。

有关同步的问题是:

      3个水桶----无论是从井中取水还是倒水入缸或取水出缸都是一次一个,即为其设置信号量count,初值为3,抢不到水桶的进程只好等待。

      此外,设置信号量empty来控制入缸的水量,初值为10,当水缸满时不可入水;设置信号full控制出缸的水量,初值为0,当水缸空时不可出水。

参考答案:

Begin

    mutex1 := 1;  // 用于互斥使用水井

    mutex2 := 1;  // 用于互斥使用水缸

    empty := 10;  // 初始时水缸是空的

    full := 0;    // 初始时水缸中没有水

    count := 3;   // 初始时有3个水桶

    Cobegin

        小和尚i(i=1,2,…)打水;

        老和尚j(j=1,2,…)取水;

    Coend;

End.

小和尚i(i=1,2,…)打水:

Begin

    Repeat

        P(empty);       // 看水缸是否满,满则阻塞打水进程

        P(count);       // 申请打水的桶

        P(mutex1);      // 互斥使用水井,不允许两和尚同时打水

        从井中取水;

        V(mutex1);

        P(mutex2);      // 互斥使用水缸

        送水入缸;

        V(mutex2);

        V(count);       // 归还水桶

        V(full);        // 水缸中又多了一桶水

    Until false

End;

老和尚j(j=1,2,…)取水:

Begin

    Repeat

        P(full);   // 看水缸是否有水,无水则阻塞取水进程

        P(count);  // 申请取水的桶

        P(mutex2); // 互斥使用水缸

        从缸中取水;

        V(mutex2);

        V(count);  // 归还水桶

        V(empty);  // 缸中少了一桶水

    Until false

End.

例3  柜员与顾客问题(生产者-消费者问题)

c5c575ec382c360a65cb118d4cdc638

例5  学生与监考老师问题(读者写者问题)

f71d10f900a46b92bbade8a0f3305cf

1a0da3f5cd02161fa57a9dee8c957e5

312282caa1b66ecbe466df9fcf2f32c

如果是存在同步现象,为了避免两个同类进程同时修改同一变量,需要加上互斥锁。

本题ready变量可以省去,只用while(count!=0)、while(count!=N)表示

  1. 处理机调度与死锁

学习重点:

1、作业及作业的状态:

提交状态、后备状态、运行状态、完成状态。

2、三级调度:

作业调度(高级调度):用于决定把外存上处于后备队列中的哪些作业调入内存,并为它们创建进程、分配必要的资源,排在就绪队列上;在批处理系统中,大多配有作业调度,但在分时系统及实时系统中,一般不配置;作业调度执行频率很低,通常为几分钟一次,甚至更久。

内存调度(中级调度):引入中级调度的原因是为了提高内存利用率和系统吞吐量,引入了中级调度。

进程调度(低级调度):从就绪队列中选择一个进程来执行并分配处理机

3、进程调度的两种方式:

抢占式调度、非抢占式调度(剥夺式调度和非剥夺式调度)。

4、调度算法:会用下面前5种调度算法计算作业调度次序和作业的平均周转时间、平均带权周转时间。(注意若特别指出:全部到达就绪队列后开始调度,或者没有特别指出;二者不同)

一些相关公式:

    1. 先来先服务调度法(FCFS)

    1. 短作业/短进程优先调度算法(SJF/SPF,分为剥夺式和非剥夺式,剥夺式短进程优先调度算法又叫最短剩余时间优先调度算法SRT)

SJ(P)F非抢占式

SJ(P)F抢占式

    1. 时间片轮转调度法(RR)

时间片太长—FCFS;太短——上下文切换频繁

    1. 高优先权优先调度算法

静态优先权,越小优先级越高

动态优先权,根据进程占有CPU时间多少/等待CPU时间多少来确定

    1. 高响应比优先调度算法(HRRN)(FCFS&SJF折衷算法)

Rp越高越先获得CPU

例如,以下四个作业先后到达系统进入调度:

   作业名   到达时间  所需CPU时间(服务时间)

    P1                0                20

    P2                5                15

    P3               10                       5

    P4               15                10

高响应比优先调度算法

    1. 开始只有P1,被选中,执行时间20P1的周转时间为20
    2. P1执行完毕,P2P3P4的响应比依次为1+15/151+10/51+5/10P3被选中,执行时间5P3的周转时间为25-10=15
    3. P3执行完毕,P2P4的响应比依次为1+20/151+10/10P2被选中,执行时间15P2的周转时间为40-5=35
    4. P2执行完毕,P4被选中,执行时间10P4的周转时间为50-15=35

平均周转时间 = (20+15+35+35)/4 = 26.25

平均带权周转时间 = (20/20+15/5+35/15+35/10)/4 = 2.42

    1. 多级反馈队列调度算法为什么说多级反馈队列调度算法能较好地满足各方面用户的需求?P104

5、RR调度算法中时间片的确定

时间片应略大于一次典型的交互需要的时间

一般考虑三个因素:系统对相应时间的要求、就绪队列中进程的数目和系统的处理能力。

6、评价调度算法的指标:

吞吐量、周转时间、平均周转时间、平均等待时间、带权周转时间和平均带权周转时间

7、什么是死锁,产生死锁的原因和四个必要条件。

多个进程在运行过程中等待被其他进程占用而不能被释放的资源,这种因争夺资源而造成的一种僵局,称为死锁

产生死锁的原因:系统资源不足、进程推进顺序不当

四个必要条件

互斥条件(资源独占条件)

请求和保持条件(忙等,部分分配条件)

不可抢占资源(不剥夺条件)

循环等待条件(环路条件)

8、处理死锁的四种方法:

预防死锁:设置限制条件,破坏产生死锁的3个必要条件(互斥条件不能破坏)

避免死锁:防止系统进入不安全状态,银行家算法

检测死锁:资源分配图

解除死锁:剥夺(回收)资源,终止(撤销)进程

9、死锁预防的基本思想和可行的解决办法

从产生死锁的四个必要条件出发,去破坏第2、3、4个必要条件:

采用预先静态分配方法破坏请求和保持条件;

破坏不可剥夺条件;

采用资源按序分配策略来破坏环路等待;

10、什么是进程的安全序列,死锁与安全序列的关系,安全状态、不安全状态和死锁状态之间的关系。

    指在某一时刻,系统能按某种进程顺序(P1,P2,…,Pn)来为每个进程Pi分配其资源,直到满足每个进程对资源的最大需求,使每个进程都可顺利地完成,称此时的系统状态为安全状态,称序列(P1,P2,…,Pn)为安全序列。

    若某一时刻系统中不存在这样一个安全序列,则称此时的系统状态为不安全状态。

当系统处于安全状态时,可以避免发生死锁;反之,当系统处于不安全状态时,可能进入死锁。

一旦系统进入死锁状态,系统一定是不安全的。

11、死锁避免与银行家算法

避免死锁的实质在于:系统在进行资源分配的时候,应使系统始终处于安全状态

会用银行家算法判断某一时刻系统状态是否安全以及当某进程提出资源请求时能否分配(当一个进程提出的资源请求将导致系统从安全状态进入不安全状态时,系统就拒绝它的资源请求,让它等待)。

具有代表性的避免死锁算法,是Dijkstra给出的银行家算法,为实现银行家算法,系统中必须设置若干数据结构。假定系统中有n个进程(P1,P2,…,Pn),m类资源(R1,R2,…,Rm),银行家算法中使用的数据结构如下:

可利用资源向量:available[j]=k, 资源Rj类有k个可用

最大需求矩阵:Max[i,j]=k,进程Pi最大请求k个Rj类资源

分配矩阵:Allocation[i,j]=k,进程Pi分配到k个Rj类资源

需求矩阵:Need[i,j]=k,进程Pi还需要k个Rj类资源

三个矩阵的关系:

Need [i,j] = Max[i,j] – Allocation [i,j].

资源分配算法:

设Requesti是进程Pi的请求向量,设Requesti [j] =k,表示进程Pi请求分配Rj类资源k个。当进程Pi 发出资源请求后,系统按如下步骤进行检查:

(1)如Requesti[j]≤Need[i,j],转(2);否则出错,因为进程申请资源量超过它声明的最大量。

(2)如Requesti[j] ≤Available[j],转(3);否则表示资源不够,需等待。

(3)系统试分配资源给进程Pi,并作如下修改:

Available[j]:= Available[j]- Requesti[j]

Allocation[i,j]:= Allocation[i,j]+ Requesti[j]

Need[i,j]:= Need[i,j]- Requesti[j]

(4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,则正式进行分配,否则恢复原状态,让进程Pi等待。

安全性检查:

为了进行安全性检查,需要定义如下数据结构:

int Work[m]   工作变量,记录可用资源。开始时, Work:= Available

boolean Finish[n]  工作变量,记录进程是否执行完。开始时, Finish[i]=false;当有足够资源分配给进程Pi时,令Finish[i]=true。

安全性检查算法:

(1)  Work := Available

     Finish[i] := false

(2)寻找满足如下条件的进程Pi

Finish [i] = false 并且 Need[i,j] £ Work

如果找到,转(3),否则转(4)

(3)当进程Pi获得资源后,可顺利执行完,并释放分配给它的资源 ,故执行:

         Work := Work + Allocation

         Finish[i] := true

    转 (2).

(4)若所有进程的Finish [i] = true ,则表示系统处于安全状态,否则处于不安全状态。

例:

12、死锁的检测和解除

死锁检测:资源分配图(方框和圆圈)——无环路一定不存在死锁(有则不一定)

死锁定理——死锁状态的充分条件是,当且仅当资源分配图是不可化简的(所有进程结点都为孤立结点)

进程结点子集 P = {P1,P2,P3}

资源结点子集 R = {R1,R2,R3,R4}

N=P U R={P1,P2,P3} U {R1,R2,R3, R4}={P1,P2,P3,R1,R2,R3,R4}

E={(R2,P1),(R2,P2),(P1,R1),(R1,P2),(P2,R3),(R3,P3)}

图例:

重要结论:如果资源分配图中不存在环路,则系统中不存在死锁;反之,如果资源分配图中存在环路,则系统中可能存在死锁,也可能不存在死锁。

资源状态图的化简:

可以通过对资源分配图进行化简,来判断系统是否处于死锁状态。资源分配图中的约简方法如下:

  1. 寻找一个既不阻塞(即系统有足够的空闲资源分配给它)又非孤立的进程结点Pi,若无,则算法结束;

  (2)去除Pi的所有分配边和请求边,使Pi成为一个孤立节点;

  (3)转步骤(1)

进行一系列化简后,若能消去图中所有的边,使所有进程都成为孤立结点,则称该图是可完全简化的;反之,称该图是不可完全简化的。

死锁解除:暴力抢占资源,撤销死锁进程以打破循环环路

  1. 存储器管理

学习重点:

1、存储器管理的功能:

内存分配、地址映射、内存保护、内存扩充。

2、内存以字节为单位进行编址,CPU按内存中的地址读出内存中的内容。

3、用户程序在系统中运行的主要阶段:

编辑、编译、链接(三种方式)、装入(三种方式)、运行。

程序的链接:

·静态链接方式:对相对地址进行修改,变换外部调用符号

·装入时动态链接:可分开存放,便于修改更新、实现对目标模块的共享

·运行时动态链接:只将用到的模块调入内存,并链接

程序的装入:

·绝对装入方式:适用于单道程序环境,绝对(物理)地址

·可重定位装入方式:多道程序环境下,地址变换只在装入内存时一次完成,以后不再改变(静态重定位)。

重定位——在装入时 对目标程序中指令和数据的地址进行修改的过程

·动态运行时的装入方式:不在装入时做地址转换,而是到程序运行时才做。因此,装入内存后的所有地址都是逻辑地址。需要重定位寄存器的支持。

4、内存的连续分配方式

单一连续分配方式:单道程序环境下,内存分为系统区(内存低址)和用户区,采用静态分配方式,即作业一旦进入内存,就要等待它运行结束后才能释放内存

固定分区分配方式:多道程序,划分固定大小区域(存储空间浪费)

动态分区分配方式:内存分配和回收(4种情况,按照回收区的位置分配)

分配算法:

·基于顺序搜索的动态分区分配算法

首次适应算法—将空闲分区按地址顺序从小到大登记在空闲分区表中

循环首次适应算法—按地址顺序接上一次往下找

最佳适应算法—将空闲分区按长度大小递增的顺序登记在空闲分区表中

最坏适应算法--将空闲分区按长度大小递减的顺序登记在空闲分区表中

·基于索引搜索的动态分区分配算法

快速适应算法

伙伴系统:多处理机系统中已分配/空闲分区的大小都是2^k(l≤k≤m)

哈希算法(哈希函数)

动态可重定位分区分配方式(采用拼接/紧凑/紧缩的技术)—内部碎片/外部碎片

将内存中所有作业移到内存一端(作业在内存中的位置发生了变化,这就必须对其地址加以修改或变换即称为重定位),使本来分散的多个小空闲分区连成一个大的空闲区。

这种通过移动作业从把多个分散的小分区拼接成一个大分区的方法称为拼接或紧凑或紧缩。——充分利用“零头”

5、分配内存和回收内存

      回收分区与已有空闲分区的相邻情况有以下四种:

6、分区的存储保护:界限寄存器方法、存储保护键方法(锁)

7、内存的离散分配方式

基本分页存储管理方式

基本分段存储管理方式

段页式存储管理方式

8、基本分页存储管理方式:

页面大小由地质结构决定,选择适中,通常为2的幂,一般在512B-8KB之间

页框、页表(页号、块号,页表在内存中,页表功能由一组寄存器完成)

没有快表的情况下访问一条指令或取得一个数据需2访问内存(一次访问页表,一次根据物理地址取得指令或数据)

地址机构

每页的大小由页内地址决定;页号决定地址空间共有多少页

每块的大小由块内地址决定,其与页相等;块号决定地址空间共有多少块,内存空间的大小由b和d决定。

例题:

地址变换机构(能够画出地址变换图、会把逻辑地址转换成物理地址)

实现逻辑地址向物理地址的转换(借助页表来完成)

例题:

地址转换图:

具有快表(联想存储器)的地址变换机构,根据命中率计算数据访问内存的有效时间。

两级和多级页表:

9、基本分段存储管理方式:

    将用户作业的逻辑地址空间划分成若干个大小不等的段(由用户根据逻辑信息的相对完整来划分)。各段有段名(常用段号代替),首地址为0

段(每个段定义了一组逻辑信息)地址结构(二维的,由段号和段内地址组成)

段表(段号、段长、基址)

地址变换机构(能够画出地址变换图、会把逻辑地址转换成物理地址)

访问一条指令或取得一个数据需2次访问内存(一次访问段表,一次根据物理地址取得指令或数据)

分段和分页的区别 P93(物理/逻辑,大小固定/不固定,地址空间一维/二维)

段式存储管理易于实现信息的共享(以段为单位分配一块连续的内存空间,段的长度可以不同,段和段之间可以占用不连续的内存空间)。

10、段页式存储管理方式:

基本原理:段页式存储管理是分段和分页原理的结合,即先将用户程序分成若干个段(段式),并为每一个段赋一个段名,再把每个段分成若干个页(页式)。其地址结构由段号、段内页号、及页内位移三部分所组成。

段表(一个用户进程有一个段表)

页表(用户进程有几段就有几个页表)

地址变换机构(怎样从逻辑地址转换为物理地址?)

先用段号与段寄存器中的段长进行比较,若小于段长则利用段表始址和段号找出该段页表的始址,(否则越界中断), 再用逻辑地址中的段内页号在页表中找到相应的块号,最后与页内位移形成物理地址

访问一条指令或取得一个数据需3次访问内存(一次访问段表,一次访问该段所对应的页表,一次根据物理地址取得指令或数据)。

11虚拟存储器:

定义:具有请求调入功能置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。

虚拟存储器可管理的空间直接取决于处理器中地址寄存器的位数,逻辑容量为内存和外存容量之和,速度接近内存,成本接近外存

特征多次性、对换性、虚拟性

实现方法:分页请求系统、请求分段系统

12、请求分页存储管理:

在基本分页存储管理基础上增加了请求调页功能页面置换功能

必需的硬件支持有:请求分页的页表机制(状态位、访问位、修改位的作用)、缺页中断机构、地址变换机构

页表机制:

缺页中断机制:

地址变换例题:

13、请求分页存储管理中的页面置换算法:

最佳置换算法(OPT):选择永远不再需要的页面或最长时间以后才需要访问的页面予以淘汰

先进先出页面置换算法(FIFO):选择先进入内存的页面予以淘汰;--会产生Belady异常现象

最近最久未使用置换算法(LRU):选择最近一段时间最长时间没有被访问过的页面予以淘汰

页面置换算法(Clock)

该算法是LRU和FIFO的折衷。该算法要求为每页设置一个访问位,并将内存中的所有页链接成一个循环队列。

当某页被访问时,系统将其访问位设置为1。

置换时采用一个指针,从当前指针位置开始按序检查各页,若访问位为0则选择该页换出,若访问位为1则将其设置为0,最后指针停留在被置换页的下一页上。

改进型Clock置换算法

抖动:频繁更换页面,以致一个进程在运行中把大部分时间都花费在页面置换工作上,则称该进程发生了“抖动”。

Belady现象:先进先出算法存在一种异常现象,即在某些情况下会出现分配给的进程物理块数增多,缺页次数有时增加,有时减少的奇怪现象,这种现象称为Belady现象。缺页率过高时,系统会采用全局分配,多给该进程分配一些物理块,直到缺页率降下来。 

14、请求分段存储管理:

在基本分段存储管理基础上增加了请求调段功能段的置换功能

必需的硬件支持有:请求分段的段表机制、缺段中断机构、地址变换机构。

三个中断处理机制:分段越界、分段保护、缺段

三种分段保护措施:地址越界检查、存取控制检查、环保护机制

段表机制:

15、虚拟段页式存储管理。

  1. 设备管理

学习重点:

1、I/O 系统的组成: I/O设备、设备控制器、 I/O通道、总线及相应软件

2、设备管理(I/O系统基本)功能:

(监视设备状态,进行设备分配,完成I/O操作,缓冲管理与虚拟设备等)

隐藏物理设备的细节

与设备的无关性(抽象的I/O命令、逻辑设备名称、可移植性即插即用)

提高CPU和I/O设备的利用率(并行操作)

对I/O设备进行控制(4种方式)

确保对设备的正确共享、错误处理、缓冲技术

3、设备管理的主要任务:

完成用户提出的I/O 请求,为用户分配I/O 设备;

提高I/O速度;

提高CPU 和I/O设备的利用率;

方便用户使用I/O设备;

   设备管理的主要对象:I/O设备和相应的设备控制器

4、I/O设备的一般分类

·按使用特性(信息交换)单位分类:

存储设备(块设备)

输入/输出设备(字符设备)

·按照使用方式/共享属性来分类:

独享/独占设备、共享设备、虚拟设备;

·按传输速率来分类:

高速设备、中速设备、低速设备。

5、UNIX操作系统把输入/输出设备看作是特殊文件。(设备文件)

6 设备简介通过设备控制器与CPU进行通信,在设备与设备控制器之间有一接口,传递三类信号:

   

设备控制器的组成:

设备控制器与处理机(CPU)的接口;

设备控制器与(I/O)设备的接口;

I/O逻辑。

7、I/O通道:

通道是一个独立于CPU,专门管理输入输出的处理器,它控制外设与内存之间的信息交换。

    CPU通过执行I/O指令以及处理来自通道的中断,实现对通道的管理。来自通道的中断有两种,一种是数据传送结束中断,另一种是故障中断。

    通道通过使用通道指令控制设备控制器进行数据传送操作,并以通道状态字接收设备控制器反映的外围设备的状态

    通道可分为:字节多路通道、数组选择通道、数组多路通道

8瓶颈问题:通道数量少,造成整个系统吞吐量下降

解决因通道不足产生的瓶颈问题的方法:增加设备到主机间的通路而不是增加通道

具体地说,就是把一个设备连接到多个控制器上,而一个控制器又连接到多个通道上。

这种多通路方式不仅可以解决瓶颈问题,而且能够提高系统的可靠性,也即不会因为个别通道或控制器的故障而使设备与存储器之间无法建立通路进行数据传输。

9、某进程提出I/O请求后,只有在设备、设备控制器和通道三者都分配成功时,这次的设备分配才算成功,才具备了进行I/O操作的物质条件。然后,便可启动该I/O 设备进行数据传送。

10、层次式结构的I/O软件:

用户层软件、设备独立性软件、设备驱动程序、中断处理程序

11、中断处理程序:

12、设备驱动程序:是I/O进程与设备控制器之间的通信程序

13、用户层的软件

14设备独立性概念及其优点;

为提高OS的可适应性和可扩展性,而将应用程序独立于具体使用的物理设备。用户程序申请I/O设备时,通常采用逻辑设备名

向用户提供使用外部设备的方便、统一的接口

所谓“方便”,是指用户能独立于具体设备的复杂物理特性而方便地使用设备;

所谓“统一”,是指不同设备尽量能统一操作方式。

“方便”和“统一”要求对用户屏蔽实现具体设备I/O操作的细节,呈现给用户的是一种性能理想化的、操作简便的逻辑设备。

系统的这种性能也称为设备的独立性

15、对I/O设备进行控制的方式(四种):

  1. 使用轮询的可编程I/O方式(程序I/O方式,CPU与设备串行,资源利用率低)

  1. 使用中断的可编程I/O方式(中断驱动I/O控制方式,可以成百倍的提高CPU的利用率,以及系统吞吐量)

(1)需数据的进程向CPU发出指令启动I/O设备输入数据。

(2)该进程放弃处理机,等待输入完成。

(3)输入完成后,I/O控制器向CPU发出中断请求,CPU收到后,转向中断服务程序。中断服务程序将数据寄存器中的数据送到指定内存单元,并将原进程唤醒,继续执行。

(4)以后某时刻,该进程再次被调度,从内存单元取出数据进行处理。

例如,从终端输入一个字符的时间约为100 ms, 而将字符送入终端缓冲区的时间小于 0.1 ms。 若采用程序I/O方式,CPU约有 99.9 ms的时间处于忙—等待中。 采用中断驱动方式后,CPU可利用这 99.9 ms的时间去做其它事情,而仅用 0.1 ms的时间来处理由控制器发来的中断请求。 可见,中断驱动方式可以成百倍地提高CPU的利用率

  1. 直接存储器访问DMA I/O控制方式

如果I/O设备能直接与主存交换数据而不占用CPU,CPU的利用率还可提高,这就出现了直接存储器访问(DMA)方式:

(1)需数据的进程向CPU发出指令,向DMA控制器写入数据存放的内存始址、传送的字节数,并置中断位和启动位,启动I/O设备输入数据并允许中断。

(2)该进程放弃处理机等待输入完成,处理机被其它进程占用。

(3)DMA控制器挪用CPU周期,将一批数据写入内存中。

(4)DMA控制器传送完数据后,向CPU发中断请求,CPU响应后转向中断服务程序,唤醒进程,并返回被中断进程。

(5)以后某时刻,该进程再次被调度,从内存单元取出数据进行处理。

DMA控制器的组成部件(四类寄存器):

    1. 命令/状态寄存器 CR:用于接收从CPU发来的I/O命令或有关控制信息,或设备的状态。
    2. 内存地址寄存器 MAR:在输入时,它存放把数据从设备传送到内存的起始目标地址;在输出时,它存放由内存到设备的内存源地址。
    3. 数据寄存器 DR:用于暂存从设备到内存,或从内存到设备的数据。
    4. 数据计数器 DC:存放本次CPU要读或写的字(节)数。

  1. I/O通道控制方式(需要CPU干预最少,I/O操作是由通道执行通道程序完成的)

(1)需数据的进程向CPU发出指令,CPU发启动指令指明I/O操作、设备号和对应的通道。

(2)该进程放弃CPU等待输入完成,CPU被其它进程占用。

(3)通道接收到CPU发来的启动指令后,取出内存中的通道程序执行,控制设备将数据传送到内存指定区域。

(4)传送完数据后,通道向CPU发中断请求,CPU响应后转向中断服务程序,唤醒进程,并返回被中断进程。

(5)以后某时刻,该进程再次被调度,从内存取出数据进行处理。

通道的运算控制部件包括:

  ① 通道地址字(CAW):记录下一条通道指令存放的地址,其功能类似于中央处理机的地址寄存器。

  ② 通道命令字(CCW):记录正在执行的通道指令,其作用相当于中央处理机的指令寄存器。

  ③  通道状态字(CSW):记录通道、控制器、设备的状态,包括I/O传输完成信息、出错信息、重复执行次数等。

DMA方式每台设备至少需要一个DMA控制器,而通道控制方式中,一个通道可控制多台设备与内存进行数据交换

16、设备分配时所使用的数据结构

四张表:

设备控制表--DCT

控制器控制表--COCT

通道控制表--CHCT

系统设备表—SDT

分配设备(SDT找DCT)、分配控制器(DCT找COCT)、分配通道(COCT找CHCT)

17、设备分配算法:

先来先服务、优先级高者优先。

18、SPOOLing系统的组成

组成:

输入井和输出井;

输入缓冲区和输出缓冲区;

输入进程和输出进程;

井管理程序

  • SPOOLing技术是对脱机输入输出的模拟,必须有多道程序功能的操作系统和磁盘存储技术的支持
  • 输出井和输入井:在磁盘上(外存)开辟的两个大的存储空间,模拟脱机输入/输出时的磁盘设备,暂存数据。
  • 输入缓冲区和输出缓冲区:为了缓和CPU和磁盘之间速度不匹配的矛盾,在内存中开辟了两个缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井;输出缓冲区用于暂存从输出井送来的数据,以后再传送给输出设备。
  • 输入进程SPi和输出进程SPo:两个进程来模拟脱机I/O时的外围控制机

功能:

将一台物理I/O设备虚拟为多台逻辑I/O设备(虚拟技术——>虚拟设备)

实现思想:

为了缓和CPU的高速性与I/O设备的低速性间矛盾而引入,该技术在外围控制机的控制下实现低速的I/O设备与高速的磁盘之间进行数据传送,是对脱机输入输出系统的模拟,建立在通道技术和多道程序技术的基础上,以高速随机外存为后援存储器

SPOOLING技术:

在多道程序下,用一道程序来模拟输入时的外围控制机功能,将低速I/O设备上的数据传送到高速磁盘上;再用另一道程序来模拟输出时的外围控制机功能,将数据从磁盘传送到低速的输出设备上。从而可在主机的直接控制下,实现脱机输入、输出功能,进而实现外围操作与CPU对数据的处理同时进行,这种在联机情况下实现的同时外围操作称为SPOOLING技术,是对脱机输入、输出工作的模拟,是操作系统中采用的一项将独占设备改造成为共享设备的技术

特点:

提高了I/O的速度

将独占设备改造为共享设备

实现了虚拟设备的功能

提高了设备的利用率

举例:共享打印机

  1. 打印机属于独占设备。用SPOOLing技术转换为共享设备,提高设备的利用效率。
  2. 用户请求打印后:

    1.由输出进程SPo在输出井中为之申请一个空闲磁盘块区, 并将要打印的数据送入其中;

    2.由输出进程SPo再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到请求打印队列上。

    3. 打印机空闲时,首先取第一张请求表,将数据从输出井传送到内存缓冲区,进行打印。

19、什么是虚拟设备,实现虚拟设备的关键技术是什么(SPOOLING技术)。是指通过虚拟技术将一台独占设备变换为若干台逻辑设备,供若干个用户进程使用,通常把这种经过虚拟技术处理后的设备称为虚拟设备。

20、使用缓冲技术的目的

·缓和CPU与I/O设备之间速度不匹配的矛盾

·减少对CPU的中断频率,放宽对CPU中断响应时间的限制

·解决数据粒度不匹配的问题

·提高CPU和I/O设备之间的并行性

21、缓冲区的类型

       从磁盘将一块数据输入到缓冲区需要花费的时间T,CPU对一块数据进行处理的时间为C,将缓冲区的数据传送到用户区所花时间为M。

单缓冲:MAX(C, T)+M

双缓冲:MAX(C+M, T)

循环缓冲和缓冲池

为了使多个进程能有效地同时处理输入输出,最好使用缓冲池结构的缓冲技术。

缓冲池:管理机制 + 多个缓冲区

                   :缓冲首部 + 缓冲体

22、提高磁盘I/O速度的主要途径:

(1)选择性能好的磁盘

(2)采用好的磁盘调度算法

(3)设置磁盘高速缓存(Disk Cache)

(4)其它方法

(5)采用高度可靠、快速的容量磁盘系统--廉价磁盘冗余阵列

23、磁盘访问时间

寻道时间:将磁头从当前位置移到指定磁道所经历的时间

旋转延迟时间:指定扇区移动到磁头下面所经历的时间

传输时间:将扇区上的数据从磁盘读出/向磁盘写入数据所经历的时间。

24、磁盘存储器管理:

  1. 磁盘存取访问时间包括:寻道时间、旋转延迟时间、数据传送时间。
  2. 各种磁盘调度算法(能够用FCFS、SSTF、扫描算法和循环扫描算法计算寻道时间)。

使磁盘的平均寻道时间最少

25、例:假设一个请求序列:55,58,39,18,90,160,150,38,184   磁头当前的位置在100

FCFS先来先服务:

SSTF最短寻道时间优先(“饥饿”现象)

SCAN扫描算法

CSCAN循环扫描算法

  1. 文件管理

学习重点:

1、文件、文件系统(指文件、管理文件的软件及数据结构的总体)的概念。

文件:

   在文件系统中是一个最大的数据单位

    是指记录在外存上的具有文件名的一组相关信息的集合。可分为有结构文件无结构文件两种。有结构文件由若干个相关记录组成,而无结构文件则被看成一个字符流。

文件属性:

    文件名、文件类型、文件长度、文件的物理位置、文件的建立日期以及用户对该文件的存取权限等

文件类型

2、文件的逻辑结构:

从用户的观点所看到的文件组织(即文件的组织方式),分为:

有结构文件记录式文件顺序结构、索引结构、索引顺序结构)、

顺序文件-定长(也可以是变长)记录按某种顺序排列形成

索引文件-为变长记录文件建立一张索引表(若索引表很大,可建立多级索引)

索引顺序文件-为顺序文件建立一张索引表,为每组记录的第一个记录设置一个表项

直接文件(键值)和哈希文件(目前应用最为广泛的一种直接文件)

无结构文件流式文件):UNIX操作系统中所有文件的逻辑结构是流式文件

3、文件的物理结构及各自的特点

(文件在外存上的实际存放形式,即外存的分配方式,分配存储空间的基本单位是块):

连续(顺序)分配形成顺序文件(不便于文件的扩充)

链接分配形成链接文件(隐式链接和显示链接即FAT表-会画图

索引分配形成索引文件 (一级索引分配、多级索引分配、混合索引分配方式—会计算采用混合索引分配方式的文件系统所能支持的单个文件的最大长度并能画出混合索引分配结构示意图)。

4、 顺序文件可顺序存取和直接存取(只定长可以,随机存取);

    链接文件只能顺序存取(隐式链接,显式链接-文件分配表);

索引文件支持随机存取(索引表);

5、UNIX操作系统(分时操作系统)所采用的外存分配方式(文件的物理结构):

混合索引分配方式(能够画图)

对空闲块的管理采用成组链接法。

6、 从文件管理角度看,文件由FCB(文件控制块)和文件体(文件本身)两部分组成。

    FCB保存在文件目录中,一个FCB就是一个目录项;FCB是文件存在的标志。

7、 文件目录

      把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合。

目录项

      构成文件目录的项目(目录项就是FCB)

目录文件

      为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,这个文件就叫目录文件。

    索引结点:

       UNIX系统中,采用了把文件名和文件描述信息分开的方法,把文件描述信息单独形成一个数据结构,叫索引结点(i结点)。

目录结构—单级目录结构

两级目录结构(解决不同用户文件重名的问题)

多级目录结构(树型目录结构)。

8、目录查询技术

线性检索法(顺序检索法)、Hash方法

9、文件的共享:

基于索引结点的共享方式;利用符号链实现文件共享。

10、文件存储空间的管理:

空闲表法(连续分配方式,与内存的动态分配方式相类似)、空闲链法、位示图法、成组链接法(UNIX操作系统所采用的文件存储空间管理的方法)。

11、对文件和目录的主要操作。(例如:打开和关闭文件)

从外存拷贝到内存的打开文件表的一个表目

然后把表目的编号/索引号(文件描述符)给用户

相当于用户和指定文件之间建立了链接,下一次不用检索就可以找到

关闭就是把表目删除

  1. 操作系统接口

学习重点:

  1. 命令接口。
  2. 系统调用接口(程序员接口)。
  3. 图形用户接口。

  1. Linux操作系统

学习重点:实验一~实验四

重点:fork()系统调用

请解释系统调用fork(),并回答:当用fork创建的新进程开始执行时,其入口在哪里?

调用 fork 时,系统将创建一个与当前进程相同的新进程,其与原有进程具有相同的数据、连接关系和在程序同一处执行的连续性。原进程称为父进程,新生进程称为子进程。子进程是父进程的 一个拷贝,子进程获得同父进程相同的数据,但是同父进程使用不同的数据段和堆栈段。子进程被创建以后,处于可运行状态,与父进程以及系统中的其他进程平等地参与系统调度。

fork 调用将执行两次返回,即分别从父进程和子进程分别返回,即子进程一旦创建就绪,就与父进程一样被平等地调度执行。因此,从 fork 返回以后,不能确切知道执行哪一个进程。从父进程返回时,返回值(>0)为子进程的进程标识号 PID;而从子进程返回时,返回值为 0,并且返回都将执行 fork 之后的语句。调用出错时返回值为-1,并将 errno 置为相应值

期末考试题型

一、填空题(共20分,每空格 1分)

二、选择题(共20分,每小题1分,单选)

三、判断题(共10分,每小题1分)

四、简答题(15分,每小题3分)

五、综合题(35分,每小题7分)

期末复习资料

  1. 此复习指导(按教育部教学大纲编写)
  2. 上课PPT和教材(复习大纲要求却还没有弄懂的知识点)
  3. 习题集例题、单元测验题(检查对知识点的应用能力)

选择判断

. 单选题(共10题,60分)

1. (单选题, 6)【单选题】在某分时系统中,为进程分配的时间片是1,若某一进程拥有50个线程,这些线程都属于用户级线程,则每一个线程在系统调度时间上占用的时间片是( )

  • A. 50
  • B. 1/50
  • C. 1
  • D. 0

我的答案: B 正确答案: B

6分

2. (单选题, 6)【单选题】
有一个阅览室,读者进入时必须先在一张登记表上进行登记,该表为每一座位列一表目,包括座号和读者姓名;读者离开时,要删掉登记的信息,阅览室共有100个座位。用信号量机制来描述读者之间同步活动时,需要定义两个信号量,一个是互斥访问登记表的信号量,一个是表示空座位数的信号量,这两个信号量的初值分别是( )

  • A. 0,50
  • B. 1,100
  • C. 50,0
  • D. 100,1

我的答案: B 正确答案: B

6分

3. (单选题, 6)【单选题】下列选项中,会导致用户进程从用户态切换到内核态的操作是( ) (1)整数除以 0 (2)cos 函数调用(3)read 系统调用

  • A. (2)、(3)
  • B. (1)、(3)
  • C. (1)、(2)
  • D. (1)、(2)、(3)

我的答案: B 正确答案: B

6分

4. (单选题, 6)【单选题】在生产者/消费者问题中,假设有 10 个生产者,10 个消费者,共享容量为 6 的缓冲池,则实施互斥访问缓冲池的信号量初始值为( )

  • A. 10
  • B. 1
  • C. 6
  • D. 0

我的答案: B 正确答案: B

6分

5. (单选题, 6)【单选题】
某系统中有15台打印机,N个进程共享打印机资源,每个进程要求3,N的取值不超过( ),系统不会发生死锁。

  • A. 4
  • B. 5
  • C. 7
  • D. 6

我的答案: C 正确答案: C

6分

6. (单选题, 6)【单选题】一个正在访问临界资源的进程由于申请等待I/O操作而被中断时,( )

  • A. 不允许其他进程进入任何临界区
  • B. 可以允许其他就绪进程抢占处理器,继续运行
  • C. 可以允许其他进程进入与该进程相关的临界区
  • D. 不允许任何进程抢占处理器

我的答案: A 正确答案: B

0分

7. (单选题, 6)【单选题】关于PV操作解决同步问题的说法正确的是( )

  • A. 信号量S的初值设置不对可能导致并发过程出错。
  • B. 信号量S的定义可以随意定义。
  • C. 一般在关键操作之前执行V操作。
  • D. 一般在关键操作之后执行P操作。

我的答案: A 正确答案: A

6分

8. (单选题, 6)【单选题】
有四个进程共享同一程序段,而每次只允许两个进程进入该程序段,若用PV操作同步机制,则信号量S的取值范围是( )

  • A. 2,1,0,-1,-2
  • B. 1,0,-1,-2,-3
  • C. 3,2,1,0,-1
  • D. 2,1,0,-1

我的答案: A 正确答案: A

6分

9. (单选题, 6)【单选题】下列几种关于进程的叙述,( )是最不符合操作系统对进程的理解。

  • A. 进程是程序在一个数据集合上的运行过程
  • B. 进程可以由程序、数据和PCB描述
  • C. 进程是系统进行资源分配和调度的一个独立单元
  • D. 进程是在多程序环境中的完整的程序

我的答案: D 正确答案: D

6分

10. (单选题, 6)【单选题】设有k个并发执行的进程共享一种类型的临界资源,临界资源的个数是h (h<k),则为使k个进程正确地共享临界资源而定义的信号量的初值为( )

  • A. 1
  • B. h
  • C. k
  • D. k-h

我的答案: B 正确答案: B

6分

. 判断题(共8题,40分)

11. (判断题, 5)【判断题】同步机制的实质是当进程运行条件不满足时,能让进程立刻暂停,而条件一旦满足,则及时唤醒它。( )

  • A. 对
  • B. 错

我的答案: 对 正确答案: 对

5分

12. (判断题, 5)【判断题】原语是按一定逻辑组合完成特定功能的若干机器指令,具有原子性。( )

  • A. 对
  • B. 错

我的答案: 对 正确答案: 对

5分

13. (判断题, 5)【判断题】进程高级通信方式中的管道通信是利用在内存中开辟的一块空间来进行数据通信的。( )

  • A. 对
  • B. 错

我的答案: 错 正确答案: 错

5分

14. (判断题, 5)【判断题】若系统中只有用户级线程,则处理机调度的单位是进程。( )

  • A. 对
  • B. 错

我的答案: 对 正确答案: 对

5分

15. (判断题, 5)【判断题】利用记录型信号量机制控制并发过程时,每次P操作,意味着进程请求一个单位的临界资源,信号量S1,如果此时信号量S小于0,其绝对值表示相应阻塞队列中进程的个数。( )

  • A. 对
  • B. 错

我的答案: 对 正确答案: 对

5分

16. (判断题, 5)【判断题】在Linux操作系统中,wait() 函数会阻塞调用进程直到它的所有子进程结束为止。( )

  • A. 对
  • B. 错

我的答案: 错 正确答案: 错

5分

17. (判断题, 5)【判断题】PV操作不仅可以用来实现进程的同步与互斥,还可以用来防止进程的死锁。( )

  • A. 对
  • B. 错

我的答案: 错 正确答案: 错

5分

18. (判断题, 5)【判断题】对于相互合作的进程,如果一个进程需要先获得另一个进程的数据后才能对该数据进行处理,只要数据尚未到达,它便会进入阻塞状态。( )

  • A. 对
  • B. 错

我的答案: 对 正确答案: 对

5分

1. (单选题)【单选题】现有五个进程A,B,C,D,E共享R1,R2,R3,R4这四类资源,进程对资源的需求量和目前分配情况如下表所示。若系统还有剩余资源数分别为R12,R27,R32个和R42,请问目前该系统所处的状态是否安全?此时如果进程D提出申请(2,6,0,1)个资源,系统是否能为它分配资源?( )

  • A. 不安全状态,不能分配
  • B. 安全状态,能分配
  • C. 死锁状态,不能分配
  • D. 安全状态,不能分配

我的答案: B 正确答案: B

16.6分

2. (单选题)【单选题】支持多道程序设计的操作系统在运行过程中,不断地选择新进程运行来实现CPU的共享,但其中( )不是引起操作系统选择新进程的直接原因。

  • A. 运行进程出错
  • B. 运行进程要等待某一事件发生
  • C. 有新进程进入就绪队列
  • D. 运行进程的时间片用完

我的答案: C 正确答案: C

16.6分

3. (单选题)【单选题】下列说法错误的是( )

  • A. 有序资源分配法会降低资源使用效率。
  • B. 利用有序资源分配法的目的是破坏环路条件。
  • C. 有序资源分配法保证并发进程不发生死锁。
  • D. 利用有序资源分配法,可以避免进程阻塞。

我的答案: D 正确答案: D

16.6分

4. (单选题)【单选题】有 5 个作业(A,B,C,D,E) 0 时刻按照ABCDE的次序同时到达系统,估计运行时间分别为4,6,8,10,12分钟,使用时间片轮转法(时间片为 2 分钟)调度,上述作业的平均周转时间为( )

  • A. 28分钟
  • B. 36分钟
  • C. 30分钟
  • D. 18分钟

我的答案: C 正确答案: A

0分

5. (单选题)【单选题】系统有5个进程,到达就绪队列的时刻、所需运行时间如下表所示。若采用高响应比优先调度算法,则这5个进程的平均周转时间和平均带权周转时间是( )

  • A. 9.2和2.79
  • B. 7.6和1.84
  • C. 8.0和2.14
  • D. 9.0和2.37

我的答案: B 正确答案: D

0分

. 判断题(共1题,17分)

6. (判断题)【判断题】CPU调度算法不仅会影响进程的等待时间,还会影响进程真正使用的CPU时间和I/O时间。( )

  • A. 对
  • B. 错

我的答案: 错 正确答案: 错

17分

. 单选题(共13题,80.6分)

1. (单选题)【单选题】假设一个页式存储管理系统具有快表,多数活动页表项都可以存在其中。页表存放在内存中,内存访问时间是1.5μs,检索快表的时间为0.3μs,若快表的命中率是85%,则有效存取时间是多少?( )

  • A. 1.62μs
  • B. 1.35μs
  • C. 1.85μs
  • D. 2.025μs

我的答案: D 正确答案: D

6.2分

答案解析:D
........................................................................................................................
.

2. (单选题)【单选题】某虚拟存储器系统采用页式内存管理,使用LRU页面置换算法,考虑下面的页面访问地址序列:1,8,1,7,3,8,2,7,2,1,8,3,2,8,1,3,1,7,1,3,7,假定分配给该进程4个页框,开始时是空的,则缺页次数是( )

  • A. 9
  • B. 8
  • C. 6
  • D. 7

我的答案: B 正确答案: B

6.2分

3. (单选题)【单选题】在基本分页存储管理系统中,若地址结构中0-11位为页内偏移量,12-31为页号,则逻辑地址8576(十进制)对应的页号和页内地址为( )

  • A. 8,576
  • B. 2,384
  • C. 8,384
  • D. 3,384

我的答案: B 正确答案: B

6.2分

4. (单选题)【单选题】某页式存储管理系统,向用户提供的逻辑地址空间最多为32,每页2048B,内存总共有12个存储块,则逻辑地址空间至少为多少位?内存空间有多大?( )

  • A. 逻辑地址至少11位,内存空间为24KB
  • B. 逻辑地址至少16位,内存空间为32KB
  • C. 逻辑地址至少16位,内存空间为24KB
  • D. 逻辑地址至少11位,内存空间为32KB

我的答案: C 正确答案: C

6.2分

5. (单选题)【单选题】设基址寄存器的内容是1000,在采用动态重定位的系统中,当执行指令“Load A,3000”,操作数的实际地址是( )

  • A. 4000
  • B. 2000
  • C. 3000
  • D. 1000

我的答案: A 正确答案: A

6.2分

6. (单选题)【单选题】在请求分页存储管理中,进程在执行过程中发生了缺页中断,经操作系统处理后,应该让其执行( )指令。

  • A. 被中断的前一条
  • B. 被中断的
  • C. 被中断的后一条
  • D. 启动时的第一条

我的答案: B 正确答案: B

6.2分

7. (单选题)【单选题】请求分页存储管理系统中,在缺页处理过程中,操作系统执行的操作可能是( ) I.修改页表 II.磁盘I/O III.分配页框

  • A. 仅II
  • B. 仅I、II
  • C. I、II和III
  • D. 仅III

我的答案: C 正确答案: C

8. (单选题)【单选题】某基于动态分区存储管理的计算机,其主存容量为80MB(初始为空),采用最佳适应分配(Best Fit)算法,分配和释放的顺序为:分配20MB,分配30MB,释放20MB,分配18MB,分配8MB,此时主存中最大空闲分区的大小是( )

  • A. 22MB
  • B. 20MB
  • C. 9MB
  • D. 30MB

我的答案: A 正确答案: A

9. (单选题)【单选题】一台机器有48位虚地址和32位物理地址,系统采用分页存储管理,若页面大小为4KB,则一个进程的页表最多有( )个页表项。

  • A. 236
  • B. 248
  • C. 232
  • D. 212

我的答案: A 正确答案: A

10. (单选题)【单选题】下列关于页式存储正确的有( )

  • A. 页式存储管理当中的页面是为用户所感知的
  • B. 页式存储管理不会产生内部碎片
  • C. 页式存储方式可以采用静态重定位
  • D. 在页式存储管理中,若关闭TLB,则每当访问一条指令或存取一个操作数时都要访问2次内存

我的答案: D 正确答案: D

11. (单选题)【单选题】在段式存储管理方式中,某段表的内容如下,用户程序中一逻辑地址为(3,168),它对应的物理地址为( )

  • A. 370K+168
  • B. 480K+168
  • C. 120K+3
  • D. 370K+3

我的答案: A 正确答案: A

12. (单选题)【单选题】若主存容量为8MB,外存容量为800MB,计算机系统的地址寄存器有24,那么虚存的最大容量为( )

  • A. 8MB+224B
  • B. 224B
  • C. 808MB
  • D. 8MB

我的答案: B 正确答案: B

13. (单选题)【单选题】在分页存储管理系统中,逻辑地址的结构长度为18,其中11-17表示页号,0-10位表示页内偏移量。若某进程的012页依次放入246号物理块,则逻辑地址1800对应的物理地址是( )

  • A. 4096
  • B. 5596
  • C. 5896
  • D. 4872

我的答案: C 正确答案: C

. 判断题(共3题,19.4分)

14. (判断题)【判断题】最佳页面置换算法的思想是淘汰以后不再需要或最远的将来才会用到的页面,是实际应用中性能最好的淘汰算法。 ( )

  • A. 对
  • B. 错

我的答案: 错 正确答案: 错

15. (判断题)【判断题】段页式系统的地址映射过程既需要段表,又需要页表,而且段表和页表都需要多个。( )

  • A. 对
  • B. 错

我的答案: 错 正确答案: 错

16. (判断题)【判断题】在虚拟存储系统中,程序员编制程序时不必考虑主存的容量,但系统的吞吐量在很大程度上依赖于主存储器的容量。( )

  • A. 对
  • B. 错

我的答案: 对 正确答案: 对

. 单选题(共6题,66.6分)

1. (单选题)【单选题】某计算机系统配备了4台同型号打印机、1台扫描仪、1台绘图仪。请问该系统需在内存中配置( )个设备驱动程序。

  • A. 2
  • B. 3
  • C. 4
  • D. 5

我的答案: B 正确答案: B

2. (单选题)【单选题】通道又称I/O处理机,它用于实现( )之间的信息传输。

  • A. 内存与外设
  • B. CPU与外设
  • C. 内存与外存
  • D. CPU与外存

我的答案: A 正确答案: A

3. (单选题)【单选题】某文件占20个磁盘块,现要把该文件磁盘块依次读入主存缓冲区,并送入用户区进行分析,假设一个缓冲区与一个磁盘块大小相同,把一个磁盘块读入缓冲区的时间110μs,将缓冲区的数据传送到用户区的时间是40μs,CPU对一块数据进行分析的时间为60μS。在双缓冲区结构下,读入并分析完该文件的时间是( )

  • A. 2200μs
  • B. 2300μs
  • C. 4200μs
  • D. 2000μs

我的答案: B 正确答案: B

4. (单选题)【单选题】关于设备驱动程序说法错误的是( )

  • A. 设备驱动程序的实现与硬件密切相关
  • B. 操作系统一般仅对与设备驱动程序的接口提出要求
  • C. 设备驱动程序工作在用户态
  • D. 设备驱动程序的本质就是实现设备的文件操作接口

我的答案: C 正确答案: C

5. (单选题)【单选题】如果磁头当前正在第58号磁道,现有4个磁道访问请求序列为99,40,132,68,当采用( )调度算法时,下一次磁头将达到68号磁道。假设此刻磁头方向指向磁道号小的磁道。

  • A. 先来先服务
  • B. 循环扫描
  • C. 最短寻道时间优先
  • D. 扫描

我的答案: C 正确答案: C

6. (单选题)【单选题】SPOOLing技术的主要目的是( )

  • A. 提高CPU和设备交换信息的速度
  • B. 减轻用户编程负担
  • C. 提供主、辅存接口
  • D. 将独占设备改造成虚拟设备,提高独占设备的利用率

我的答案: D 正确答案: D

. 判断题(共3题,33.4分)

7. (判断题)【判断题】SPOOLing系统中的用户程序可以随时将输出数据送到输出井中,待输出设备空闲时,再由 SPOOLing系统完成数据的输出操作。( )

  • A. 对
  • B. 错

我的答案: 对 正确答案: 对

8. (判断题)【判断题】设备独立性就是指系统具有使用不同设备的能力。( )

  • A. 对
  • B. 错

我的答案: 错 正确答案: 错

9. (判断题)【判断题】磁盘是可共享的设备,因此每一时刻可以有多个进程同时与它交换信息。( )

  • A. 对
  • B. 错

我的答案: 错 正确答案: 错

填空题

  1. 信号量,进程同步的机制:信号量机制

(整形信号量、记录型信号量、AND型信号量、一般信号量集)

互斥信号量:初值为1;

资源信号量:初值为资源的数目

P(wait),V(signal)操作

  1. 进程的基本状态及其变化:

两种短暂的状态:new新状态和terminated终止状态;

三种基本状态: 运行态:当前进程已分配到CPU,它的程序正在处理机上运行;

就绪态:进程已具备运行条件,但因为其它进程正占用CPU,所以暂时不能运行而等待分配CPU的状态;

阻塞态:因等待某件事件发生而暂时不能运行的状态。

就绪→运行:被调度程序选中,分配到CPU。

运行→阻塞:因缺乏某种条件而放弃对CPU的占用。

阻塞→就绪:阻塞态进程所等待的事件发生了。

运行→就绪: 进程用完时间片(分时系统中)或一个优先权更高的进程进入就绪队列(“优先权高优先”调度算法中)。

        1. 分页、分段、段页式
        2. 作业、进程、程序、段

一个程序可对应多个进程,一个进程可对应多个程序,一个作业可对应多个进程

一个段对应一个页表,一个进程对应一个段表

        1. 虚拟地址空间、内存物理地址空间(虚拟存储器)

        1. 临界资源:一次仅允许一个进程使用的共享资源

进程同步机制遵循的原则:空闲让进、忙则等待、有限等待、让权等待

        1. I/O设备的一般分类

·按使用特性(信息交换)单位分类:

       存储设备(块设备

       输入/输出设备(字符设备

·按照使用方式/共享属性来分类:

       独享/独占设备、共享设备、虚拟设备;

·按传输速率来分类:

       高速设备、中速设备、低速设备。

        1. 设备分配的数据结构:四张表

设备控制表--DCT

控制器控制表--COCT

通道控制表--CHCT

系统设备表—SDT

        1. 通道      处理机   I/O工作        通道程序

通道:一种特殊的执行I/O指令的处理机,指令类型单一,没有自己的内存,与CPU共享内存。

CPU只需发送I/O命令给通道,通道通过调用内存中的相应通道程序完成任务。

        1. 文件:记录式文件、流式文件

从用户的观点所看到的文件组织(即文件的组织方式),分为:

有结构文件记录式文件顺序结构、索引结构、索引顺序结构)、

顺序文件-定长(也可以是变长)记录按某种顺序排列形成

索引文件-为变长记录文件建立一张索引表(若索引表很大,可建立多级索引)

索引顺序文件-为顺序文件建立一张索引表,为每组记录的第一个记录设置一个表项

直接文件(键值)和哈希文件(目前应用最为广泛的一种直接文件)

无结构文件流式文件):UNIX操作系统中所有文件的逻辑结构是流式文件

        1. Unix目录项

在文件目录中的每个目录项仅由文件名指向该文件所对应的i结点(即索引结点)的指针构成

        1. 文件物理结构

(文件在外存上的实际存放形式,即外存的分配方式,分配存储空间的基本单位是块):

连续(顺序)分配形成顺序文件(不便于文件的扩充)

链接分配形成链接文件(隐式链接和显示链接即FAT表-会画图

索引分配形成索引文件 (一级索引分配、多级索引分配、混合索引分配方式—会计算采用混合索引分配方式的文件系统所能支持的单个文件的最大长度并能画出混合索引分配结构示意图)。

        1. 文件存取方式:顺序存取法、直接存取法和按键存取法(索引存取法)

顺序文件可顺序存取和直接存取(只定长可以,随机存取);

    链接文件只能顺序存取(隐式链接,显式链接-文件分配表);

索引文件支持随机存取(索引表);

简答题

              1. 进程:

进程与线程:

              1. 多级反馈队列

              1. 动态重定位

分页、分段存储管理有何区别

              1. SPOOLING

              1. 中断I/O和DMA

              1. 文件系统功能

综合题

        1. 第二章PV操作,见复习知道例题
        2. 调度算法

        1. 避免死锁算法

        1. 逻辑地址——物理地址

        1. 页面置换算法

  • 48
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值