Unix\Linux系程/计算机科学丛书
全新正版 极速发货
¥
101.7
7.3折
¥
139
全新
仅1件
作者(美)K.C.王|责编:冯秀泳|译者:肖堃
出版社机械工业
ISBN9787111656715
出版时间2020-06
装帧平装
开本其他
定价139元
货号30903089
上书时间2024-10-21
商品详情
- 品相描述:全新
- 商品描述
-
目录
出版者的话
译者序
前言
第1章 引言1
1.1 关于本书1
1.2 系统编程的作用1
1.3 本书的目标1
1.3.1 强化学生的编程背景知识1
1.3.2 动态数据结构的应用2
1.3.3 进程概念和进程管理2
1.3.4 并发编程2
1.3.5 定时器和定时功能3
1.3.6 信号、信号处理和进程间通信3
1.3.7 文件系统3
1.3.8 TCP/IP和网络编程3
1.4 目标读者3
1.5 本书的独特之处4
1.6 将本书用作系统编程课程的教材5
1.7 其他参考书6
1.8 关于Unix6
1.8.1 AT&T Unix6
1.8.2 Berkeley Unix6
1.8.3 HP Unix7
1.8.4 IBM Unix7
1.8.5 Sun Unix7
1.9 关于Linux7
1.10 Linux版本7
1.10.1 Debian Linux8
1.10.2 Ubuntu Linux8
1.10.3 Linux Mint8
1.10.4 基于RPM的Linux8
1.10.5 Slackware Linux8
1.11 Linux硬件平台8
1.12 虚拟机上的Linux 8
1.12.1 VirtualBox9
1.12.2 VMware10
1.12.3 双启动Slackware和Ubuntu Linux11
1.13 使用Linux12
1.13.1 Linux内核映像12
1.13.2 Linux启动程序13
1.13.3 Linux启动13
1.13.4 Linux运行级别13
1.13.5 登录进程13
1.13.6 命令执行13
1.14 使用Ubuntu Linux14
1.14.1 Ubuntu版本14
1.14.2 Ubuntu Linux的特性14
1.15 Unix/Linux文件系统组织15
1.15.1 文件类型15
1.15.2 文件路径名15
1.15.3 Unix/Linux命令16
1.15.4 Linux手册页16
1.16 Ubuntu Linux系统管理17
1.16.1 用户账户17
1.16.2 添加新用户17
1.16.3 sudo命令17
参考文献18
第2章 编程背景19
2.1 Linux中的文本编辑器19
2.1.1 vim19
2.1.2 gedit20
2.1.3 emacs20
2.2 使用文本编辑器20
2.2.1 使用emacs21
2.2.2 emacs菜单21
2.2.3 emacs的集成开发环境22
2.3 程序开发22
2.3.1 程序开发步骤22
2.3.2 静态与动态链接24
2.3.3 可执行文件格式25
2.3.4 a.out文件的内容25
2.3.5 程序执行过程26
2.3.6 程序终止27
2.4 C语言中的函数调用27
2.4.1 32位GCC中的运行时堆栈使用情况27
2.4.2 long jump30
2.4.3 64位GCC中的运行时堆栈使用情况32
2.5 C语言程序与汇编代码的链接34
2.5.1 用汇编代码编程34
2.5.2 用汇编语言实现函数36
2.5.3 从汇编中调用C函数38
2.6 链接库38
2.6.1 静态链接库38
2.6.2 动态链接库39
2.7 makefile39
2.7.1 makefile格式39
2.7.2 make程序40
2.7.3 makefile示例40
2.8 GDB调试工具45
2.8.1 在emacs IDE中使用GDB45
2.8.2 有关使用调试工具的建议49
2.8.3 C语言程序中的常见错误49
2.9 C语言结构体53
2.9.1 结构体和指针54
2.9.2 C语言类型转换55
2.10 链表处理56
2.10.1 链表56
2.10.2 链表操作57
2.10.3 构建链表57
2.10.4 链表遍历60
2.10.5 搜索链表61
2.10.6 插入操作62
2.10.7 优先级队列63
2.10.8 删除操作63
2.10.9 循环链表64
2.10.10 可扩充C语言结构体64
2.10.11 双向链表65
2.10.12 双向链表示例程序65
2.11 树73
2.12 二叉树73
2.12.1 二叉搜索树73
2.12.2 构建二叉搜索树74
2.12.3 二叉树遍历算法75
2.12.4 深度优先遍历算法75
2.12.5 广度优先遍历算法75
2.13 编程项目:Unix/Linux文件系统树模拟器77
2.13.1 Unix/Linux文件系统树77
2.13.2 用二叉树实现普通树77
2.13.3 项目规范及要求78
2.13.4 命令规范78
2.13.5 程序结构体78
2.13.6 命令算法81
2.13.7 示例解决方案83
2.14 习题84
参考文献86
第3章 Unix/Linux进程管理87
3.1 多任务处理87
3.2 进程的概念87
3.3 多任务处理系统88
3.3.1 type.h 文件88
3.3.2 ts.s文件89
3.3.3 queue.c 文件89
3.3.4 t.c文件90
3.3.5 多任务处理系统代码介绍93
3.4 进程同步95
3.4.1 睡眠模式95
3.4.2 唤醒操作96
3.5 进程终止96
3.5.1 kexit()的算法97
3.5.2 进程家族树97
3.5.3 等待子进程终止98
3.6 MT系统中的进程管理99
3.7 Unix/Linux中的进程100
3.7.1 进程来源100
3.7.2 INIT和守护进程100
3.7.3 登录进程100
3.7.4 sh进程101
3.7.5 进程的执行模式101
3.8 进程管理的系统调用102
3.8.1 fork()102
3.8.2 进程执行顺序103
3.8.3 进程终止104
3.8.4 等待子进程终止105
3.8.5 Linux中的subreaper进程106
3.8.6 exec():更改进程执行映像108
3.8.7 环境变量108
3.9 I/O重定向111
3.9.1 文件流和文件描述符111
3.9.2 文件流I/O和系统调用111
3.9.3 重定向标准输入111
3.9.4 重定向标准输出112
3.10 管道112
3.10.1 Unix/Linux中的管道编程113
3.10.2 管道命令处理115
3.10.3 将管道写进程与管道读进程连接起来115
3.10.4 命名管道116
3.11 编程项目:sh模拟器117
3.11.1 带有I/O重定向的单命令117
3.11.2 带有管道的命令118
3.11.3 ELF可执行文件与sh脚本文件118
3.11.4 示例解决方案119
3.12 习题119
参考文献120
第4章 并发编程121
4.1 并行计算导论121
4.1.1 顺序算法与并行算法121
4.1.2 并行性与并发性122
4.2 线程122
4.2.1 线程的原理122
4.2.2 线程的优点122
4.2.3 线程的缺点123
4.3 线程操作123
4.4 线程管理函数123
4.4.1 创建线程124
4.4.2 线程ID125
4.4.3 线程终止125
4.4.4 线程连接125
4.5 线程示例程序125
4.5.1 用线程计算矩阵的和125
4.5.2 用线程快速排序127
4.6 线程同步129
4.6.1 互斥量129
4.6.2 死锁预防131
4.6.3 条件变量132
4.6.4 生产者-消费者问题133
4.6.5 信号量136
4.6.6 屏障137
4.6.7 用并发线程解线性方程组138
4.6.8 Linux中的线程140
4.7 编程项目:用户级线程141
4.7.1 项目基本代码:一个多任务处理系统142
4.7.2 用户级线程145
4.7.3 线程连接操作的实现147
4.7.4 互斥量操作的实现151
4.7.5 用并发程序测试有互斥量的项目152
4.7.6 信号量的实现156
4.7.7 使用信号量实现生产者-消费者问题156
4.8 习题158
参考文献159
第5章 定时器及时钟服务160
5.1 硬件定时器160
5.2 个人计算机定时器160
5.3 CPU操作161
5.4 中断处理161
5.5 时钟服务函数161
5.5.1 gettimeofday-settimeofday162
5.5.2 time系统调用163
5.5.3 times系统调用164
5.5.4 time和date命令164
5.6 间隔定时器164
5.7 REAL模式间隔定时器166
5.8 编程项目166
5.8.1 系统基本代码167
5.8.2 定时器中断170
5.8.3 定时器队列171
5.8.4 临界区173
5.8.5 高级主题173
5.9 习题174
参考文献174
第6章 信号和信号处理175
6.1 信号和中断175
6.2 Unix/Linux信号示例177
6.3 Unix/Linux中的信号处理177
6.3.1 信号类型177
6.3.2 信号的来源178
6.3.3 进程PROC结构体中的信号178
6.3.4 信号处理函数179
6.3.5 安装信号捕捉函数179
6.4 信号处理步骤181
6.5 信号与异常182
6.6 信号用作IPC182
6.7 Linux中的IPC183
6.7.1 管道和FIFO183
6.7.2 信号184
6.7.3 System V IPC184
6.7.4 POSIX消息队列184
6.7.5 线程同步机制184
6.7.6 套接字184
6.8 编程项目:实现一个消息IPC184
6.9 习题186
参考文献186
第7章 文件操作187
7.1 文件操作级别187
7.2 文件I/O操作189
7.3 低级别文件操作191
7.3.1 分区191
7.3.2 格式化分区193
7.3.3 挂载分区194
7.4 EXT2文件系统简介195
7.4.1 EXT2文件系统数据结构195
7.4.2 超级块196
7.4.3 块组描述符196
7.4.4 位图197
7.4.5 索引节点197
7.4.6 目录条目198
7.5 编程示例198
7.5.1 显示超级块198
7.5.2 显示位图200
7.5.3 显示根索引节点202
7.5.4 显示目录条目203
7.6 编程项目:将文件路径名转换为索引节点205
7.7 习题206
参考文献206
第8章 使用系统调用进行文件操作207
8.1 系统调用207
8.2 系统调用手册页207
8.3 使用系统调用进行文件操作207
8.4 常用的系统调用209
8.5 链接文件210
8.5.1 硬链接文件210
8.5.2 符号链接文件211
8.6 stat系统调用211
8.6.1 stat文件状态211
8.6.2 stat结构体212
8.6.3 stat与文件索引节点213
8.6.4 文件类型和权限214
8.6.5 opendir-readdir函数215
8.6.6 readlink函数215
8.6.7 ls程序216
8.7 open-close-lseek系统调用217
8.7.1 打开文件和文件描述符218
8.7.2 关闭文件描述符218
8.7.3 lseek文件描述符218
8.8 read()系统调用218
8.9 write()系统调用219
8.10 文件操作示例程序219
8.10.1 显示文件内容219
8.10.2 复制文件220
8.10.3 选择性文件复制221
8.11 编程项目:使用系统调用递归复制文件222
8.11.1 提示和帮助222
8.11.2 示例解决方案223
参考文献223
第9章 I/O库函数224
9.1 I/O库函数224
9.2 I/O库函数与系统调用224
9.3 I/O库函数的算法227
9.3.1 fread算法227
9.3.2 fwrite算法227
9.3.3 fclose算法228
9.4 使用I/O库函数或系统调用228
9.5 I/O库模式228
9.5.1 字符模式I/O228
9.5.2 行模式I/O229
9.5.3 格式化I/O230
9.5.4 内存中的转换函数230
9.5.5 其他I/O库函数230
9.5.6 限制混合fread-fwrite230
9.6 文件流缓冲231
9.7 变参函数232
9.8 编程项目:类printf函数233
9.8.1 项目规范233
9.8.2 项目基本代码233
9.8.3 myprintf()的算法234
9.8.4 项目改进234
9.8.5 项目演示和示例解决方案234
9.9 习题234
参考文献235
第10章 sh编程236
10.1 sh脚本236
10.2 sh脚本与C程序236
10.3 命令行参数237
10.4 sh变量237
10.5 sh中的引号238
10.6 sh语句238
10.7 sh命令238
10.7.1 内置命令238
10.7.2 Linux命令239
10.8 命令替换240
10.9 sh控制语句240
10.9.1 if-else-fi语句240
10.9.2 for语句242
10.9.3 while语句242
10.9.4 until-do语句243
10.9.5 case语句243
10.9.6 continue和break语句243
10.10 I/O重定向243
10.11 嵌入文档243
10.12 sh函数244
10.13 sh中的通配符245
10.14 命令分组245
10.15 eval语句245
10.16 调试sh脚本246
10.17 sh脚本的应用246
10.18 编程项目:用sh脚本递归复制文件248
参考文献249
第11章 EXT2文件系统250
11.1 EXT2文件系统250
11.2 EXT2文件系统数据结构250
11.2.1 通过mkfs创建虚拟磁盘250
11.2.2 虚拟磁盘布局251
11.2.3 超级块251
11.2.4 块组描述符252
11.2.5 块和索引节点位图252
11.2.6 索引节点252
11.2.7 数据块253
11.2.8 目录条目254
11.3 邮差算法254
11.3.1 C语言中的Test-Set-Clear位254
11.3.2 将索引节点号转换为磁盘上的索引节点255
11.4 编程示例255
11.4.1 显示超级块255
11.4.2 显示位图257
11.4.3 显示根索引节点259
11.4.4 显示目录条目260
11.5 遍历EXT2文件系统树261
11.5.1 遍历算法262
11.5.2 将路径名转换为索引节点263
11.5.3 显示索引节点磁盘块263
11.6 EXT2文件系统的实现263
11.6.1 文件系统的结构263
11.6.2 文件系统的级别264
11.7 基本文件系统265
11.7.1 type.h文件265
11.7.2 global.c文件267
11.7.3 实用程序函数268
11.7.4 mount-root272
11.7.5 基本文件系统的实现275
11.8 1级文件系统函数276
11.8.1 mkdir算法276
11.8.2 creat算法279
11.8.3 mkdir-creat的实现280
11.8.4 rmdir算法281
11.8.5 rmdir的实现283
11.8.6 link算法283
11.8.7 unlink算法285
11.8.8 symlink算法285
11.8.9 readlink算法286
11.8.10 其他1级函数286
11.8.11 编程项目1:1级文件系统的实现286
11.9 2级文件系统函数286
11.9.1 open算法287
11.9.2 lseek287
11.9.3 close算法288
11.9.4 读取普通文件288
11.9.5 写普通文件290
11.9.6 opendir-readdir291
11.9.7 编程项目2:2级文件系统的实现292
11.10 3级文件系统292
11.10.1 挂载算法292
11.10.2 卸载算法293
11.10.3 交叉挂载点293
11.10.4 文件保护294
11.10.5 实际uid和有效uid294
11.10.6 文件锁定294
11.10.7 编程项目3:整个文件系统的实现295
11.11 文件系统项目的扩展295
11.12 习题295
参考文献296
第12章 块设备I/O和缓冲区管理297
12.1 块设备I/O缓冲区297
12.2 Unix I/O缓冲区管理算法299
12.3 新的I/O缓冲区管理算法301
12.4 PV算法302
12.5 编程项目:I/O缓冲区管理算法比较303
12.5.1 系统组织303
12.5.2 多任务处理系统304
12.5.3 缓冲区管理器305
12.5.4 磁盘驱动程序305
12.5.5 磁盘控制器306
12.5.6 磁盘中断306
12.5.7 虚拟磁盘306
12.5.8 项目要求306
12.5.9 基本代码示例307
12.5.10 示例解决方案311
12.6 模拟系统的改进312
12.7 PV算法的改进312
参考文献313
第13章 TCP/IP和网络编程314
13.1 网络编程简介314
13.2 TCP/IP协议314
13.3 IP主机和IP地址315
13.4 IP协议315
13.5 IP数据包格式316
13.6 路由器316
13.7 UDP316
13.8 TCP316
13.9 端口编号316
13.10 网络和主机字节序317
13.11 TCP/IP网络中的数据流317
13.12 网络编程318
13.12.1 网络编程平台318
13.12.2 服务器-客户机计算模型318
13.13 套接字编程319
13.13.1 套接字地址319
13.13.2 套接字API319
13.14 UDP回显服务器-客户机程序321
13.15 TCP回显服务器-客户机程序323
13.16 主机名和IP地址326
13.17 TCP编程项目:互联网上的文件服务器328
13.17.1 项目规范328
13.17.2 帮助和提示329
13.17.3 多线程TCP服务器330
13.18 Web和CGI编程330
13.18.1 HTTP编程模型331
13.18.2 Web页面331
13.18.3 托管Web页面333
13.18.4 为Web页面配置HTTPD333
13.18.5 动态Web页面334
13.18.6 PHP334
13.18.7 CGI编程339
13.18.8 配置CGI的HTTPD339
13.19 CGI编程项目:通过CGI实现动态Web页面339
13.20 习题43
参考文献343
第14章 MySQL数据库系统344
14.1 MySQL简介344
14.2 安装MySQL344
14.2.1 Ubuntu Linux344
14.2.2 Slackware Linux344
14.3 使用MySQL345
14.3
— 没有更多了 —
以下为对购买帮助不大的评价