操作系统设计:Xinu方法

操作系统设计:Xinu方法
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] , , ,
2013-12
版次: 1
ISBN: 9787111428268
定价: 79.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 368页
正文语种: 简体中文
原版书名: Operating System Design: The Xinu Approach, Linksys Version
38人买过
  •   《计算机科学丛书:操作系统设计:Xinu方法》对操作系统的内存管理、进程管理、进程协调和同步、进程间通信、实时时钟管理、设备无关的I/O、设备驱动、网络协议、文件系统等进行了详细的介绍,并利用分层的设计范式,以一种有序、易于理解的方式来阐述这些内容。《计算机科学丛书:操作系统设计:Xinu方法》以Xinu操作系统为系统设计的样板和模式,从一个裸机开始,一步一步地设计和实现一个小型但优雅的操作系统。本书的样本代码可以运行在Linksys E2100L无线路由器上。
      《计算机科学丛书:操作系统设计:Xinu方法》适用于高年级的本科生或低年级的研究生,也适用于那些想了解操作系统的计算机从业人员。学习本书前,学生需要具备基本的程序设计能力,应当理解基本的数据结构,包括链表、栈和队列,并且应当用C语言写过程序。   Douglas Comer,美国普度大学计算机系杰出教授,国际公认的计算机网络、TCP/IP协议、Internet和操作系统设计方面的专家。Comer出版了多部优秀的教材和专著,被翻译成16种语言,并广泛用于世界各地的工业界和学术界。Comer教授划时代的三卷巨著《Internetworking with TCP/IP》对网络和网络教育产生了革命性的影响。Comer博士是ACM院士、普度教育学院院士。 出版者的话
    译者序
    前言
    关于作者

    第1章 引言和概述
    1.1 操作系统
    1.2 本书的研究方法
    1.3 分层设计
    1.4 Xinu操作系统
    1.5 操作系统不是什么
    1.6 从外面看操作系统
    1.7 其他章节概要
    1.8 观点
    1.9 总结
    练习

    第2章 并发执行与操作系统服务
    2.1 引言
    2.2 多活动的编程模型
    2.3 操作系统服务
    2.4 并发处理的概念和术语
    2.5 串行程序和并发程序的区别
    2.6 多进程共享同一段代码
    2.7 进程退出与进程终止
    2.8 共享内存、竞争条件和同步
    2.9 信号量与互斥
    2.10 Xinu中的类型命名方法
    2.11 使用Kputc和Kprintf进行操作系统的调试
    2.12 观点
    2.13 总结
    练习

    第3章 硬件和运行时环境概览
    3.1 引言
    3.2 E2100L的物理和逻辑结构
    3.3 处理器结构和寄存器
    3.4 总线操作:获取-存储范式
    3.5 直接内存访问
    3.6 总线地址空间
    3.7 内核段KSEG0和KSEG1的内容
    3.8 总线启动的静态配置
    3.9 调用约定和运行时栈
    3.10 中断和中断处理
    3.11 异常处理
    3.12 计时器硬件
    3.13 串行通信
    3.14 轮询与中断驱动I/O
    3.15 内存缓存和KSEG
    3.16 存储布局
    3.17 内存保护
    3.18 观点
    练习

    第4章 链表与队列操作
    4.1 引言
    4.2 用于进程链表的统一数据结构
    4.3 简洁的链表数据结构
    4.4 队列数据结构的实现
    4.5 内联队列操作函数
    4.6 获取链表中进程的基础函数
    4.7 FIFO队列操作
    4.8 优先级队列的操作
    4.9 链表初始化
    4.10 观点
    4.11 总结
    练习

    第5章 调度和上下文切换
    5.1 引言
    5.2 进程表
    5.3 进程状态
    5.4 就绪和当前状态
    5.5 调度策略
    5.6 调度的实现
    5.7 上下文切换的实现
    5.8 内存中保存的状态
    5.9 在MIPS处理器上切换上下文
    5.10 重新启动进程执行的地址
    5.11 并发执行和null进程
    5.12 使进程准备执行和调度不变式
    5.13 推迟重新调度
    5.14 其他进程调度算法
    5.15 观点
    5.16 总结
    练习

    第6章 更多进程管理
    6.1 引言
    6.2 进程挂起和恢复
    6.3 自我挂起和信息隐藏
    6.4 系统调用的概念
    6.5 禁止中断和恢复中断
    6.6 系统调用模板
    6.7 系统调用返回SYSERR和OK值
    6.8 挂起的实现
    6.9 挂起当前进程
    6.10 suspend函数的返回值
    6.11 进程终止和进程退出
    6.12 进程创建
    6.13 其他进程管理函数
    6.14 总结
    练习

    第7章 协调并发进程
    7.1 引言
    7.2 进程同步的必要性
    7.3 计数信号量的概念
    7.4 避免忙等待
    7.5 信号量策略和进程选择
    7.6 等待状态
    7.7 信号量数据结构
    7.8 系统调用wait
    7.9 系统调用signal
    7.10 静态和动态信号量分配
    7.11 动态信号量的实现示例
    7.12 信号量删除
    7.13 信号量重置
    7.14 多核处理器之间的协调
    7.15 观点
    7.16 总结
    练习

    第8章 消息传递
    8.1 引言
    8.2 两种类型的消息传递服务
    8.3 消息使用资源的限制
    8.4 消息传递函数和状态转换
    8.5 send的实现
    8.6 receive的实现
    8.7 非阻塞消息接收的实现
    8.8 观点
    8.9 总结
    练习

    第9章 基本内存管理
    9.1 引言
    9.2 内存的类型
    9.3 重量级进程的定义
    9.4 小型嵌入式系统的内存管理
    9.5 程序段和内存区域
    9.6 嵌入式系统中的动态内存分配
    9.7 低层内存管理器的设计
    9.8 分配策略和内存持久性
    9.9 追踪空闲内存
    9.10 低层内存管理的实现
    9.11 分配堆存储
    9.12 分配栈存储
    9.13 释放堆和栈存储
    9.14 观点
    9.15 总结
    练习

    第10章 高级内存管理和虚拟内存
    10.1 引言
    10.2 分区空间分配
    10.3 缓冲池
    10.4 分配缓冲区
    10.5 将缓冲区返回给缓冲池
    10.6 创建缓冲池
    10.7 初始化缓冲池表
    10.8 虚拟内存和内存复用
    10.9 实地址空间和虚地址空间
    10.10 支持按需换页的硬件
    10.11 使用页表的地址翻译
    10.12 页表项中的元数据
    10.13 按需换页以及设计上的问题
    10.14 页面替换和全局时钟算法
    10.15 观点
    10.16 总结
    练习

    第11章 高层消息传递
    11.1 引言
    11.2 进程间通信端口
    11.3 端口实现
    11.4 端口表初始化
    11.5 端口创建
    11.6 向端口发送消息
    11.7 从端口接收消息
    11.8 端口的删除和重置
    11.9 观点
    11.10 总结
    练习

    第12章 中断处理
    12.1 引言
    12.2 中断的优点
    12.3 中断分配
    12.4 中断向量
    12.5 中断向量号的分配
    12.6 硬件中断
    12.7 中断请求的局限性和中断多路复用
    12.8 中断软件和分配
    12.9 中断分配器底层部分
    12.10 中断分配器高层部分
    12.11 禁止中断
    12.12 函数中中断代码引起的限制
    12.13 中断过程中重新调度的必要性
    12.14 中断过程中的重新调度
    12.15 观点
    12.16 总结
    练习

    第13章 实时时钟管理
    13.1 引言
    13.2 定时事件
    13.3 实时时钟和计时器硬件
    13.4 处理实时时钟中断
    13.5 延时与抢占
    13.6 使用计时器来模拟实时时钟
    13.7 抢占的实现
    13.8 使用增量链表对延迟进行有效管理
    13.9 增量链表的实现
    13.10 将进程转入睡眠
    13.11 定时消息接收
    13.12 唤醒睡眠进程
    13.13 时钟中断处理
    13.14 时钟初始化
    13.15 间隔计时器管理
    13.16 观点
    13.17 总结
    练习

    第14章 设备无关的I/O
    14.1 引言
    14.2 I/O和设备驱动的概念结构
    14.3 接口抽象和驱动抽象
    14.4 I/O接口的一个示例
    14.5 打开-读-写-关闭范式
    14.6 绑定I/O操作和设备名
    14.7 Xinu中的设备名
    14.8 设备转换表概念
    14.9 设备和共享驱动的多个副本
    14.10 高层I/O操作的实现
    14.11 其他高层I/O函数
    14.12 打开、关闭和引用计数
    14.13 devtab中的空条目和错误条目
    14.14 I/O系统的初始化
    14.15 观点
    14.16 总结
    练习

    第15章 设备驱动示例
    15.1 引言
    15.2 tty抽象
    15.3 tty设备驱动的组成
    15.4 请求队列和缓冲区
    15.5 上半部和下半部的同步
    15.6 硬件缓冲区和驱动设计
    15.7 tty控制块和数据声明
    15.8 次设备号
    15.9 上半部tty字符输入(ttyGetc)
    15.10 通用上半部tty输入(ttyRead)
    15.11 上半部tty字符输出(ttyPutc)
    15.12 开始输出(ttyKickOut)
    15.13 上半部tty多字符输出(ttyWrite)
    15.14 下半部tty驱动函数(ttyInterrupt)
    15.15 输出中断处理(ttyInter_out)
    15.16 tty输入处理(tty Inter-in)
    15.17 tty控制块初始化(ttyInit)
    15.18 设备驱动控制
    15.19 观点
    15.20 总结
    练习

    第16章 DMA设备和驱动(以太网)
    16.1 引言
    16.2 直接内存访问和缓冲区
    16.3 多缓冲区和环
    16.4 使用DMA的以太网驱动例子
    16.5 设备的硬件定义和常量
    16.6 环和内存缓冲区
    16.7 以太网控制块的定义
    16.8 设备和驱动初始化
    16.9 分配输入缓冲区
    16.10 从以太网设备中读取数据包
    16.11 向以太网设备中写入数据包
    16.12 以太网设备的中断处理
    16.13 以太网控制函数
    16.14 观点
    16.15 总结
    练习

    第17章 最小互联网协议栈
    17.1 引言
    17.2 所需的功能
    17.3 同步对话、超时和进程
    17.4 ARP函数
    17.5 网络数据包的定义
    17.6 网络输入进程
    17.7 UDP表的定义
    17.8 UDP函数
    17.9 互联网控制报文协议
    17.10 动态主机配置协议
    17.11 观点
    17.12 总结
    练习

    第18章 远程磁盘驱动
    18.1 引言
    18.2 磁盘抽象
    18.3 磁盘操作驱动支持
    18.4 块传输和高层I/O函数
    18.5 远程磁盘范式
    18.6 磁盘操作的语义
    18.7 驱动数据结构的定义
    18.8 驱动初始化(rdsInit)
    18.9 上半部打开函数(rdsOpen)
    18.10 远程通信函数(rdscomm)
    18.11 上半部写函数(rdsWrite)
    18.12 上半部读函数(rdsRead)
    18.13 刷新挂起的请求
    18.14 上半部控制函数(rdsControl)
    18.15 分配磁盘缓冲区(rdsbufalloc)
    18.16 上半部关闭函数(rdsClose)
    18.17 下半部通信进程(rdsprocess)
    18.18 观点
    18.19 总结
    练习

    第19章 文件系统
    19.1 文件系统是什么
    19.2 文件操作的示例集合
    19.3 本地文件系统的设计
    19.4 Xinu文件系统的数据结构
    19.5 索引管理器的实现
    19.6 清空索引块(lfibclear)
    19.7 获取索引块(lfibget)
    19.8 存储索引块(lfibput)
    19.9 从空闲链表中分配索引块(lfiballoc)
    19.10 从空闲链表中分配数据块(lfdballoc)
    19.11 使用设备无关的I/O函数的文件操作
    19.12 文件系统的设备设置和函数名称
    19.13 本地文件系统打开函数(lfsOpen)
    19.14 关闭文件伪设备(lflClose)
    19.15 刷新磁盘中的数据(lfflush)
    19.16 文件的批量传输函数(lflWrite,lflRead)
    19.17 在文件中查找一个新位置(lflSeek)
    19.18 从文件中提取一个字节(lflGetc)
    19.19 改变文件中的一个字节(lflPutc)
    19.20 载入索引块和数据块(lfsetup)
    19.21 主文件系统设备的初始化(lfsInit)
    19.22 伪设备的初始化(lflInit)
    19.23 文件截断(lftruncate)
    19.24 初始文件系统的创建(lfscreate)
    19.25 观点
    19.26 总结
    练习

    第20章 远程文件机制
    20.1 引言
    20.2 远程文件访问
    20.3 远程文件语义
    20.4 远程文件设计和消息
    20.5 远程文件服务器通信
    20.6 发送一个基本消息
    20.7 网络字节序
    20.8 使用设备范式的远程文件系统
    20.9 打开远程文件
    20.10 检查文件模式
    20.11 关闭远程文件
    20.12 读远程文件
    20.13 写远程文件
    20.14 远程文件的定位
    20.15 远程文件单字符I/O
    20.16 远程文件系统控制函数
    20.17 初始化远程文件数据结构
    20.18 观点
    20.19 总结
    练习

    第21章 句法名字空间
    21.1 引言
    21.2 透明与名字空间的抽象
    21.3 多种命名方案
    21.4 命名系统设计的其他方案
    21.5 基于句法的名字空间
    21.6 模式和替换
    21.7 前缀模式
    21.8 名字空间的实现
    21.9 名字空间的数据结构和常量
    21.10 增加名字空间前缀表的映射
    21.11 使用前缀表进行名字映射
    21.12 打开命名文件
    21.13 名字空间初始化
    21.14 对前缀表中的项进行排序
    21.15 选择一个逻辑名字空间
    21.16 默认层次和空前缀
    21.17 额外的对象操作函数
    21.18 名字空间方法的优点和限制
    21.19 广义模式
    21.20 观点
    21.21 总结
    练习

    第22章 系统初始化
    22.1 引言
    22.2 引导程序:从头开始
    22.3 操作系统初始化
    22.4 在E2100L上启动一个可选的映像
    22.5 Xinu初始化
    22.6 系统启动
    22.7 从程序转化为进程
    22.8 观点
    22.9 总结
    练习

    第23章 异常处理
    23.1 引言
    23.2 异常、陷阱和恶意中断
    23.3 panic的实现
    23.4 观点
    23.5 总结
    练习

    第24章 系统配置
    24.1 引言
    24.2 多重配置的需求
    24.3 Xinu系统配置
    24.4 Xinu配置文件的内容
    24.5 计算次设备号
    24.6 配置Xinu系统的步骤
    24.7 观点
    24.8 总结
    练习

    第25章 一个用户接口例子:Xinu壳
    25.1 引言
    25.2 用户接口
    25.3 命令和设计原则
    25.4 一个简化壳的设计决策
    25.5 壳的组织和操作
    25.6 词法符号的定义
    25.7 命令行语法的定义
    25.8 Xinu壳的实现
    25.9 符号的存储
    25.10 词法分析器代码
    25.11 命令解释器的核心
    25.12 命令名查询和内部处理
    25.13 传给命令的参数
    25.14 向外部命令传递参数
    25.15 I/O重定向
    25.16 示例命令函数(sleep)
    25.17 观点
    25.18 总结

    练习
    附录1 操作系统移植
    附录2 Xinu设计注解
    索引
  • 内容简介:
      《计算机科学丛书:操作系统设计:Xinu方法》对操作系统的内存管理、进程管理、进程协调和同步、进程间通信、实时时钟管理、设备无关的I/O、设备驱动、网络协议、文件系统等进行了详细的介绍,并利用分层的设计范式,以一种有序、易于理解的方式来阐述这些内容。《计算机科学丛书:操作系统设计:Xinu方法》以Xinu操作系统为系统设计的样板和模式,从一个裸机开始,一步一步地设计和实现一个小型但优雅的操作系统。本书的样本代码可以运行在Linksys E2100L无线路由器上。
      《计算机科学丛书:操作系统设计:Xinu方法》适用于高年级的本科生或低年级的研究生,也适用于那些想了解操作系统的计算机从业人员。学习本书前,学生需要具备基本的程序设计能力,应当理解基本的数据结构,包括链表、栈和队列,并且应当用C语言写过程序。
  • 作者简介:
      Douglas Comer,美国普度大学计算机系杰出教授,国际公认的计算机网络、TCP/IP协议、Internet和操作系统设计方面的专家。Comer出版了多部优秀的教材和专著,被翻译成16种语言,并广泛用于世界各地的工业界和学术界。Comer教授划时代的三卷巨著《Internetworking with TCP/IP》对网络和网络教育产生了革命性的影响。Comer博士是ACM院士、普度教育学院院士。
  • 目录:
    出版者的话
    译者序
    前言
    关于作者

    第1章 引言和概述
    1.1 操作系统
    1.2 本书的研究方法
    1.3 分层设计
    1.4 Xinu操作系统
    1.5 操作系统不是什么
    1.6 从外面看操作系统
    1.7 其他章节概要
    1.8 观点
    1.9 总结
    练习

    第2章 并发执行与操作系统服务
    2.1 引言
    2.2 多活动的编程模型
    2.3 操作系统服务
    2.4 并发处理的概念和术语
    2.5 串行程序和并发程序的区别
    2.6 多进程共享同一段代码
    2.7 进程退出与进程终止
    2.8 共享内存、竞争条件和同步
    2.9 信号量与互斥
    2.10 Xinu中的类型命名方法
    2.11 使用Kputc和Kprintf进行操作系统的调试
    2.12 观点
    2.13 总结
    练习

    第3章 硬件和运行时环境概览
    3.1 引言
    3.2 E2100L的物理和逻辑结构
    3.3 处理器结构和寄存器
    3.4 总线操作:获取-存储范式
    3.5 直接内存访问
    3.6 总线地址空间
    3.7 内核段KSEG0和KSEG1的内容
    3.8 总线启动的静态配置
    3.9 调用约定和运行时栈
    3.10 中断和中断处理
    3.11 异常处理
    3.12 计时器硬件
    3.13 串行通信
    3.14 轮询与中断驱动I/O
    3.15 内存缓存和KSEG
    3.16 存储布局
    3.17 内存保护
    3.18 观点
    练习

    第4章 链表与队列操作
    4.1 引言
    4.2 用于进程链表的统一数据结构
    4.3 简洁的链表数据结构
    4.4 队列数据结构的实现
    4.5 内联队列操作函数
    4.6 获取链表中进程的基础函数
    4.7 FIFO队列操作
    4.8 优先级队列的操作
    4.9 链表初始化
    4.10 观点
    4.11 总结
    练习

    第5章 调度和上下文切换
    5.1 引言
    5.2 进程表
    5.3 进程状态
    5.4 就绪和当前状态
    5.5 调度策略
    5.6 调度的实现
    5.7 上下文切换的实现
    5.8 内存中保存的状态
    5.9 在MIPS处理器上切换上下文
    5.10 重新启动进程执行的地址
    5.11 并发执行和null进程
    5.12 使进程准备执行和调度不变式
    5.13 推迟重新调度
    5.14 其他进程调度算法
    5.15 观点
    5.16 总结
    练习

    第6章 更多进程管理
    6.1 引言
    6.2 进程挂起和恢复
    6.3 自我挂起和信息隐藏
    6.4 系统调用的概念
    6.5 禁止中断和恢复中断
    6.6 系统调用模板
    6.7 系统调用返回SYSERR和OK值
    6.8 挂起的实现
    6.9 挂起当前进程
    6.10 suspend函数的返回值
    6.11 进程终止和进程退出
    6.12 进程创建
    6.13 其他进程管理函数
    6.14 总结
    练习

    第7章 协调并发进程
    7.1 引言
    7.2 进程同步的必要性
    7.3 计数信号量的概念
    7.4 避免忙等待
    7.5 信号量策略和进程选择
    7.6 等待状态
    7.7 信号量数据结构
    7.8 系统调用wait
    7.9 系统调用signal
    7.10 静态和动态信号量分配
    7.11 动态信号量的实现示例
    7.12 信号量删除
    7.13 信号量重置
    7.14 多核处理器之间的协调
    7.15 观点
    7.16 总结
    练习

    第8章 消息传递
    8.1 引言
    8.2 两种类型的消息传递服务
    8.3 消息使用资源的限制
    8.4 消息传递函数和状态转换
    8.5 send的实现
    8.6 receive的实现
    8.7 非阻塞消息接收的实现
    8.8 观点
    8.9 总结
    练习

    第9章 基本内存管理
    9.1 引言
    9.2 内存的类型
    9.3 重量级进程的定义
    9.4 小型嵌入式系统的内存管理
    9.5 程序段和内存区域
    9.6 嵌入式系统中的动态内存分配
    9.7 低层内存管理器的设计
    9.8 分配策略和内存持久性
    9.9 追踪空闲内存
    9.10 低层内存管理的实现
    9.11 分配堆存储
    9.12 分配栈存储
    9.13 释放堆和栈存储
    9.14 观点
    9.15 总结
    练习

    第10章 高级内存管理和虚拟内存
    10.1 引言
    10.2 分区空间分配
    10.3 缓冲池
    10.4 分配缓冲区
    10.5 将缓冲区返回给缓冲池
    10.6 创建缓冲池
    10.7 初始化缓冲池表
    10.8 虚拟内存和内存复用
    10.9 实地址空间和虚地址空间
    10.10 支持按需换页的硬件
    10.11 使用页表的地址翻译
    10.12 页表项中的元数据
    10.13 按需换页以及设计上的问题
    10.14 页面替换和全局时钟算法
    10.15 观点
    10.16 总结
    练习

    第11章 高层消息传递
    11.1 引言
    11.2 进程间通信端口
    11.3 端口实现
    11.4 端口表初始化
    11.5 端口创建
    11.6 向端口发送消息
    11.7 从端口接收消息
    11.8 端口的删除和重置
    11.9 观点
    11.10 总结
    练习

    第12章 中断处理
    12.1 引言
    12.2 中断的优点
    12.3 中断分配
    12.4 中断向量
    12.5 中断向量号的分配
    12.6 硬件中断
    12.7 中断请求的局限性和中断多路复用
    12.8 中断软件和分配
    12.9 中断分配器底层部分
    12.10 中断分配器高层部分
    12.11 禁止中断
    12.12 函数中中断代码引起的限制
    12.13 中断过程中重新调度的必要性
    12.14 中断过程中的重新调度
    12.15 观点
    12.16 总结
    练习

    第13章 实时时钟管理
    13.1 引言
    13.2 定时事件
    13.3 实时时钟和计时器硬件
    13.4 处理实时时钟中断
    13.5 延时与抢占
    13.6 使用计时器来模拟实时时钟
    13.7 抢占的实现
    13.8 使用增量链表对延迟进行有效管理
    13.9 增量链表的实现
    13.10 将进程转入睡眠
    13.11 定时消息接收
    13.12 唤醒睡眠进程
    13.13 时钟中断处理
    13.14 时钟初始化
    13.15 间隔计时器管理
    13.16 观点
    13.17 总结
    练习

    第14章 设备无关的I/O
    14.1 引言
    14.2 I/O和设备驱动的概念结构
    14.3 接口抽象和驱动抽象
    14.4 I/O接口的一个示例
    14.5 打开-读-写-关闭范式
    14.6 绑定I/O操作和设备名
    14.7 Xinu中的设备名
    14.8 设备转换表概念
    14.9 设备和共享驱动的多个副本
    14.10 高层I/O操作的实现
    14.11 其他高层I/O函数
    14.12 打开、关闭和引用计数
    14.13 devtab中的空条目和错误条目
    14.14 I/O系统的初始化
    14.15 观点
    14.16 总结
    练习

    第15章 设备驱动示例
    15.1 引言
    15.2 tty抽象
    15.3 tty设备驱动的组成
    15.4 请求队列和缓冲区
    15.5 上半部和下半部的同步
    15.6 硬件缓冲区和驱动设计
    15.7 tty控制块和数据声明
    15.8 次设备号
    15.9 上半部tty字符输入(ttyGetc)
    15.10 通用上半部tty输入(ttyRead)
    15.11 上半部tty字符输出(ttyPutc)
    15.12 开始输出(ttyKickOut)
    15.13 上半部tty多字符输出(ttyWrite)
    15.14 下半部tty驱动函数(ttyInterrupt)
    15.15 输出中断处理(ttyInter_out)
    15.16 tty输入处理(tty Inter-in)
    15.17 tty控制块初始化(ttyInit)
    15.18 设备驱动控制
    15.19 观点
    15.20 总结
    练习

    第16章 DMA设备和驱动(以太网)
    16.1 引言
    16.2 直接内存访问和缓冲区
    16.3 多缓冲区和环
    16.4 使用DMA的以太网驱动例子
    16.5 设备的硬件定义和常量
    16.6 环和内存缓冲区
    16.7 以太网控制块的定义
    16.8 设备和驱动初始化
    16.9 分配输入缓冲区
    16.10 从以太网设备中读取数据包
    16.11 向以太网设备中写入数据包
    16.12 以太网设备的中断处理
    16.13 以太网控制函数
    16.14 观点
    16.15 总结
    练习

    第17章 最小互联网协议栈
    17.1 引言
    17.2 所需的功能
    17.3 同步对话、超时和进程
    17.4 ARP函数
    17.5 网络数据包的定义
    17.6 网络输入进程
    17.7 UDP表的定义
    17.8 UDP函数
    17.9 互联网控制报文协议
    17.10 动态主机配置协议
    17.11 观点
    17.12 总结
    练习

    第18章 远程磁盘驱动
    18.1 引言
    18.2 磁盘抽象
    18.3 磁盘操作驱动支持
    18.4 块传输和高层I/O函数
    18.5 远程磁盘范式
    18.6 磁盘操作的语义
    18.7 驱动数据结构的定义
    18.8 驱动初始化(rdsInit)
    18.9 上半部打开函数(rdsOpen)
    18.10 远程通信函数(rdscomm)
    18.11 上半部写函数(rdsWrite)
    18.12 上半部读函数(rdsRead)
    18.13 刷新挂起的请求
    18.14 上半部控制函数(rdsControl)
    18.15 分配磁盘缓冲区(rdsbufalloc)
    18.16 上半部关闭函数(rdsClose)
    18.17 下半部通信进程(rdsprocess)
    18.18 观点
    18.19 总结
    练习

    第19章 文件系统
    19.1 文件系统是什么
    19.2 文件操作的示例集合
    19.3 本地文件系统的设计
    19.4 Xinu文件系统的数据结构
    19.5 索引管理器的实现
    19.6 清空索引块(lfibclear)
    19.7 获取索引块(lfibget)
    19.8 存储索引块(lfibput)
    19.9 从空闲链表中分配索引块(lfiballoc)
    19.10 从空闲链表中分配数据块(lfdballoc)
    19.11 使用设备无关的I/O函数的文件操作
    19.12 文件系统的设备设置和函数名称
    19.13 本地文件系统打开函数(lfsOpen)
    19.14 关闭文件伪设备(lflClose)
    19.15 刷新磁盘中的数据(lfflush)
    19.16 文件的批量传输函数(lflWrite,lflRead)
    19.17 在文件中查找一个新位置(lflSeek)
    19.18 从文件中提取一个字节(lflGetc)
    19.19 改变文件中的一个字节(lflPutc)
    19.20 载入索引块和数据块(lfsetup)
    19.21 主文件系统设备的初始化(lfsInit)
    19.22 伪设备的初始化(lflInit)
    19.23 文件截断(lftruncate)
    19.24 初始文件系统的创建(lfscreate)
    19.25 观点
    19.26 总结
    练习

    第20章 远程文件机制
    20.1 引言
    20.2 远程文件访问
    20.3 远程文件语义
    20.4 远程文件设计和消息
    20.5 远程文件服务器通信
    20.6 发送一个基本消息
    20.7 网络字节序
    20.8 使用设备范式的远程文件系统
    20.9 打开远程文件
    20.10 检查文件模式
    20.11 关闭远程文件
    20.12 读远程文件
    20.13 写远程文件
    20.14 远程文件的定位
    20.15 远程文件单字符I/O
    20.16 远程文件系统控制函数
    20.17 初始化远程文件数据结构
    20.18 观点
    20.19 总结
    练习

    第21章 句法名字空间
    21.1 引言
    21.2 透明与名字空间的抽象
    21.3 多种命名方案
    21.4 命名系统设计的其他方案
    21.5 基于句法的名字空间
    21.6 模式和替换
    21.7 前缀模式
    21.8 名字空间的实现
    21.9 名字空间的数据结构和常量
    21.10 增加名字空间前缀表的映射
    21.11 使用前缀表进行名字映射
    21.12 打开命名文件
    21.13 名字空间初始化
    21.14 对前缀表中的项进行排序
    21.15 选择一个逻辑名字空间
    21.16 默认层次和空前缀
    21.17 额外的对象操作函数
    21.18 名字空间方法的优点和限制
    21.19 广义模式
    21.20 观点
    21.21 总结
    练习

    第22章 系统初始化
    22.1 引言
    22.2 引导程序:从头开始
    22.3 操作系统初始化
    22.4 在E2100L上启动一个可选的映像
    22.5 Xinu初始化
    22.6 系统启动
    22.7 从程序转化为进程
    22.8 观点
    22.9 总结
    练习

    第23章 异常处理
    23.1 引言
    23.2 异常、陷阱和恶意中断
    23.3 panic的实现
    23.4 观点
    23.5 总结
    练习

    第24章 系统配置
    24.1 引言
    24.2 多重配置的需求
    24.3 Xinu系统配置
    24.4 Xinu配置文件的内容
    24.5 计算次设备号
    24.6 配置Xinu系统的步骤
    24.7 观点
    24.8 总结
    练习

    第25章 一个用户接口例子:Xinu壳
    25.1 引言
    25.2 用户接口
    25.3 命令和设计原则
    25.4 一个简化壳的设计决策
    25.5 壳的组织和操作
    25.6 词法符号的定义
    25.7 命令行语法的定义
    25.8 Xinu壳的实现
    25.9 符号的存储
    25.10 词法分析器代码
    25.11 命令解释器的核心
    25.12 命令名查询和内部处理
    25.13 传给命令的参数
    25.14 向外部命令传递参数
    25.15 I/O重定向
    25.16 示例命令函数(sleep)
    25.17 观点
    25.18 总结

    练习
    附录1 操作系统移植
    附录2 Xinu设计注解
    索引
查看详情
系列丛书 / 更多
操作系统设计:Xinu方法
Java编程思想(第4版)
[美]Bruce Eckel 著;陈昊鹏 译
操作系统设计:Xinu方法
数据挖掘:概念与技术(原书第3版)
[美]Jiawei、[美]Micheling、[美]Jian Pei 著;范明、孟小峰 译
操作系统设计:Xinu方法
算法导论(原书第3版)
[美]Thomas、[美]Charles、[美]Ronald、[美]Clifford Stein 著;殷建平、徐云、王刚 译
操作系统设计:Xinu方法
数据结构与算法分析:Java语言描述
[美]马克·艾伦·维斯 著;陈越 译
操作系统设计:Xinu方法
C程序设计语言(第2版·新版) 习题解答
吉米拜尔 著;杨涛 译;[美]汤朵
操作系统设计:Xinu方法
C程序设计语言(第二版)
[美]Brian(布莱恩·克尼汉)、[美]Dennis M.Ritchie(丹尼斯·里奇) 著;徐宝文、李志 译
操作系统设计:Xinu方法
深入理解计算机系统(原书第3版)
[美]兰德尔 E.布莱恩特(Randal E.·Bryant) 著;龚奕利、贺莲 译
操作系统设计:Xinu方法
计算机科学丛书·云计算:概念、技术与架构
[美]Thomas、[英]Zaigham、[巴西]Ricardo Puttini 著;龚奕利、贺莲、胡创 译
操作系统设计:Xinu方法
数据库系统概念:(原书第6版)
[美]Abraham、Henry、S.Sudarshan 著;杨冬青、李红燕、唐世渭 译
操作系统设计:Xinu方法
计算机科学导论:原书第3版
[美]Behrouz Forouzan 著;刘艺 译
操作系统设计:Xinu方法
编译原理:原理、技术与工具
[美]阿霍 著;赵建华 译
操作系统设计:Xinu方法
软件工程:实践者的研究方法(原书第8版 本科教学版)
[美]罗杰 S. 普莱斯曼 著;郑人杰、马素霞 译
相关图书 / 更多
操作系统设计:Xinu方法
操作系统原理及应用(第2版)(微课版)()
陈敏;许雪林;汤龙梅
操作系统设计:Xinu方法
操作系统实验教程——Web服务器性能优化
鲁强
操作系统设计:Xinu方法
操作系统原理
方钰;邓蓉;陈闳中
操作系统设计:Xinu方法
操作系统实验教程(Windows+Linux)
袁宝华;李宁;顾玉宛;庄丽华;梁久祯
操作系统设计:Xinu方法
操作系统原理及Linux内核分析(第3版)
李芳;刘晓春;李东海
操作系统设计:Xinu方法
操作系统
罗宇
操作系统设计:Xinu方法
操作系统原理 第2版
金海溶 周苏 主编
操作系统设计:Xinu方法
操作系统概念(原书第10版)
[美]亚伯拉罕 西尔伯沙茨(美)彼得 贝尔 高尔文(美)格雷格 加涅
操作系统设计:Xinu方法
操作系统原理(第2版)
黑新宏
操作系统设计:Xinu方法
操作系统原理
作者
操作系统设计:Xinu方法
操作系统
常颖、常大俊、李依霖 编
操作系统设计:Xinu方法
操作系统:原理与实现
陈海波
您可能感兴趣 / 更多
操作系统设计:Xinu方法
孩子,把你的手给我1:怎么说孩子才爱听,怎么教孩子才肯学?帮助每一位3-12岁孩子的父母结束与孩子的所有冲突!
[美]海姆·G.吉诺特
操作系统设计:Xinu方法
怎样做成大事
[美]丹·加德纳(Dan Gardner) 著;贾拥民 译;湛庐文化 出品;[丹麦]傅以斌(Bent Flyvbjerg)
操作系统设计:Xinu方法
1200年希腊罗马神话
[美]伊迪丝·汉密尔顿
操作系统设计:Xinu方法
爱情心理学(新编本)
[美]罗伯特·J. 斯腾伯格 (美)凯琳·斯腾伯格 倪爱萍 译
操作系统设计:Xinu方法
黄金圈法则
[美]西蒙·斯涅克 著;磨铁文化 出品
操作系统设计:Xinu方法
汤姆·索亚历险记 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]马克 吐温
操作系统设计:Xinu方法
富兰克林自传 名家全译本 改变无数人命运的励志传奇 埃隆马斯克反复推荐 赠富兰克林签名照及精美插图
[美]本杰明·富兰克林 著;李自修 译
操作系统设计:Xinu方法
意大利文艺复兴新艺术史
[美]迈克尔·韦恩·科尔 著;[美]斯蒂芬·J·坎贝尔;邵亦杨
操作系统设计:Xinu方法
汤姆素亚历险记:中小学生课外阅读快乐读书吧 儿童文学无障碍有声伴读世界名著童话故事
[美]马克·吐温
操作系统设计:Xinu方法
老人与海 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]海明威
操作系统设计:Xinu方法
养育的觉醒:全面激发孩子自驱力,教你如何心平气和做妈妈
[美]凯文·莱曼 著;唐晓璐 译;斯坦威 出品
操作系统设计:Xinu方法
国际大奖图画书系列 共11册(小老鼠的恐惧的大书,大灰狼,红豆与菲比,别烦我,下雪了 ,穿靴子的猫 ,先有蛋,绿 ,特别快递,如果你想看鲸鱼 ,一个部落的孩子 ) 麦克米伦世纪
[美]莱恩·史密斯 (英)埃米莉·格雷维特 (美)劳拉·瓦卡罗·等/文 (英)埃米莉·格雷维特 等/图 彭懿 杨玲玲 阿甲 孙慧阳 白薇 译