操作系统原理教程:管程

错用同步操作P(S)和V(S)时,同样会造成与时间有关的错误。

# P、V操作使用颠倒
P(mutex);                           V(mutex)
critical Section                    critical section
V(mutex);                           P(mutex)

# V操作出误用P操作
P(mutex);                           P(mutex)
critical Section                    critical section
V(mutex);                           P(mutex)

# 遗漏了P操作或V操作
管程的概念

一个管程定义了一个数据结构和在该数据结构上能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。管程在结构上由以下三部分组成:

  • 管程所管理的共享数据结构(变量),这些数据结构是对应临界资源的抽象。

  • 建立在该数据结构上的一组操作(函数)。

  • 对上述数据结构置初值的语句。

# 管程的语法描述

Monitor monitor_name            // monitor_name表示给管程起的名字,即管程名
{
    variable declarations       // 共享变量说明
    void entry P1(...)          // P1到Pn为一组过程(函数)
    {
        ...
    }
    void entry P2(...)
    {
        ...
    }
    ...
    void entry Pn(...)
    {
        ...
    }
    initialization code         // 对局部于管程的数据赋初值
}

管程管理的数据结构仅能由管程内定义的过程(函数)所访问,而不能由管程外的过程(函数)访问。管程中定义的函数又分为两种类型:一种是外部函数(带有标识符entry),另一种是内部函数(不带标识符entry)。外部函数是进程可以从外部调用的函数,而内部函数是只能由管程内的函数调用的函数。整个管程相当于一道“围墙”,它把共享变量所代表的资源和对它进行操作的若干函数围了起来,所有进程要访问临界资源,都必须经过管程这道“围墙”才能进入,而管程每次只准许一个进程进入,即便它们调用的是管程中不同的函数,以此自动实现临界资源在不同进程间的互斥使用。由于管程是一个语言成分,因此管程的互斥访问完全由编译程序在编译时自动添加,无须程序员关心,而且保证正确。

因为管程是互斥进入的,所以当一个进程试图进入一个已被占用的管程时,它应当在管程的入口处等待,因而在管程的入口处应当有一个进程等待队列,称为入口等待队列。在管程内部,如果进程P唤醒进程Q,则P等待Q继续,如果进程Q在执行又唤醒进程R,则Q等待R继续…这样,在管程内部,由于执行唤醒操作,可能会出现多个等待进程,因而还需要有一个进程等待队列,这个等待队列被称为紧急等待队列,它的优先级应当高于入口等待队列的优先级。

为了区别各种不同等待原因,在管程内设置了若干条件变量c1,c2,…,cn,局限于管程,并仅能从管程内进行访问;对于任一条件型变量cn,可以执行cwaitn和csignal操作。

  • cwaitn(c):如果紧急等待队列非空,则唤醒第一个等待者;否则释放管程的互斥权,本进程阻塞进入c变量的等待队列链。

  • csignal(c):如果c链非空,则什么都不做;否则唤醒第一个等待者,本进程的PCB进入紧急等待队列的尾部。

管程与进程的异同:

  • 二者都定义了数据结构。进程定义的是私有数据结构PCB;管程定义的是公共数据结构,如消息队列。

  • 二者都在各自的数据结构上进行有意义的操作。进程是由顺序程序执行有关操作,管程主要是进行同步操作和初启操作。

  • 二者设置的目的不同。进程是为了更好地实现系统的并发性而设置的,管程是为了解决进程的公共变量、共享资源的互斥使用问题而设置的。

  • 进程通过调用管程中的过程对共享变量实行操作。此时,该过程就如通常的子程序一样被调用而处于被动工作方式,因此,称管程为被动成分;与此相对应的进程则处于主动工作方式而被称为主动成分。

  • 由于进程是主动成分,故进程之间能被并发执行;然而管程是被动成分,管程和调用它的进程不能并发执行。

  • 进程可由“创建”而诞生,由“撤销”而消亡,有生命期;管程是操作系统中的固有成分,无须进程创建,也不能为进程所撤销,只能被进程调用。

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

首先要为它们建立一个管程,不妨命名为Producer-Consumer。其中包含以下两个外部函数:

  • put(item)函数。生产者进程利用该函数,将自己生产的“产品”放入到缓冲池中的某个空缓冲区内,并用变量count计数在缓冲池中已有的“产品”数量,当count=n,表示缓冲池已满,生产者需等待。

  • get(item)函数。消费者进程利用该过程从缓冲池中的某个缓冲区取得一个“产品”,当count<=0时,表示缓冲池已空,无“产品”可供消费,消费者应等待。

# PC管程的定义

Monitor PC;
    int in, out, count;
    item buffer[in];
    condition notfull, notempty;

    void entry put(item)
    {
        if count >= n then notfull.wait;            // 缓冲区满,进入等待队列
        buffer[in] = item;
        in = (in+1) mod n;
        count++;
        if notempty.queue then notempty.signal;     // 如果有进程因为缓冲区空而等待,唤醒它
    }

    void entry get(item)
    {
        if count <= 0 then notempty.wait;           // 缓冲区空,进入等待队列
        item = buffer[out];
        out = (out+1) mode n;
        count--;
        if notfull.queue then notfull.signal;       // 如果有进程因为缓冲区满而等待,唤醒它
    }

    {in = out = count = 0;}


cobegin
    void producer(int i)
    {
        while(true)
        {
            produce an item in nextp;
            PC.put(nextp);
        }
    }

    void consumer(int i)
    {
        while(true)
        {
            PC.get(nextc);
            consume the item in nextc;
        }
    }
coend
管程解决哲学家进餐问题

哲学家在不同的时刻可以处在以下三种不同的状态:进餐、饥饿和思考。为此,引入以下数组表示哲学家的状态:(thinking, hungry, eating) state[5];另外,还要为每一位哲学家设置一个条件变量self[i],每当哲学家饥饿,而又不能获得进餐所需的筷子时,可以通过执行self[i].wait来推迟自己的进餐。条件变量可描述为:condition self[5];在这两个数组的基础上,管程中共设置了以下三个函数:

  • entry pickup(i)函数(外部函数)。哲学家可利用该过程进餐。如某哲学家处于饥饿状态,且他的左、右两位哲学家都未进餐时,便允许这位哲学家进餐,因为他此时可以拿到左、右两根筷子;但只要其左、右两位哲学家中有一位正在进餐,便不允许该哲学家进餐,此时将执行self[i].wait操作来推迟该哲学家的进餐。

  • entry putdown(i)函数(外部函数)。当哲学家进餐完毕,通过执行该函数放下其手中的筷子,以便其左、右两边的哲学家可以竞争使用筷子进餐。

  • test(i)(内部函数)。该函数为测试函数,用来测试哲学家是否已具备用餐条件,即:state[(k+4)%5] != eating && state[k] == hungry && state[(k+1)%5] != eating条件为真。若为真,则允许该哲学家进餐,否则,该哲学家等待。该函数只能被本管程内的两个外部函数pickup()和putdown()调用,不能由进程之间调用。

Monitor Dining-Philosophers();
    condition state[5];
    condition self[5];

    void entry pickup(int i)
    {
        state[i] = hungry;
        test(i);
        if(state[i] != eating)
            self[i].wait;
    }

    void entry putdown(int i)
    {
        state[i] = thinking;
        test((i+4)%5);
        test((i+1)%5);
    }

    void test(int k)
    {
        if(state[(k+4)%5] != eating && state[k] == hungry && state[(k+1)%5] != eating)
        {
            state[k] = eating;
            self[k].signal;
        }
    }

    for(i = 0; i <= 4; i++)         // 管程初始化
    {
        state[i] = thinking;
    }

cobegin
    void philosopher(int i)
    {
        while(true)
        {
            thinking;
            pickup;
            eating;
            putdown
        }
    }

(最近更新:2019年09月18日)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CH1 概论 1 1.1 操作系统的定义和目标 1 1.1.1 OS作为用户与计算机硬件之间的接口 2 1.1.2 OS作为计算机系统的资源管理者 2 1.1.3 OS作为虚拟计算机 2 1.2 操作系统的形成和发展 3 1.2.1 人工操作阶段 3 1.2.2 管理程序阶段 4 1.2.3 操作系统的形成 5 1.2.4 操作系统发展的主要动力 6 1.2.5 操作系统的发展 6 1.3 流行操作系统简介 9 1.3.1 DOS操作系统 9 1.3.2 Windows操作系统 9 1.3.3 OS/2操作系统 10 1.3.4 Unix操作系统 11 1.3.5 Macintosh操作系统 11 1.3.6 MINIX操作系统 12 1.3.7 Linux操作系统 12 1.3.8 MACH操作系统 12 1.4 操作系统的分类 13 1.4.1 批处理操作系统 13 1.4.2 分时操作系统 13 1.4.3 实时操作系统 14 1.4.4 网络操作系统 15 1.4.5 分布式操作系统 16 1.4.6 嵌入式操作系统 17 1.4.7 自由软件和Linux操作系统 18 1.5 操作系统的功能 19 1.5.1 处理机管理 20 1.5.2 存储管理 20 1.5.3 设备管理 20 1.5.4 文件管理 21 1.5.5 用户接口 21 1.6 操作系统提供的用户接口 21 1.6.1 联机用户接口——操作命令 21 1.6.2 脱机用户接口——作业控制语言 22 1.6.3 程序接口——系统调用 23 1.7 操作系统的主要特性和需要解决的主要问题 23 1.7.1 操作系统的主要特性 23 1.7.2 操作系统需要解决的主要问题 24 CH2 操作系统的运行环境 26 2.1 中央处理器 26 2.1.1 单机系统和多机系统 26 2.1.2 寄存器 26 2.1.3 程序状态字寄存器 26 2.1.4 机器指令 27 2.1.5 特权指令 27 2.1.6 处理器状态 28 2.2 中断技术 28 2.2.1 中断的概念 28 2.2.2 中断源 29 2.2.3 中断装置 29 2.2.4 中断事件的处理 30 2.2.5 中断的优先级和多重中断 33 2.2.6 实例研究:Windows 2000的中断处理 34 2.3 主存储器 41 2.3.1 存储器的层次 41 2.3.2 地址转换与存储保护 42 2.4 输入输出系统 42 2.4.1 I/O系统 42 2.4.2 I/O控制方式 42 CH3 进程与线程 45 3.1 多道程序设计 45 3.1.1 多道程序设计的概念 45 3.1.2 多道程序设计的实现 46 3.2 顺序性与并发性 47 3.2.1 程序执行的顺序性 47 3.2.2 程序执行的并发性 48 3.3 进程的基本概念 49 3.3.1 进程的定义和性质 49 3.3.2 进程的状态和转换 51 3.3.3 进程的描述 54 3.3.4 进程的控制 57 3.3.5 进程管理的实现模型 59 3.3.6 实例研究——Unix SVR4的进程管理 60 3.4 线程的基本概念 63 3.4.1 引入多线程技术的必要性 63 3.4.2 多线程环境中的进程与线程 65 3.4.3 线程的实现 69 3.4.4 实例研究:JAVA语言中的线程 71 3.5 实例研究:SOLARIS的进程与线程 78 3.5.1 Solaris中的进程与线程概念 78 3.5.2 Solaris的进程结构 79 3.5.3 Solaris的线程状态 80 3.5.4 Solaris的线程程序设计接口 81 3.6 实例研究:WINDOWS 2000的进程与线程 82 3.6.1 Windows 2000中的进程与线程概念 82 3.6.2 进程对象 82 3.6.3 线程对象 85 3.6.4 作业对象 87 CH4 处理机调度 89 4.1 处理机调度的类型 89 4.1.1 处理机调度的层次 89 4.1.2 高级调度 90 4.1.3 中级调度 91 4.1.4 低级调度 91 4.1.5 选择调度算法的原则 91 4.2 批处理作业的管理与调度 92 4.2.1 批处理作业的管理 92 4.2.2 批处理作业的调度 93 4.2.3 作业调度算法 93 4.3 进程调度 95 4.3.1 进程调度的功能 95 4.3.2 进程调度算法 96 4.3.3 实时调度 98 4.3.4 多处理器调度 99 4.3.5 实例研究——传统Unix调度算法 102 4.3.6 实例研究——Unix SVR4调度算法 103 4.3.7 实例研究——Windows NT调度算法 104 CH5 并发进程 106 5.1 并发进程 106 5.1.1 顺序性和并发性 106 5.1.2 与时间有关的错误 106 5.1.3 进程的交互(Interaction Among Processes)——协作和竞争 108 5.2 临界区管理 109 5.2.1 互斥和临界区 109 5.2.2 临界区管理的尝试 110 5.2.3 实现临界区管理的软件方法 111 5.2.4 实现临界区管理的硬件设施 113 5.3 信号量与PV操作 114 5.3.1 同步和同步机制 114 5.3.2 记录型信号量与PV操作 116 5.3.3 用记录型信号量实现互斥 117 5.3.4 记录型信号量解决生产者-消费者问题 119 5.3.5 记录型信号量解决读者-写者问题 121 5.3.6 记录型信号量解决理发师问题 123 5.3.7 AND型信号量机制 123 5.3.8 一般型信号量机制 125 5.4 管程 127 5.4.1 管程和条件变量 127 5.4.2 Hanson方法实现管程 130 5.4.3 Hoare方法实现管程 135 5.5 消息传递 138 5.5.1 消息传递的概念 138 5.5.2 消息传递的方式 139 5.5.3 有关消息传递实现的若干问题 140 5.5.4 管道和套接字 143
CH1 操作系统概论............................................................................................................................1 1.1 操作系统概观............................................................................................................................1 1.1.1 操作系统的定义和目标.....................................................................................................1 1.1.2 操作系统的作用与功能.....................................................................................................2 1.1.3 操作系统的主要特性.........................................................................................................4 1.2 操作系统的形成和发展............................................................................................................6 1.2.1 人工操作阶段.....................................................................................................................6 1.2.2 管理程序阶段.....................................................................................................................6 1.2.3 多道程序设计与操作系统的形成.....................................................................................8 1.2.4 操作系统的发展与分类...................................................................................................11 1.3 操作系统提供的服务和用户接口..........................................................................................18 1.3.1 操作系统提供的基本服务...............................................................................................18 1.3.2 操作系统提供的用户接口...............................................................................................19 1.3.3 程序接口与系统调用.......................................................................................................20 1.3.4 操作接口与系统程序.......................................................................................................22 1.4 操作系统的结构设计..............................................................................................................26 1.4.1 操作系统的构件...............................................................................................................26 1.4.2 整体式结构的操作系统...................................................................................................29 1.4.3 层次式结构的操作系统...................................................................................................29 1.4.4 虚拟机结构的操作系统...................................................................................................31 1.4.5 客户/服务器与微内核结构的操作系统..........................................................................32 1.4.6 操作系统功能的实现模型...............................................................................................35 1.4.7 实例研究:Windows 2000/XP 客户/服务器结构...........................................................37 1.5 流行操作系统简介..................................................................................................................41 1.5.1 DOS 操作系统...................................................................................................................41 1.5.2 Windows 操作系统............................................................................................................42 1.5.3 UNIX 操作系统家族.........................................................................................................44 1.5.4 自由软件和Linux 操作系统............................................................................................45 1.5.5 IBM系列操作系统...........................................................................................................47 1.5.6 其他流行操作系统...........................................................................................................49 1.6 本章小结.................................................................................................................................50 CH2 处理器管理..............................................................................................................................56 2.1 中央处理器..............................................................................................................................56 2.1.1 单处理器系统和多处理器系统.......................................................................................56 2.1.2 寄存器..............................................................................................................................57 2.1.3 机器指令与特权指令.......................................................................................................58 2.1.4 处理器状态.......................................................................................................................58 2.1.5 程序状态字寄存器...........................................................................................................59 V 2.2 中断技术.................................................................................................................................60 2.2.1 中断的概念.......................................................................................................................60 2.2.2 中断源分类.......................................................................................................................60 2.2.3 中断装置..........................................................................................................................61 2.2.4 中断处理程序...................................................................................................................63 2.2.5 中断事件的具体处理方法...............................................................................................63 2.2.6 中断的优先级和多重中断...............................................................................................68 2.2.7 实例研究:Windows 2000/XP 中断处理........................................................................69 2.2.8 实例研究:Solaris 中断处理..........................................................................................75 2.2.9 实例研究:Linux 中断处理.............................................................................................76 2.3 进程及其实现..........................................................................................................................79 2.3.1 进程的定义和属性...........................................................................................................79 2.3.2 进程的状态和转换...........................................................................................................80 2.3.3 进程的描述.......................................................................................................................83 2.3.4 进程切换与模式切换.......................................................................................................87 2.3.5 进程的控制.......................................................................................................................88 2.3.6 实例研究:UNIX SVR4 进程管理...................................................................................91 2.3.7 实例研究:Linux 进程管理.............................................................................................94 2.4 线程及其实现..........................................................................................................................97 2.4.1 引入多线程技术的动机...................................................................................................97 2.4.2 多线程环境中的进程与线程...........................................................................................98 2.4.3 线程的实现.....................................................................................................................103 2.4.4 实例研究:Solaris 的进程与线程................................................................................106 2.4.5 实例研究:Windows 2000/XP 的进程与线程..............................................................110 2.5 处理器调度............................................................................................................................116 2.5.1 处理器调度的层次.........................................................................................................117 2.5.2 高级调度.........................................................................................................................117 2.5.3 中级调度........................................................................................................................118 2.5.4 低级调度........................................................................................................................118 2.5.5 选择调度算法的原则.....................................................................................................119 2.6 批处理作业的管理与调度....................................................................................................119 2.6.1 作业和进程的关系.........................................................................................................119 2.6.2 批处理作业的管理.........................................................................................................120 2.6.3 批处理作业的调度.........................................................................................................121 2.6.4 作业调度算法.................................................................................................................121 2.7 低级调度................................................................................................................................124 2.7.1 低级调度的功能.............................................................................................................124 2.7.2 低级调度算法.................................................................................................................124 2.7.3 实时调度........................................................................................................................127 2.7.4 多处理器调度.................................................................................................................128 2.7.5 实例研究:UNIX SVR4 调度算法.................................................................................132 2.7.6 实例研究:Windows 2000/XP 调度算法......................................................................133 VI 2.7.7 实例研究:Linux 调度算法...........................................................................................140 2.8 本章小结................................................................................................................................143 CH3 并发进程................................................................................................................................151 3.1 并发进程................................................................................................................................151 3.1.1 顺序程序设计.................................................................................................................151 3.1.2 进程的并发性.................................................................................................................151 3.1.3 与时间有关的错误.........................................................................................................153 3.1.4 进程的交互(Interaction Among Processes):协作和竞争........................................155 3.2 临界区管理............................................................................................................................156 3.2.1 互斥和临界区.................................................................................................................156 3.2.2 临界区管理的尝试.........................................................................................................157 3.2.3 实现临界区管理的软件方法.........................................................................................158 3.2.4 实现临界区管理的硬件设施.........................................................................................160 3.3 信号量与PV 操作.................................................................................................................162 3.3.1 同步和同步机制.............................................................................................................162 3.3.2 记录型信号量与PV 操作..............................................................................................163 3.3.3 用记录型信号量实现互斥.............................................................................................166 3.3.4 记录型信号量解决生产者-消费者问题.......................................................................168 3.3.5 记录型信号量解决读者-写者问题...............................................................................170 3.3.6 记录型信号量解决理发师问题.....................................................................................172 3.4 管程.......................................................................................................................................172 3.4.1 管程和条件变量.............................................................................................................172 3.4.2 Hoare 方法实现管程.......................................................................................................175 3.4.3 Hanson 方法实现管程....................................................................................................178 3.5 进程通信................................................................................................................................184 3.5.1 信号通信机制.................................................................................................................184 3.5.2 共享文件通信机制` .......................................................................................................185 3.5.3 共享存储区通信机制.....................................................................................................188 3.5.4 消息传递通信机制.........................................................................................................189 3.5.5 有关消息传递实现的若干问题.....................................................................................192 3.6 死锁.......................................................................................................................................195 3.6.1 死锁的产生.....................................................................................................................195 3.6.2 死锁的定义.....................................................................................................................196 3.6.3 死锁的防止.....................................................................................................................197 3.6.4 死锁的避免.....................................................................................................................198 3.6.5 死锁的检测和解除.........................................................................................................206 3.7 实例研究:WINDOWS 2000/XP 的同步和通信机制...........................................................209 3.7.1 Windows 2000/XP 的同步和互斥机制...........................................................................209 3.7.2 Windows2000/XP 进程通信机制....................................................................................210 3.8 实例研究:LINUX 信号量机制.............................................................................................211 3.9 本章小结................................................................................................................................212 VII CH4 存储管理................................................................................................................................225 4.1 主存储器................................................................................................................................225 4.1.1 存储器的层次.................................................................................................................225 4.1.2 快速缓存(caching) ....................................................................................................226 4.1.3 地址转换与存储保护.....................................................................................................227 4.2 连续存储空间管理................................................................................................................227 4.2.1 单用户连续存储管理.....................................................................................................227 4.2.2 固定分区存储管理.........................................................................................................229 4.2.3 可变分区存储管理.........................................................................................................230 4.3 分页式存储管理....................................................................................................................235 4.3.1 分页式存储管理的基本原理.........................................................................................235 4.3.2 相联存储器和快表.........................................................................................................236 4.3.3 分页式存储空间的分配和去配.....................................................................................237 4.3.4 分页存储空间的页面共享和保护.................................................................................238 4.3.5 多级页表........................................................................................................................238 4.3.6 反置页表........................................................................................................................240 4.4 分段式存储管理....................................................................................................................241 4.4.1 程序的分段结构.............................................................................................................241 4.4.2 分段式存储管理的基本原理.........................................................................................241 4.4.3 段的共享........................................................................................................................243 4.4.4 分段和分页的比较.........................................................................................................243 4.5 虚拟存储管理........................................................................................................................243 4.5.1 虚拟存储器的概念.........................................................................................................243 4.5.2 请求分页虚拟存储管理.................................................................................................245 4.5.3 请求分段虚拟存储管理.................................................................................................261 4.5.4 请求段页式虚拟存储管理.............................................................................................262 4.6 实例研究:INTEL X86/PENTIUM 存储管理硬件设施...........................................................263 4.6.1 Intel x86/Pentium 段机制——段选择符和段描述符....................................................264 4.6.2 Intel x86/Pentium 运行模式选择....................................................................................265 4.6.3 Intel x86/Pentium 地址转换............................................................................................265 4.6.4 Intel x86/Pentium 页式或段页式地址转换....................................................................266 4.7 实例研究:WINDOWS 2000/XP 虚拟存储管理...................................................................268 4.7.1 进程地址空间布局.........................................................................................................268 4.7.2 用户空间内存分配.........................................................................................................269 4.7.3 内存管理的实现.............................................................................................................273 4.8 实例研究:LINUX 的存储管理.............................................................................................279 4.8.1 Linux 存储管理概述.......................................................................................................279 4.8.2 虚拟地址空间的组织和管理.........................................................................................279 4.8.3 物理内存空间的管理.....................................................................................................280 4.8.4 用户态内存的申请与释放.............................................................................................281 4.8.5 内存的共享和保护.........................................................................................................282 VIII 4.8.6 交换空间、页面的换出和调入.....................................................................................283 4.8.7 缓冲机制........................................................................................................................284 4.9 本章小结................................................................................................................................285 CH5 设备管理................................................................................................................................292 5.1 I/O 硬件原理..........................................................................................................................292 5.1.1 I/O 系统...........................................................................................................................292 5.1.2 I/O 控制方式...................................................................................................................293 5.1.3 设备控制器.....................................................................................................................297 5.2 I/O 软件原理..........................................................................................................................298 5.2.1 I/O 软件的设计目标和原则...........................................................................................298 5.2.2 I/O 中断处理程序...........................................................................................................299 5.2.3 设备驱动程序.................................................................................................................300 5.2.4 与硬件无关的操作系统I/O 软件.................................................................................300 5.2.5 用户空间的I/O 软件.....................................................................................................302 5.3 具有通道的I/O 系统管理.....................................................................................................302 5.3.1 通道命令和通道程序.....................................................................................................302 5.3.2 I/O 指令和主机I/O 程序................................................................................................304 5.3.3 通道启动和I/O 操作过程.............................................................................................305 5.4 缓冲技术................................................................................................................................306 5.4.1 单缓冲............................................................................................................................306 5.4.2 双缓冲............................................................................................................................307 5.4.3 多缓冲............................................................................................................................307 5.5 驱动调度技术........................................................................................................................308 5.5.1 存储设备的物理结构.....................................................................................................308 5.5.2 循环排序........................................................................................................................309 5.5.3 优化分布........................................................................................................................310 5.5.4 交替地址........................................................................................................................311 5.5.5 搜查定位........................................................................................................................311 5.5.6 独立磁盘冗余阵列.........................................................................................................313 5.5.7 提高磁盘I/O 速度的一些方法.....................................................................................316 5.6 设备分配................................................................................................................................316 5.6.1 设备独立性.....................................................................................................................316 5.6.2 设备分配........................................................................................................................317 5.7 虚拟设备................................................................................................................................318 5.7.1 问题的提出.....................................................................................................................318 5.7.2 SPOOLING 的设计和实现.............................................................................................319 5.7.3 SPOOLING 应用例子.....................................................................................................321 5.8 实例研究:WINDOWS 2000/XP 的I/O 系统........................................................................321 5.8.1 Windows 2000/XP I/O 系统结构和组件.........................................................................321 5.8.2 Windows 2000/XP I/O 系统的数据结构.........................................................................325 5.8.3 Windows2000/XP 设备驱动程序....................................................................................328 IX 5.8.4 Windows 2000/XP I/O 处理.............................................................................................331 5.8.5 Windows 2000/XP 高速缓存管理................................................................................333 5.9 实例研究:LINUX 设备管理.................................................................................................344 5.9.1 Linux 设备管理概述.......................................................................................................344 5.9.2 Linux 硬盘管理...............................................................................................................345 5.9.3 Linux 网络设备...............................................................................................................346 5.9.4 Linux 设备驱动程序.......................................................................................................347 5.10 本章小结..............................................................................................................................347 CH6 文件管理................................................................................................................................352 6.1 文件.......................................................................................................................................352 6.1.1 文件的概念.....................................................................................................................352 6.1.2 文件的命名.....................................................................................................................353 6.1.3 文件的类型.....................................................................................................................353 6.1.4 文件的属性.....................................................................................................................354 6.1.5 文件的存取方法.............................................................................................................355 6.1.6 文件的使用.....................................................................................................................356 6.2 文件目录................................................................................................................................357 6.2.1 文件目录与文件目录项.................................................................................................357 6.2.2 一级目录结构.................................................................................................................358 6.2.3 二级目录结构.................................................................................................................358 6.2.4 树形目录结构.................................................................................................................359 6.3 文件组织与数据存储............................................................................................................361 6.3.1 文件的存储.....................................................................................................................361 6.3.2 文件的逻辑结构.............................................................................................................361 6.3.3 文件的物理结构.............................................................................................................365 6.4 文件系统其他功能的实现....................................................................................................371 6.4.1 文件操作的实现.............................................................................................................371 6.4.2 UNIX/Linux 文件操作系统调用.....................................................................................372 6.4.3 文件卷的安装和使用.....................................................................................................375 6.4.4 文件共享........................................................................................................................377 6.4.5 层次式文件系统模型.....................................................................................................382 6.4.6 辅存空间管理.................................................................................................................383 6.4.7 内存映射文件.................................................................................................................385 6.4.8 虚拟文件系统.................................................................................................................386 6.5 实例研究:LINUX 文件管理.................................................................................................387 6.5.1 Linux 文件管理概述.......................................................................................................387 6.5.2 Linux 文件系统的安装和管理........................................................................................388 6.5.3 虚拟文件系统VFS.........................................................................................................389 6.5.4 文件系统管理的缓冲机制.............................................................................................392 6.5.5 系统打开文件表.............................................................................................................394 6.5.6 EXT2 文件系统...............................................................................................................395 X 6.6 实例研究:WINDOWS 2000/XP 文件系统...........................................................................397 6.6.1 Windows 2000/XP 文件系统概述...................................................................................397 6.6.2 Windows2000/XP 文件系统模型和FSD 体系结构.......................................................398 6.6.3 NTFS 文件系统驱动程序...............................................................................................401 6.6.4 NTFS 在磁盘上的结构...................................................................................................402 6.6.5 NTFS 可恢复性支持.......................................................................................................405 6.6.6 NTFS 安全性支持...........................................................................................................405 6.7 本章小结................................................................................................................................406 CH7 操作系统的安全与保护........................................................................................................411 7.1 安全性概述............................................................................................................................411 7.2 安全威胁及其类型................................................................................................................411 7.3 保护.......................................................................................................................................415 7.3.1 操作系统保护层次.........................................................................................................415 7.3.2 内存储器的保护.............................................................................................................415 7.3.3 面向用户的访问控制.....................................................................................................415 7.3.4 面向数据的访问控制.....................................................................................................416 7.4 入侵者...................................................................................................................................416 7.4.1 入侵技术.........................................................................................................................416 7.4.2 口令保护.........................................................................................................................417 7.4.3 入侵检测.........................................................................................................................420 7.5 病毒(恶意软件)................................................................................................................421 7.5.1 病毒及其威胁.................................................................................................................421 7.5.2 病毒的特性.....................................................................................................................423 7.5.3 病毒的类型.....................................................................................................................423 7.5.4 反病毒的方法.................................................................................................................423 7.5.5 电子邮件病毒.................................................................................................................425 7.6 保护的基本机制、策略与模型............................................................................................426 7.6.1 机制、策略与模型.........................................................................................................426 7.6.2 身份认证机制.................................................................................................................438 7.6.3 授权机制.........................................................................................................................442 7.6.4 加密机制.........................................................................................................................452 7.6.5 审计................................................................................................................................456 7.7 实例研究:WINDOWS 2000/XP 的安全机制.......................................................................457 7.7.1. Windows 2000/XP 安全性概述.......................................................................................457 7.7.2. Windows2000/XP 安全性系统组件................................................................................457 7.7.3. Windows2000/XP 保护对象............................................................................................458 7.7.4. 访问控制策略.................................................................................................................458 7.7.5. 访问令牌.........................................................................................................................459 7.7.6. 安全描述符.....................................................................................................................459 7.8 本章小结................................................................................................................................461 CH8 网络和分布式操作系统........................................................................................................465 XI 8.1 计算机网络概述....................................................................................................................465 8.1.1 计算机网络的概念.........................................................................................................465 8.1.2 数据通信基本概念.........................................................................................................467 8.1.3 网络体系结构.................................................................................................................468 8.2 网络操作系统........................................................................................................................474 8.2.1 网络操作系统概述.........................................................................................................474 8.2.2 几个流行的网络操作系统.............................................................................................475 8.2.3 网络操作系统实例.........................................................................................................475 8.3 分布式操作系统....................................................................................................................477 8.3.1 分布式系统概述.............................................................................................................477 8.3.2 分布式进程通信.............................................................................................................478 8.3.3 分布式资源管理.............................................................................................................484 8.3.4 分布式进程同步.............................................................................................................485 8.3.5 分布式系统中的死锁.....................................................................................................495 8.3.6 分布式文件系统.............................................................................................................497 8.3.7 分布式进程迁移.............................................................................................................502 8.4 实例研究:WINDOWS2000 网络体系结构和网络服务.......................................................504 8.4.1 Windows 2000 网络体系结构.........................................................................................504 8.4.2 WindowS 2000 的层次化网络服务.................................................................................518 8.5 本章小结................................................................................................................................522
经典教材《操作系统设计与实现》随书随书资源iso 本书是关于操作系统的权威教材。大多数关于操作系统的图书均重理论而轻实践,而本书则在这两者之间进行了较好的折中。本册详细探讨了操作系统的基本原理,包括进程、进程间通信、信号量、管程、消息传递、调度算法、输入、输出、死锁、设备驱动程序、存储管理、调页算法、文件系统设计、安全和保护机制等;此外,还详细讨论了一个特殊的操作系统MINIX 3(一个与UNIX兼容的操作系统),并提供了该系统的源代码(见本书下册),以便于读者仔细研究。这种安排不仅可让读者了解操作系统的基本原理,而且可让读者了解到这些基本原理是如何应用到真实的操作系统中去的。 本书适用于高校计算机专业的学生,也可供程序设计人员、工程技术人员、系统架构师等相关人员参考。 作者简介 Andrew S.Tanenbaum分别在麻省理工学院加州大学伯克利分校获得学士与博士学位。现任荷兰阿姆斯特丹Vrije大学计算机教授并领导着一个计算机系统研究小组。到2005年1月卸任为止,他担任计算与成像高级学院院长一职已有12年。 Tanenbaum过去的研究领域包括编译器、操作系统、网络和局域分布式系统,而现在的研究方向则主要为计算机安全,尤其是操作系统、网络以及分布式系统的安全。在所有这些研究领域,Tanenbaum发表了超过100篇论文,并出版了5本书籍。 Tanenbaum教授还编写了大量软件。他是Amsterdam Compiler Kit(一种广泛使用的、用于编写可移植编译器以及MINIX的工具集)的主要开发者,而该系统则是Linux诞生的灵感与基础。与他的博士生及程序员一起,他帮助设计了Amoeba分布式操作系统(一个基于微内核的、高性能局域分布式操作系统)。此后,他是Globe(一个可处理10亿用户的广域分布式操作系统)的设计者之一。所有这些软件现在均可在互联网上免费获得。 他的博士生在毕业后均取得了很大的成绩,他为此感到非常骄傲。 Tanenbaum教授是ACM会士、IEEE会士以及荷兰皇家科学艺术院院士。他还是1994年度ACM Karl V.Karlstrom杰出教育家奖的获得者,1997年度ACM/SIGCSE计算机科学教育杰出贡献奖的获得者,以及2002年度优秀教材奖的获得者。2004年,他被推选为荷兰皇家学会的五位新学会教授之一。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值