计算机科学丛书Unix/Linux系统编程

本书特色

[

Unix/Linux系统编程提供了广泛的计算机系统软件知识和高级编程技能,使读者能够与操作系统内核交互,有效利用系统资源,开发应用软件。它还为读者提供了从事计算机科学/工程高级研究(如操作系统、嵌入式系统、数据库系统、数据挖掘、人工智能、计算机网络、网络安全、分布式和并行计算)所需的背景知识。

]

内容简介

[

Unix/Linux系统编程提供了广泛的计算机系统软件知识和不错编程技能,使读者能够与操作系统内核交互,有效利用系统资源,开发应用软件。它还为读者提供了从事计算机科学/工程不错研究(如操作系统、嵌入式系统、数据库系统、数据挖掘、人工智能、计算机网络、网络安全、分布式和并行计算)所需的背景知识。

]

目录

出版者的话译者序前言第1章 引言11.1 关于本书11.2 系统编程的作用11.3 本书的目标11.3.1 强化学生的编程背景知识11.3.2 动态数据结构的应用21.3.3 进程概念和进程管理21.3.4 并发编程21.3.5 定时器和定时功能31.3.6 信号、信号处理和进程间通信31.3.7 文件系统31.3.8 TCP/IP和网络编程31.4 目标读者31.5 本书的独特之处41.6 将本书用作系统编程课程的教材51.7 其他参考书61.8 关于Unix61.8.1 AT&T Unix61.8.2 Berkeley Unix61.8.3 HP Unix71.8.4 IBM Unix71.8.5 Sun Unix71.9 关于Linux71.10 Linux版本71.10.1 Debian Linux81.10.2 Ubuntu Linux81.10.3 Linux Mint81.10.4 基于RPM的Linux81.10.5 Slackware Linux81.11 Linux硬件平台81.12 虚拟机上的Linux 81.12.1 VirtualBox91.12.2 VMware101.12.3 双启动Slackware和Ubuntu Linux111.13 使用Linux121.13.1 Linux内核映像121.13.2 Linux启动程序131.13.3 Linux启动131.13.4 Linux运行级别131.13.5 登录进程131.13.6 命令执行131.14 使用Ubuntu Linux141.14.1 Ubuntu版本141.14.2 Ubuntu Linux的特性141.15 Unix/Linux文件系统组织151.15.1 文件类型151.15.2 文件路径名151.15.3 Unix/Linux命令161.15.4 Linux手册页161.16 Ubuntu Linux系统管理171.16.1 用户账户171.16.2 添加新用户171.16.3 sudo命令17参考文献18第2章 编程背景192.1 Linux中的文本编辑器192.1.1 vim192.1.2 gedit202.1.3 emacs202.2 使用文本编辑器202.2.1 使用emacs212.2.2 emacs菜单212.2.3 emacs的集成开发环境222.3 程序开发222.3.1 程序开发步骤222.3.2 静态与动态链接242.3.3 可执行文件格式252.3.4 a.out文件的内容252.3.5 程序执行过程262.3.6 程序终止272.4 C语言中的函数调用272.4.1 32位GCC中的运行时堆栈使用情况272.4.2 long jump302.4.3 64位GCC中的运行时堆栈使用情况322.5 C语言程序与汇编代码的链接342.5.1 用汇编代码编程342.5.2 用汇编语言实现函数362.5.3 从汇编中调用C函数382.6 链接库382.6.1 静态链接库382.6.2 动态链接库392.7 makefile392.7.1 makefile格式392.7.2 make程序402.7.3 makefile示例402.8 GDB调试工具452.8.1 在emacs IDE中使用GDB452.8.2 有关使用调试工具的建议492.8.3 C语言程序中的常见错误492.9 C语言结构体532.9.1 结构体和指针542.9.2 C语言类型转换552.10 链表处理562.10.1 链表562.10.2 链表操作572.10.3 构建链表572.10.4 链表遍历602.10.5 搜索链表612.10.6 插入操作622.10.7 优先级队列632.10.8 删除操作632.10.9 循环链表642.10.10 可扩充C语言结构体642.10.11 双向链表652.10.12 双向链表示例程序652.11 树732.12 二叉树732.12.1 二叉搜索树732.12.2 构建二叉搜索树742.12.3 二叉树遍历算法752.12.4 深度优先遍历算法752.12.5 广度优先遍历算法752.13 编程项目:Unix/Linux文件系统树模拟器772.13.1 Unix/Linux文件系统树772.13.2 用二叉树实现普通树772.13.3 项目规范及要求782.13.4 命令规范782.13.5 程序结构体782.13.6 命令算法812.13.7 示例解决方案832.14 习题84参考文献86第3章 Unix/Linux进程管理873.1 多任务处理873.2 进程的概念873.3 多任务处理系统883.3.1 type.h 文件883.3.2 ts.s文件893.3.3 queue.c 文件893.3.4 t.c文件903.3.5 多任务处理系统代码介绍933.4 进程同步953.4.1 睡眠模式953.4.2 唤醒操作963.5 进程终止963.5.1 kexit()的算法973.5.2 进程家族树973.5.3 等待子进程终止983.6 MT系统中的进程管理993.7 Unix/Linux中的进程1003.7.1 进程来源1003.7.2 INIT和守护进程1003.7.3 登录进程1003.7.4 sh进程1013.7.5 进程的执行模式1013.8 进程管理的系统调用1023.8.1 fork()1023.8.2 进程执行顺序1033.8.3 进程终止1043.8.4 等待子进程终止1053.8.5 Linux中的subreaper进程1063.8.6 exec():更改进程执行映像1083.8.7 环境变量1083.9 I/O重定向1113.9.1 文件流和文件描述符1113.9.2 文件流I/O和系统调用1113.9.3 重定向标准输入1113.9.4 重定向标准输出1123.10 管道1123.10.1 Unix/Linux中的管道编程1133.10.2 管道命令处理1153.10.3 将管道写进程与管道读进程连接起来1153.10.4 命名管道1163.11 编程项目:sh模拟器1173.11.1 带有I/O重定向的单命令1173.11.2 带有管道的命令1183.11.3 ELF可执行文件与sh脚本文件1183.11.4 示例解决方案1193.12 习题119参考文献120第4章 并发编程1214.1 并行计算导论1214.1.1 顺序算法与并行算法1214.1.2 并行性与并发性1224.2 线程1224.2.1 线程的原理1224.2.2 线程的优点1224.2.3 线程的缺点1234.3 线程操作1234.4 线程管理函数1234.4.1 创建线程1244.4.2 线程ID1254.4.3 线程终止1254.4.4 线程连接1254.5 线程示例程序1254.5.1 用线程计算矩阵的和1254.5.2 用线程快速排序1274.6 线程同步1294.6.1 互斥量1294.6.2 死锁预防1314.6.3 条件变量1324.6.4 生产者-消费者问题1334.6.5 信号量1364.6.6 屏障1374.6.7 用并发线程解线性方程组1384.6.8 Linux中的线程1404.7 编程项目:用户级线程1414.7.1 项目基本代码:一个多任务处理系统1424.7.2 用户级线程1454.7.3 线程连接操作的实现1474.7.4 互斥量操作的实现1514.7.5 用并发程序测试有互斥量的项目1524.7.6 信号量的实现1564.7.7 使用信号量实现生产者-消费者问题1564.8 习题158参考文献159第5章 定时器及时钟服务1605.1 硬件定时器1605.2 个人计算机定时器1605.3 CPU操作1615.4 中断处理1615.5 时钟服务函数1615.5.1 gettimeofday-settimeofday1625.5.2 time系统调用1635.5.3 times系统调用1645.5.4 time和date命令1645.6 间隔定时器1645.7 REAL模式间隔定时器1665.8 编程项目1665.8.1 系统基本代码1675.8.2 定时器中断1705.8.3 定时器队列1715.8.4 临界区1735.8.5 高级主题1735.9 习题174参考文献174第6章 信号和信号处理1756.1 信号和中断1756.2 Unix/Linux信号示例1776.3 Unix/Linux中的信号处理1776.3.1 信号类型1776.3.2 信号的来源1786.3.3 进程PROC结构体中的信号1786.3.4 信号处理函数1796.3.5 安装信号捕捉函数1796.4 信号处理步骤1816.5 信号与异常1826.6 信号用作IPC1826.7 Linux中的IPC1836.7.1 管道和FIFO1836.7.2 信号1846.7.3 System V IPC1846.7.4 POSIX消息队列1846.7.5 线程同步机制1846.7.6 套接字1846.8 编程项目:实现一个消息IPC1846.9 习题186参考文献186第7章 文件操作1877.1 文件操作级别1877.2 文件I/O操作1897.3 低级别文件操作1917.3.1 分区1917.3.2 格式化分区1937.3.3 挂载分区1947.4 EXT2文件系统简介1957.4.1 EXT2文件系统数据结构1957.4.2 超级块1967.4.3 块组描述符1967.4.4 位图1977.4.5 索引节点1977.4.6 目录条目1987.5 编程示例1987.5.1 显示超级块1987.5.2 显示位图2007.5.3 显示根索引节点2027.5.4 显示目录条目2037.6 编程项目:将文件路径名转换为索引节点2057.7 习题206参考文献206第8章 使用系统调用进行文件操作2078.1 系统调用2078.2 系统调用手册页2078.3 使用系统调用进行文件操作2078.4 常用的系统调用2098.5 链接文件2108.5.1 硬链接文件2108.5.2 符号链接文件2118.6 stat系统调用2118.6.1 stat文件状态2118.6.2 stat结构体2128.6.3 stat与文件索引节点2138.6.4 文件类型和权限2148.6.5 opendir-readdir函数2158.6.6 readlink函数2158.6.7 ls程序2168.7 open-close-lseek系统调用2178.7.1 打开文件和文件描述符2188.7.2 关闭文件描述符2188.7.3 lseek文件描述符2188.8 read()系统调用2188.9 write()系统调用2198.10 文件操作示例程序2198.10.1 显示文件内容2198.10.2 复制文件2208.10.3 选择性文件复制2218.11 编程项目:使用系统调用递归复制文件2228.11.1 提示和帮助2228.11.2 示例解决方案223参考文献223第9章 I/O库函数2249.1 I/O库函数2249.2 I/O库函数与系统调用2249.3 I/O库函数的算法2279.3.1 fread算法2279.3.2 fwrite算法2279.3.3 fclose算法2289.4 使用I/O库函数或系统调用2289.5 I/O库模式2289.5.1 字符模式I/O2289.5.2 行模式I/O2299.5.3 格式化I/O2309.5.4 内存中的转换函数2309.5.5 其他I/O库函数2309.5.6 限制混合fread-fwrite2309.6 文件流缓冲2319.7 变参函数2329.8 编程项目:类printf函数2339.8.1 项目规范2339.8.2 项目基本代码2339.8.3 myprintf()的算法2349.8.4 项目改进2349.8.5 项目演示和示例解决方案2349.9 习题234参考文献235第10章 sh编程23610.1 sh脚本23610.2 sh脚本与C程序23610.3 命令行参数23710.4 sh变量23710.5 sh中的引号23810.6 sh语句23810.7 sh命令23810.7.1 内置命令23810.7.2 Linux命令23910.8 命令替换24010.9 sh控制语句24010.9.1 if-else-fi语句24010.9.2 for语句24210.9.3 while语句24210.9.4 until-do语句24310.9.5 case语句24310.9.6 continue和break语句24310.10 I/O重定向24310.11 嵌入文档24310.12 sh函数24410.13 sh中的通配符24510.14 命令分组24510.15 eval语句24510.16 调试sh脚本24610.

封面

计算机科学丛书Unix/Linux系统编程

书名:计算机科学丛书Unix/Linux系统编程

作者:[美] K.C·王(K.C. Wang)

页数:388

定价:¥139.0

出版社:机械工业出版社

出版日期:2020-06-01

ISBN:9787111656715

PDF电子书大小:144MB 高清扫描完整版

百度云下载:http://www.chendianrong.com/pdf

发表评论

邮箱地址不会被公开。 必填项已用*标注