第一部分 综述 1
第一章 操作系统概观 3
1.1 操作系统的设计目标和功能 3
1.1.1 什么是操作系统 3
1.1.2 操作系统作为用户和计算机之间的接口 3
1.1.3 操作系统作为资源管理者 4
1.1.4 操作系统提供的服务 5
1.2 操作系统的发展历史 5
1.2.1 串行处理 6
1.2.2 简单批处理系统 6
1.2.4 个人计算机上的操作 7
1.2.3 多任务批处理系统和分时系统 7
1.3 操作系统的基本概念 8
1.3.1 进程 8
1.3.2 虚拟内存 9
1.3.3 文件和文件系统 9
1.3.4 设备驱动程序 9
1.4 Linux概观 10
1.4.1 什么是Linux 10
1.4.2 传统UNIX系统的发展历史 10
1.4.3 传统UNIX系统的内核结构和特点 11
10.3.5 Chostscript和Ghostview 15
1.4.4 Linux的发展和特点 15
1.4.5 其他开放源代码的UNIX或类UNIX系统 17
1.5 Windows NT概观 17
1.5.1 Windows NT 的历史 18
1.5.2 Windows NT 的内核结构和特点 19
1.6 本书其余章节的内容梗概 21
1.6.1 操作系统基本结构组件的比较 21
1.6.2 用户角度出发的全面对比 22
1.6.3 Liunx和Windows NT的集成 23
1.7 小结 23
2.1.1 进程 25
2.1 基本概念 25
第二章 进程管理及调度 25
2.1.2 线程 28
2.1.3 进程间通信 29
2.1.4 调度 31
2.2 进程模型 32
2.2.1 Linux的进程模型 32
2.2.2 Windows NT的进程模型 36
2.3 线程及线程同步支持 39
2.4 调度策略及机制的比较 42
2.4.1 Liunx的进程调度 42
2.4.2 Windows NT的线程调度和进程切换 43
2.4.3 实时调度支持上的差别 46
2.5 SMP支持 46
2.6.1 Linux的进程间通信机制 47
2.6 进程间通信 47
2.6.2 Windows NT的进程间通信机制 48
2.7 小结 49
第三章 内存管理 51
3.1 基本概念 51
3.1.1 虚拟内存模型 51
3.1.2 内存映射和需求分页 53
3.2.1 Linux的进程地址空间 54
3.2 进程地址空间 54
3.1.3 写时复制 54
3.2.2 Windows NT的进程地址空间 56
3.3 虚拟内存的使用 57
3.3.1 Linux中虚拟内存的使用 57
3.3.2 Windows NT中虚拟内存的使用 59
3.3.3 Windows NT 对16位应用程序的支持 60
3.4 共享内存 61
3.4.1 Linux的共享内存 61
3.4.2 Windows NT 的共享内存 62
3.5 内存交换管理 62
3.5.1 Linux的内存交换 62
3.5.2 Linux的交换空间 63
3.5.4 交换空间大小的选择原则 64
3.5.3 Windows NT 的页文件 64
3.6 高速缓存 65
3.6.1 Linux和内存管理相关的高速缓存 65
3.6.2 Windows NT 的高速缓存 66
3.7 小结 66
第四章 文件系统 67
4.1 基本概念 67
4.1.1 文件 67
4.1.2 目录 69
4.2 两种不同的设计哲学 71
4.3 Linux的文件系统 72
4.3.1 Linux的文件系统的组织形式 72
4.3.2 Linux的文件系统的文件和目录 73
4.3.3 Linux的文件系统的标准布局 75
4.3.4 Linux的虚拟文件系统 76
4.3.5 和文件系统相关的高速缓存 78
4.4 Windows NT的文件系统 79
4.4.1 Windows NT 文件系统的组织结构 79
4.4.2 Windows NT 文件系统的文件和目录 79
4.4.3 Windows NT 的高速缓存 80
4.5 不同文件系统的比较 80
4.5.1 FAT文件系统 81
4.5.2 NTFS文件系统 83
4.5.3 Ext2文件系统 86
4.6 小结 89
5.2 两种不同的设备管理方法 100
5.3 Linux的I/O软件 101
5.3.1 I/O软件结构 101
5.3.2 Linux中的网络设备 103
5.3.3 特殊设备驱动程序 104
5.4 Windows NT的I/O软件 105
5.4.1 I/O软件结构 105
5.3.4 内核模块 105
5.4.2 设备驱动程序 106
5.4.3 高速缓存程序 109
5.4.4 同步和异步I/O 109
5.5 小结 110
第六章 安全性 111
6.1 基本概念 111
6.1.1 安全性问题的重要性 111
6.1.2 常见的安全性问题 112
6.1.3 安全性设计的原理 113
6.1.4 保护机制 113
6.2 Linux的保护机制 115
6.3 Linux常见的安全性问题及预防 117
6.4 Windows NT的保护机制 121
6.4.1 Windows NT的访问控制模型 121
6.5 Windows NT常见的安全漏洞及预防 123
6.6 小结 128
第七章 操作系统服务 129
7.1 Linux的操作系统服务 129
7.1.1 init 129
7.1.6 网络 130
7.1.3 Syslog 130
7.1.5 图形用户界面 130
7.1.4 周期命令执行:cron和at 130
7.1.7 网络文件系统 131
7.1.8 网络文件系统 131
7.1.9 电子邮件 131
7.1.10 SMB服务器 131
7.1.14 PCMCIA卡管理 132
7.2 Windows NT的操作系统服务 132
7.1.11 打印 132
7.1.13 高级电源管理 132
7.1.12 gpm 132
7.2.2 计算机浏览器服务 133
7.2.3 文件和打印机共享 133
7.2.4 目录复制 133
7.2.1 域控制服务 133
7.2.5 远程访问服务 134
7.2.6 与TCP/IP联网环境有关的服务 134
7.2.7 图形用户界面 134
7.3 小结 134
第二部分 全面对比 135
第八章 Shell 137
8.1 命令的解释器 137
8.1.1 执行程序 137
8.1.2 输入输出重定向 138
8.1.3 管道 139
8.1.4 历史表 140
8.1.5 命令补全 142
8.2 作业管理 142
8.2.1 后台作业 142
8.2.2 作业管理 143
8.3 设置环境变量 144
8.4 Shell脚本编程 147
8.5 常用工具 150
8.5.1 正则表达式 150
8.5.2 常用小工具 151
8.5.3 格式转换工具 153
8.5.4 如何获取帮助 154
8.6 小结 154
第九章 图形用户界面 155
9.1 结构上的不同 155
9.1.1 Windows NT的图形系统结构 155
9.1.2 X Window系统结构 156
9.2.2 DDE和OLE 158
9.2.1 以文档为中心的界面 158
9.2 Windows 95风格的Windows NT用户界面 158
9.2.3 资源管理器 159
9.3 X Window系统 159
9.3.1 X Window系统的启动 159
9.3.2 fvwm窗口管理器概貌 160
9.3.3 虚拟桌面 161
9.3.4 输入焦点 162
9.3.5 菜单的限制 162
9.4.1 GNOME与窗口管理器 163
9.4 GNOME 163
9.3.6 其他窗口管理器* 163
9.4.3 桌面 164
9.4.2 面板 164
9.4.4 文件管理器 165
9.5 小结 165
第十章 应用软件 167
10.1 概述 167
10.2 文字处理软件 168
10.2.1 文本文件编辑器 168
10.2.2 格式化文本处理软件 170
10.3 图形图像处理软件 171
10.3.1 XV 172
10.3.2 XPaint 173
10.3.3 xfig 174
10.3.4 Gnuplot 174
10.3.6 GIMP 177
10.4 工具软件 178
10.4.1 GNU bc 178
10.4.2 gzip 179
10.4.3 ispell 180
10.4.5 xfm 180
10.5 KDE和GNOME的应用软件 182
10.4.6 cxterm 182
10.6 其他应用软件 183
10.7 小结 184
第十一章 系统管理 185
11.1 获取、安装和升级 185
11.1.1 商业软件和自由软件 185
11.1.2 安装和升级 188
11.2 系统设置 194
11.2.1 系统设置信息的存储 194
11.2.2 系统管理工具 199
11.2.3 提供服务的后台进程 201
11.2.4 监视系统 205
11.3 用户帐号和组帐号管理 211
11.3.1 Linux上的传统帐号管理方法 211
11.3.2 NIS及其配置 213
11.3.3 Windows NT的两种帐号管理模式 216
11.3.4 Windows NT的域模型 216
11.4 用户环境配置 220
11.4.1 Linux的用户环境配置 220
11.4.2 Windows NT的用户环境配置 220
11.5.2 利用NFS的文件共享 221
11.5 资源管理 221
11.5.1 Linux的磁盘资源管理 221
11.5.3 Linux的打印机管理 223
11.5.4 Windows NT的磁盘资源管理 226
11.5.5 Windows NT的打印机管理 228
11.6 其他系统管理任务 229
11.6.1 备份 229
11.6.2 磁盘定额 232
11.6.3 远程管理 232
11.7 小结 233
12.1.1 网络协议和TCP/IP协议 235
12.1 TCP/IP协议简介 235
第十二章 网络支持 235
12.1.2 物理地址和逻辑地址 236
12.1.3 DNS 237
12.1.4 传输和寻址 238
12.1.5 TCP/IP的四层结构 238
12.1.6 TCP数据包的传输 239
12.2 建立Internet主机 240
12.2.1 接入Internet的几种方式 240
12.2.2 基于Linux的Internet主机配置 241
12.2.4 Linux对TCP/IP的特殊支持 247
12.2.3 基于Windows NT的Internet主机配置 247
12.3 有关TCP/IP配置的重要服务 250
12.3.1 DHCP 250
12.3.2 WINS 254
12.4 其他TCP/IP服务 254
12.5 小结 255
第十三章 软件开发 257
13.1 POSIX标准和操作系统接口 257
13.1.1 Linux和Windows NT对POSIX标准的支持 257
13.1.2 Windows NT的操作系统接口 259
13.2 Visual Studio和GNU 260
13.3 Linux上的开发工具 261
13.3.1 获取帮助 261
13.3.2 GNU C和C++编译器 262
13.3.3 GNU的make工具 266
13.3.4 GNU的调试器 271
13.3.5 版本控制工具 276
13.3.6 Perl简介 277
13.4 有关编程风格 284
13.5 小结 285
14.1 图形用户界面编程中的一般概念 287
14.1.1 消息驱动和事件驱动 287
第十四章 图形用户界面编程 287
14.1.2 窗口和窗口过程、回调函数 288
14.1.3 图形上下文和设备上下文 289
14.2 Win32 API和Xlib 289
14.2.1 基于Win32的编程 289
14.2.2 基于Xlib的编程 295
14.3 MFC、Visual Basic和Motif 307
14.3.1 MFC 308
14.3.2 Visual Basic 309
14.3.3 Motif 310
14.4 Tcl/Tk简介 317
14.5 GTK+简介 319
14.6 小结 323
第十五章 服务器应用 325
15.1 Web服务器 325
15.1.1 Internet Information Server 325
15.1.2 IIS的安装和配置 327
15.1.3 Linux上的Web Server 328
15.1.4 Apache 328
15.1.5 Apache的安装和配置 329
15.1.6 启动和终止Apache 333
15.2.1 VBScript和ASP 334
15.2 服务器端的HTML嵌入式脚本语言 334
15.2.2 PHP3 338
15.3 数据库管理系统 352
15.3.1 PostgreSQL 352
15.3.2 SQL Server 353
15.3.3 mSQL和MySQL 353
15.4 Web数据库应用 353
15.4.1 SQL Server+IIS+ASP 354
15.4.2 MySQL+Apache+PHP3 358
15.5 小结 363
第三部分 Linux和Windows NT的集成 365
第十六章 双重引导系统 367
16.1 预备知识 367
16.1.1 硬盘分区 367
16.1.2 系统引导过程 370
16.1.3 LILO的配置 374
16.1.4 NTLDR的配置 377
16.2 安装前的准备 378
16.2.1 选择双重引导管理器 379
16.2.2 分区规则要考虑的问题 379
16.3.1 利用fdisk建立分区 380
16.3 安装Linux 380
16.2.3 安装顺序 380
16.3.2 安装LILO 386
16.3.3 制作Linux系统的引导软盘 386
16.4 安装Windows NT 389
16.5 配置LILO 390
16.6 配置NTLDR 391
16.6.1 获取Linux的引导扇区 391
16.6.2 修改BOOT.INI 392
16.7 从 Linux中访问Windows NT分区 393
16.8 其他可用工具 393
16.9 小结 394
第十七章 利用SAMBA的资源共享 395
17.1 SMB 395
17.2 Samba和SMB 396
17.2.1 用户名 396
17.2.2 文件所有权 397
17.2.3 口令 397
17.2.4 协议的复杂性 398
17.3 Liunx上的Samba配置 398
17.3.1 Samba的主要组件 398
17.3.2 smb.conf配置文件的格式 399
17.3.3 smb.conf文件中的主要配置 400
17.4.1 共享Linux目录 406
17.4 文件共享 406
17.4.2 从Linux系统中访问Windows的共享目录 407
17.5 打印机共享 410
17.5.1 共享Liunx打印机 410
17.5.2 从Linux访问Windows的共享打印机 411
17.6 安全性考虑 412
17.7 小结 413
18.1 基于NFS的文件共享 415
18.1.1 NFS和SMB的比较 415
第十八章 其他集成方法 415
18.1.2 在Windows NT中使用NFS的特殊问题 416
18.1.3 Windows上的NFS软件 416
18.2 基于TCP/IP的互操作 417
18.2.1 FTP 417
18.2.2 TELNET 419
18.2.3 WWW 419
18.3 Linux的DOS仿真 420
18.4 小结 420
附录A Liunx Kernel 2.2的新特色 421
附录B Windows 2000的新特色 427
附录C 常用的Linux C语言函数库 429