图书介绍

操作系统设计 Xinu方法【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

操作系统设计 Xinu方法
  • (美)科默(ComerD.)著;邹恒明等译 著
  • 出版社: 北京:机械工业出版社
  • ISBN:7111428268
  • 出版时间:2014
  • 标注页数:360页
  • 文件大小:62MB
  • 文件页数:376页
  • 主题词:

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

操作系统设计 Xinu方法PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 引言和概述1

1.1操作系统1

1.2本书的研究方法1

1.3分层设计2

1.4 Xinu操作系统3

1.5操作系统不是什么3

1.6从外面看操作系统4

1.7其他章节概要4

1.8观点5

1.9总结5

练习5

第2章 并发执行与操作系统服务6

2.1引言6

2.2多活动的编程模型6

2.3操作系统服务7

2.4并发处理的概念和术语7

2.5串行程序和并发程序的区别8

2.6多进程共享同一段代码9

2.7进程退出与进程终止11

2.8共享内存、竞争条件和同步11

2.9信号量与互斥14

2.10 Xinu中的类型命名方法15

2.11使用Kputc和Kprintf进行操作系统的调试16

2.12观点16

2.13总结16

练习17

第3章 硬件和运行时环境概览18

3.1引言18

3.2 E2100L的物理和逻辑结构18

3.3处理器结构和寄存器19

3.4总线操作:获取-存储范式19

3.5直接内存访问19

3.6总线地址空间20

3.7内核段KSEG0和KSEG1的内容20

3.8总线启动的静态配置21

3.9调用约定和运行时栈21

3.10中断和中断处理22

3.11异常处理23

3.12计时器硬件23

3.13串行通信24

3.14轮询与中断驱动I/O24

3.15内存缓存和KSEG124

3.16存储布局24

3.17内存保护25

3.18观点25

练习25

第4章 链表与队列操作26

4.1引言26

4.2用于进程链表的统一数据结构26

4.3简洁的链表数据结构27

4.4队列数据结构的实现28

4.5内联队列操作函数29

4.6获取链表中进程的基础函数29

4.7 FIFO队列操作30

4.8优先级队列的操作32

4.9链表初始化33

4.10观点34

4.11总结34

练习35

第5章 调度和上下文切换36

5.1引言36

5.2进程表36

5.3进程状态38

5.4就绪和当前状态38

5.5调度策略38

5.6调度的实现39

5.7上下文切换的实现41

5.8内存中保存的状态41

5.9在MIPS处理器上切换上下文41

5.10重新启动进程执行的地址43

5.11并发执行和null进程44

5.12使进程准备执行和调度不变式44

5.13推迟重新调度45

5.14其他进程调度算法47

5.15 观点47

5.16总结47

练习47

第6章 更多进程管理49

6.1引言49

6.2进程挂起和恢复49

6.3自我挂起和信息隐藏49

6.4系统调用的概念50

6.5禁止中断和恢复中断51

6.6系统调用模板51

6.7系统调用返回SYSERR和OK值51

6.8挂起的实现52

6.9挂起当前进程53

6.10 suspend函数的返回值53

6.11进程终止和进程退出54

6.12进程创建56

6.13其他进程管理函数59

6.14总结60

练习61

第7章 协调并发进程62

7.1引言62

7.2进程同步的必要性62

7.3计数信号量的概念63

7.4避免忙等待63

7.5信号量策略和进程选择63

7.6等待状态64

7.7信号量数据结构64

7.8系统调用wait65

7.9系统调用signal66

7.10静态和动态信号量分配66

7.11动态信号量的实现示例67

7.12信号量删除68

7.13信号量重置69

7.14多核处理器之间的协调69

7.15 观点70

7.16总结70

练习71

第8章 消息传递72

8.1引言72

8.2两种类型的消息传递服务72

8.3消息使用资源的限制72

8.4消息传递函数和状态转换73

8.5 send的实现73

8.6 receive的实现74

8.7非阻塞消息接收的实现75

8.8观点75

8.9总结75

练习76

第9章 基本内存管理77

9.1引言77

9.2内存的类型77

9.3重量级进程的定义77

9.4小型嵌入式系统的内存管理78

9.5程序段和内存区域78

9.6嵌入式系统中的动态内存分配79

9.7低层内存管理器的设计79

9.8分配策略和内存持久性80

9.9追踪空闲内存80

9.10低层内存管理的实现80

9.11分配堆存储82

9.12分配栈存储83

9.13释放堆和栈存储84

9.14观点86

9.15 总结87

练习87

第10章 高级内存管理和虚拟内存88

10.1引言88

10.2分区空间分配88

10.3缓冲池88

10.4分配缓冲区89

10.5将缓冲区返回给缓冲池90

10.6创建缓冲池91

10.7初始化缓冲池表93

10.8虚拟内存和内存复用93

10.9实地址空间和虚地址空间93

10.10支持按需换页的硬件94

10.11使用页表的地址翻译95

10.12页表项中的元数据95

10.13按需换页以及设计上的问题95

10.14页面替换和全局时钟算法96

10.15观点97

10.16总结97

练习97

第11章 高层消息传递98

11.1引言98

11.2进程间通信端口98

11.3端口实现98

11.4端口表初始化99

11.5端口创建100

11.6向端口发送消息101

11.7从端口接收消息102

11.8端口的删除和重置103

11.9观点106

11.10总结106

练习106

第12章 中断处理107

12.1引言107

12.2中断的优点107

12.3中断分配107

12.4中断向量107

12.5中断向量号的分配108

12.6硬件中断108

12.7中断请求的局限性和中断多路复用109

12.8中断软件和分配109

12.9中断分配器底层部分110

12.10中断分配器高层部分112

12.11禁止中断114

12.12函数中中断代码引起的限制115

12.13中断过程中重新调度的必要性115

12.14中断过程中的重新调度115

12.15 观点116

12.16总结116

练习117

第13章 实时时钟管理118

13.1引言118

13.2定时事件118

13.3实时时钟和计时器硬件118

13.4处理实时时钟中断119

13.5延时与抢占119

13.6使用计时器来模拟实时时钟120

13.7抢占的实现120

13.8使用增量链表对延迟进行有效管理120

13.9增量链表的实现121

13.10将进程转入睡眠122

13.11定时消息接收124

13.12唤醒睡眠进程127

13.13时钟中断处理127

13.14时钟初始化128

13.15 间隔计时器管理129

13.16观点130

13.17总结130

练习130

第14章 设备无关的I/O132

14.1引言132

14.2 I/O和设备驱动的概念结构132

14.3接口抽象和驱动抽象133

14.4 I/O接口的一个示例134

14.5打开-读-写-关闭范式134

14.6绑定I/O操作和设备名134

14.7 Xinu中的设备名135

14.8设备转换表概念135

14.9设备和共享驱动的多个副本136

14.10高层I/O操作的实现138

14.11其他高层I/O函数138

14.12打开、关闭和引用计数141

14.13 devtab中的空条目和错误条目143

14.14 I/O系统的初始化143

14.15观点146

14.16总结147

练习147

第15章 设备驱动示例148

15.1引言148

15.2 tty抽象148

15.3 tty设备驱动的组成149

15.4请求队列和缓冲区149

15.5上半部和下半部的同步150

15.6硬件缓冲区和驱动设计151

15.7 tty控制块和数据声明151

15.8次设备号153

15.9上半部tty字符输入(ttyGetc)153

15.10通用上半部tty输入(ttyRead)154

15.11上半部(tty字符输出(ttyputc)155

15.12开始输出(ttyKickOut)156

15.13上半部tty多字符输出(ttyWrite)157

15.14下半部tty驱动函数(ttyInterrupt)157

15.15输出中断处理(ttyInter out)159

15.16 tty输入处理(tty Inter in)161

15.17 tty控制块初始化(ttyInit)166

15.18设备驱动控制168

15.19观点169

15.20总结169

练习169

第16章 DMA设备和驱动(以太网)171

16.1引言171

16.2直接内存访问和缓冲区171

16.3多缓冲区和环171

16.4使用DMA的以太网驱动例子172

16.5设备的硬件定义和常量172

16.6环和内存缓冲区174

16.7以太网控制块的定义175

16.8设备和驱动初始化177

16.9分配输入缓冲区181

16.10从以太网设备中读取数据包182

16.11向以太网设备中写入数据包183

16.12以太网设备的中断处理185

16.13以太网控制函数187

16.14观点189

16.15 总结189

练习189

第17章 最小互联网协议栈190

17.1引言190

17.2所需的功能190

17.3同步对话、超时和进程191

17.4 ARP函数192

17.5网络数据包的定义198

17.6网络输入进程199

17.7 UDP表的定义202

17.8 UDP函数203

17.9互联网控制报文协议210

17.10动态主机配置协议211

17.11观点214

17.12总结214

练习214

第18章 远程磁盘驱动215

18.1引言215

18.2磁盘抽象215

18.3磁盘操作驱动支持215

18.4块传输和高层I/O函数215

18.5远程磁盘范式216

18.6磁盘操作的语义216

18.7驱动数据结构的定义217

18.8驱动初始化(rdsInit)221

18.9上半部打开函数(rdsOpen)223

18.10远程通信函数(rdscomm)224

18.11上半部写函数(rdsWrite)226

18.12上半部读函数(rdsRead)228

18.13刷新挂起的请求231

18.14上半部控制函数(rdsControl)231

18.15分配磁盘缓冲区(rdsbufalloc)233

18.16上半部关闭函数(rdsClose)234

18.17下半部通信进程(rdsprocess)235

18.18观点239

18.19总结239

练习240

第19章 文件系统241

19.1文件系统是什么241

19.2文件操作的示例集合241

19.3本地文件系统的设计242

19.4 Xinu文件系统的数据结构242

19.5索引管理器的实现243

19.6清空索引块(lfibclear)246

19.7获取索引块(lfibget)247

19.8存储索引块(lfibput)247

19.9从空闲链表中分配索引块(lfiballoc)248

19.10从空闲链表中分配数据块(lfdballoc)249

19.11使用设备无关的I/O函数的文件操作250

19.12文件系统的设备设置和函数名称251

19.13本地文件系统打开函数(lfsOpen)251

19.14关闭文件伪设备(lflClose)256

19.15刷新磁盘中的数据(lfflush)256

19.16文件的批量传输函数(lflWrite,lflRead)257

19.17在文件中查找一个新位置(lflSeek)258

19.18从文件中提取一个字节(lflGetc)259

19.19改变文件中的一个字节(lflputc)260

19.20载入索引块和数据块(lfsetup)261

19.21主文件系统设备的初始化(lfsInit)264

19.22伪设备的初始化(lfInit)264

19.23文件截断(lftruncate)265

19.24初始文件系统的创建(Ifscreate)267

19.25观点269

19.26总结269

练习269

第20章 远程文件机制270

20.1引言270

20.2远程文件访问270

20.3远程文件语义270

20.4远程文件设计和消息271

20.5远程文件服务器通信276

20.6发送一个基本消息278

20.7网络字节序279

20.8使用设备范式的远程文件系统279

20.9打开远程文件280

20.10检查文件模式282

20.11关闭远程文件283

20.12读远程文件284

20.13写远程文件286

20.14远程文件的定位288

20.15远程文件单字符I/O288

20.16远程文件系统控制函数289

20.17初始化远程文件数据结构292

20.18观点293

20.19总结293

练习294

第21章 句法名字空间295

21.1引言295

21.2透明与名字空间的抽象295

21.3多种命名方案295

21.4命名系统设计的其他方案296

21.5基于句法的名字空间296

21.6模式和替换297

21.7前缀模式297

21.8名字空间的实现297

21.9名字空间的数据结构和常量297

21.10增加名字空间前缀表的映射298

21.11使用前缀表进行名字映射299

21.12打开命名文件302

21.13名字空间初始化303

21.14对前缀表中的项进行排序305

21.15选择一个逻辑名字空间305

21.16默认层次和空前缀305

21.17额外的对象操作函数306

21.18名字空间方法的优点和限制306

21.19广义模式307

21.20观点307

21.21总结308

练习308

第22章 系统初始化309

22.1引言309

22.2引导程序:从头开始309

22.3操作系统初始化309

22.4在E2100L上启动一个可选的映像310

22.5 Xinu初始化310

22.6系统启动312

22.7从程序转化为进程316

22.8观点316

22.9总结316

练习316

第23章 异常处理317

23.1引言317

23.2异常、陷阱和恶意中断317

23.3 panic的实现317

23.4观点318

23.5总结318

练习318

第24章 系统配置319

24.1引言319

24.2多重配置的需求319

24.3 Xinu系统配置319

24.4 Xinu配置文件的内容320

24.5计算次设备号321

24.6配置Xinu系统的步骤322

24.7观点322

24.8总结322

练习322

第25章 一个用户接口例子:Xinu壳323

25.1引言323

25.2用户接口323

25.3命令和设计原则323

25.4一个简化壳的设计决策324

25.5壳的组织和操作324

25.6词法符号的定义324

25.7命令行语法的定义325

25.8 Xinu壳的实现325

25.9符号的存储327

25.10词法分析器代码327

25.11命令解释器的核心330

25.12命令名查询和内部处理336

25.13传给命令的参数336

25.14向外部命令传递参数337

25.15 I/O重定向339

25.16示例命令函数(sleep)340

25.17观点341

25.18总结341

练习342

附录1 操作系统移植343

附录2 Xinu设计注解349

索引352

热门推荐