批量上传,套装书可能不全,下单前咨询在线客服!有特殊要求,下单前请咨询客服!
¥ 58.6 7.4折 ¥ 79 全新
库存10件
作者刘文果、丁凯、徐钦桂、钟雪峰、谭伟
出版社清华大学出版社
ISBN9787302658078
出版时间2024-06
装帧平装
开本16开
定价79元
货号29740317
上书时间2024-11-04
Linux是一种技术先进、功能强大、性能优越、应用广泛的操作系统,也是当今大多数云计算、大数据平台的节点用操作系统。要掌握Linux系统原理和编程技术需要具备操作系统原理知识,而学习操作系统原理,又需要通过Linux编程来巩固和应用理论知识。以往这两方面的教学脱节严重,致使教学效果不及预期。
本书是作者从事多年有关操作系统课程教学研究与改革成果的结晶,针对过去理论原理和编程实践脱节的问题,将操作系统理论和Linux编程实践进行深度融合,以Linux系统编程为主线,纳入操作系统中的进程管理、线程机制、信号量与P/V操作、进程间通信、文件系统等部分内容,将理论和实践有机结合,要想熟练掌握操作系统与Linux编程,不仅要深入理解相关的概念和原理,还要用操作系统理论知识去分析问题,在Linux环境下编写系统和网络通信应用程序。
本书先介绍操作系统的操作使用、Shell编程、文件管理操作,使读者获得初步的感知,然后介绍系统内部结构、原理和编程等内容,使学习过程自然而不唐突。对于文件系统、进程管理与控制、线程管理、进程间通信、网络编程,都是从学生看得见、摸得着的命令操作和C程序运行结果开始,提出问题,引发学生讨论,引入操作系统的概念、内部结构、理论原理和解决方案。书中的绘图使抽象的原理看得见,逐步引导学生用理论知识去解决更多、更复杂的应用问题。本教材于2017年开始应用于我校有关操作系统课程的教学,经过两年的完善,2019年出版第一版,2023年出版Mooc视频版。多年的教学实践表明,采用本书内容和教学方案,有效破解了多年来操作系统课程难教难学的问题。
本书既可作为有关操作系统课程的主要教材,又可独立作为有关操作系统实验或Linux系统编程的教材,书中提供了大量的微课视频、PPT课件、示例源代码、习题答案、实验指导等教学资源。
本书内容全面、结构合理、思路清晰、语言简洁、示例丰富。每章的开头概述了本章的学习目标。每章的正文都结合所讲述的关键技术和难点,穿插了大量有价值的示例程序,安排了有针对性的思考和练习,帮助学生理解相关概念。每章末尾都安排了丰富的课后习题,培养学生分析和解决问题的能力。
在编写本书的过程中,我们参考了相关文献,在此向这些文献的作者深表感谢。由于我们水平有限,书中难免有不足之处,恳请专家和广大读者批评指正。我们的电话是010-62796045,电子邮箱是992116@qq.com。
本书配套的电子课件、示例源代码、习题答案和实验指导可以到http://www.tupwk.com.cn/
downpage网站下载,也可以扫描下方的“配套资源”二维码获取。扫描下方的“看视频”二维码可以直接观看教学视频。
扫描下载 扫一扫
配套资源 看视频
作 者
2023年11月
《Linux编程(第二版)(微课版)》将Linux系统编程应用与操作系统原理深度融合,先从Linux C案例程序出发,提出问题,引入操作系统的概念和原理,讨论解决问题的理论和方法,再从理论回归实践,分析和解决编程应用问题,破解传统上理论教学和实践教学脱节的问题,取得了很好的教学效果。本书主要内容包括Linux基本操作、Shell编程、系统I/O编程、文件系统、进程控制原理、多进程并发编程、信号机制、线程概念、多线程并发编程、同步互斥概念、基于信号量与P/V操作解决同步互斥问题、经典同步问题、网络编程、并发网络应用编程等。本书安排了大量的程序示例、课后习题,旨在训练读者理论运用和解决问题的能力,精心设计了很多绘图,使抽象的概念、原理和技术看得见。
《Linux编程(第二版)(微课版)》内容全面、结构合理、思路清晰、语言简洁、示例丰富。本书既可作为高等院校计算机类专业有关操作系统和Linux编程等课程的教材,又可作为C程序、嵌入式开发工程师的参考资料。
《Linux编程(第二版)(微课版)》配套的电子课件、示例源代码、习题答案和实验指导可以到http://www.tupwk.com.cn/downpage网站下载,也可以扫描前言中的“配套资源”二维码获取。扫描前言中的“看视频”二维码可以直接观看教学视频。
第1章 Linux系统文件操作 1
1.1 UNIX/Linux操作系统简介 1
1.1.1 UNIX简介 1
1.1.2 Linux概述 2
1.2 Linux系统目录结构 3
1.3 Linux系统的安装、启动、登录、用户界面与命令格式 5
1.3.1 在VMware中用快照快速安装Linux虚拟机系统 5
1.3.2 启动与登录Linux 5
1.3.3 三种系统操作方法 6
1.3.4 Linux命令格式和说明 7
1.4 Linux文件、目录操作及文件属性、权限 9
1.4.1 目录路径与目录操作 9
1.4.2 文件属性与权限 13
1.4.3 Linux文件操作命令 14
1.4.4 修改文件属性 19
1.4.5 使用通配符(“*”和“?”)匹配文件名 21
1.4.6 文件的压缩与打包 22
1.5 输入/输出重定向和管道 23
1.6 本章小结 24
课后作业 25
第2章 Linux Shell编程 27
2.1 Shell编程基本概念 27
2.1.1 Shell脚本的结构 27
2.1.2 Shell脚本的创建与执行方法 28
2.1.3 Shell变量与赋值表达式 29
2.1.4 Shell输入/输出语句 30
2.1.5 终止脚本的执行和终止状态 30
2.2 Shell数学运算与字符串处理 33
2.2.1 Shell数学运算 33
2.2.2 Shell字符串处理 33
2.3 Shell条件与if控制结构 34
2.3.1 if语句 34
2.3.2 test命令 36
*2.3.3 复合条件检查 40
2.3.4 case语句 41
2.4 循环结构 41
2.4.1 for循环结构 42
2.4.2 while循环结构 43
2.4.3 until循环结构 44
2.5 Linux全局变量和环境变量 44
2.5.1 Linux Shell层次结构 44
2.5.2 Shell全局变量与局部变量 46
2.5.3 Linux环境变量 46
*2.5.4 Shell变量的删除和只读设置方法 49
2.5.5 Shell数组的定义和使用方法 49
2.6 Linux文件I/O、I/O重定向和管道 50
2.6.1 标准文件描述符 50
2.6.2 I/O重定向 50
2.6.3 管道 52
2.6.4 从文件获取输入 52
2.7 命令行参数 53
*2.8 Shell函数 54
*2.8.1 函数的基本用法 54
*2.8.2 向函数传递参数 55
2.9 本章小结 55
课后作业 56
第3章 Linux C编程环境 57
3.1 Linux C程序的编译与执行 57
3.1.1 Linux环境下C程序的编译与执行过程 57
3.1.2 编译多个源文件 61
3.1.3 使用头文件和库文件 62
*3.1.4 使用gcc创建自定义库文件 65
3.1.5 gcc常用命令选项及用法 67
3.2 Linux自带的常用系统库 68
3.2.1 数学函数 68
3.2.2 环境控制函数 69
3.2.3 字符串处理函数 69
3.2.4 时间函数 70
3.2.5 数据结构算法函数 71
3.3 诊断和处理Linux编程错误 75
3.3.1 诊断和处理编译错误 75
3.3.2 处理系统调用失败 79
3.3.3 用断言检查程序状态错误 83
*3.4 用GDB/ddd调试器诊断运行错误 84
*3.4.1 用GDB调试程序运行错误的示例 85
*3.4.2 常用的GDB命令 88
*3.4.3 用ddd/GDB调试程序 89
3.5 命令行参数和环境变量的读取方法 89
3.5.1 环境变量及其使用方法 89
3.5.2 命令行参数的使用方法 90
*3.6 make工具 91
*3.6.1 引入make工具的原因 91
*3.6.2 用makefile描述源文件间的依赖关系 92
*3.6.3 引入伪目标以增强makefile功能 94
*3.6.4 用变量优化makefile文件 94
3.6.5 用预定义变量和隐式规则简化makefile文件 95
3.7 本章小结 96
课后作业 97
第4章 输入/输出与文件系统 100
4.1 文件系统层次结构 100
4.1.1 文件系统层次结构简介 100
4.1.2 文件I/O库函数 101
4.2 系统I/O概念与文件操作编程 102
4.2.1 UNIX I/O 102
4.2.2 文件打开和关闭函数 103
4.2.3 文件读写编程与读写性能改进方法 106
4.2.4 文件定位与文件内容随机读取 110
4.2.5 任意类型数据的文件读写 112
4.2.6 用文件读写函数操作设备 114
4.3 内核文件I/O数据结构及应用 116
4.3.1 文件描述符和标准输入/输出 116
4.3.2 文件打开过程 117
4.3.3 内核文件I/O数据结构
共享原理 118
4.3.4 dup和I/O重定向 119
*4.4 用RIO包增强UNIX I/O功能 123
*4.4.1 RIO无缓冲的输入/输出函数 123
*4.4.2 RIO带缓冲的输入函数 124
4.5 文件组织 127
4.5.1 文件属性、目录项与目录 127
4.5.2 逻辑地址与物理地址 128
4.5.3 创建和读写文件 129
4.5.4 一体化文件目录和分解目录 131
4.5.5 Linux分解式目录管理 132
4.5.6 读取文件元数据 134
4.5.7 文件搜索和当前目录 135
4.6 文件物理结构 136
4.6.1 外存组织方式 136
4.6.2 管理磁盘空闲盘块 140
4.6.3 文件系统结构格式 142
4.7 本章小结 143
课后作业 143
第5章 进程管理与控制 150
5.1 逻辑控制流和并发流 150
5.2 进程的基本概念 152
5.2.1 进程概念、结构与描述 152
5.2.2 进程的基本状态及状态转换 154
5.2.3 对进程PCB进行组织 154
5.2.4 进程实例 155
5.2.5 操作进程的工具 157
5.2.6 编程读取进程属性 159
*5.2.7 进程权限和文件特殊权限位 160
5.3 进程控制 162
5.3.1 创建进程 162
5.3.2 多进程并发特征与执行流程分析 169
5.3.3 进程的终止与回收 172
5.3.4 让进程休眠 176
5.3.5 加载并运行程序 176
5.3.6 fork和exec函数的应用实例 179
*5.3.7 非本地跳转 182
5.3.8 进程与程序的区别 184
5.4 信号机制 184
5.4.1 信号的概念 185
5.4.2 有关信号的术语 186
5.4.3 发送信号的过程 187
5.4.4 接收信号的过程 190
*5.4.5 信号处理问题 192
*5.4.6 可移植信号处理 195
*5.4.7 信号处理引起的竞争 197
*5.5 守护进程 200
5.6 进程、内核与系统调用间的关系 202
5.7 本章小结 203
课后作业 203
第6章 线程控制与同步互斥 209
6.1 线程概念 209
6.1.1 什么是线程 209
6.1.2 线程执行模型 210
6.1.3 多线程应用 211
6.1.4 第一个线程 211
6.2 多线程并发特征与编程方法 212
6.2.1 Pthreads线程API 212
6.2.2 多线程并发特征 215
6.2.3 线程间数据传递 217
6.3 多线程程序中的共享变量 219
6.3.1 进程的用户地址空间结构 220
6.3.2 变量类型和运行实例 220
6.3.3 共享变量的识别 221
6.4 线程同步与互斥 221
6.4.1 变量共享引入的同步错误 222
6.4.2 临界资源、临界区、进程(线程)互斥问题 227
6.4.3 用信号量与P/V操作保证临界区互斥执行 228
6.4.4 用信号量及P/V操作解决资源调度问题 230
6.4.5 用Pthreads同步机制实现线程的互斥与同步 235
6.4.6 共享变量的类型与同步编程小结 239
6.5 经典同步问题 240
6.5.1 生产者/消费者问题 240
6.5.2 读者/写者问题 243
*6.6 其他同步机制 244
*6.6.1 AND型信号量 244
*6.6.2 信号量集 245
*6.6.3 条件变量 245
*6.6.4 管程 248
*6.7 多线程并发的其他问题 249
*6.7.1 线程安全 249
*6.7.2 可重入性 251
*6.7.3 线程不安全库函数 251
*6.7.4 线程竞争 252
6.8 使用多线程提高并行性 255
6.8.1 顺序程序、并发程序和并行程序 255
6.8.2 并行程序应用示例 255
6.8.3 使用线程管理多个并发活动 259
6.9 本章小结 261
课后作业 262
第7章 进程间通信 270
7.1 管道通信 270
7.1.1 什么是管道 270
7.1.2 命名管道FIFO及应用编程 271
*7.1.3 利用FIFO传输任意类型的数据 274
7.1.4 无名管道pipe及应用 275
7.1.5 使用pipe实现管道命令 278
*7.1.6 使用FIFO的客户端/服务器应用程序 280
7.2 消息队列 283
7.2.1 消息队列的结构 283
7.2.2 消息队列函数 284
7.2.3 消息队列通信示例 286
7.2.4 通过消息队列传送任意类型的数据 289
7.3 共享内存 291
7.3.1 基于共享内存进行通信的基本原理 291
7.3.2 共享内存相关API函数 291
7.3.3 共享内存通信验证 293
7.3.4 共享内存通信示例 295
7.4 用IPC信号量实施进程同步 299
7.4.1 IPC信号量集结构体及操作函数 299
7.4.2 用信号量集创建自定义P/V操作函数库 301
7.5 本章小结 302
课后作业 302
第8章 网 络 编 程 304
8.1 客户端/服务器编程模型 304
8.2 网络通信结构和Internet连接 305
8.2.1 网络通信结构 305
8.2.2 Internet连接 306
8.3 套接字地址与设置方法 307
8.3.1 IP地址和字节序 307
8.3.2 Internet域名 309
8.3.3 套接字地址结构 312
8.4 套接字接口与TCP通信编程方法 312
8.4.1 socket函数 313
8.4.2 connect函数 313
8.4.3 open_client_sock函数 314
8.4.4 bind函数 315
8.4.5 listen函数 315
8.4.6 open_listen_sock函数 315
8.4.7 accept函数 316
8.4.8 send/recv函数 317
8.5 网络通信应用示例toggle 317
8.6 Web编程基础 320
8.6.1 Web基础 320
8.6.2 Web内容 321
8.6.3 HTTP事务 322
8.7 小型Web服务器: weblet.c 324
8.7.1 weblet的主程序 324
8.7.2 HTTP事务处理 325
8.7.3 生成错误提示页面 327
8.7.4 HTTP额外请求报头的读取 328
8.7.5 URI解析 328
8.7.6 提供静态内容 329
8.7.7 测试静态网页功能 330
8.7.8 提供动态内容 331
8.7.9 实现CGI程序 332
8.7.10 测试动态网页功能 333
8.7.11 关于Web服务器的其他问题 335
8.8 本章小结 335
— 没有更多了 —
以下为对购买帮助不大的评价