操作系统实践--基于Linux的应用与内核编程

副标题:无

作   者:房胜 等编著

分类号:

ISBN:9787302405276

微信扫一扫,移动浏览光盘

简介

(1)《操作系统实践——基于Linux的应用与内核编程》不是系统讲解Linux的书籍,而主要是通过实验来帮助读者更好地掌握操作系统的原理、方法和概念。(2)*部分是Linux操作和应用编程,主要是为学习过C语言、但未接触过Linux编程的读者提供一个快速上手的途径;第二部分是Linux内核编程,按操作系统课程的内容结构进行编排的,目的是配合操作系统理论教学,使读者对操作系统课程中的重要概念、理论和方法有一个直观、具体、生动的认识。

目录

第1章Linux概述
 
1.1Linux的发展
 
1.1.1Linux概念
 
1.1.2Linux和UNIX的渊源
 
1.1.3与Linux相关的协议和标准
 
1.2Linux的内核架构
 
1.2.1Linux操作系统结构
 
1.2.2Linux内核体系结构
 
1.2.3内核版本和获取
 
1.2.4内核源代码目录结构
 
1.3Linux的主要版本
 
1.3.1Linux版本介绍
 
1.3.2Ubuntu的首次使用
 
1.4本章小结
 
习题
 
第2章Linux基本命令与应用
 
2.1认识命令行
 
2.1.1Terminal
 
2.1.2命令用法初体验
 
2.1.3其他虚拟终端
 
2.1.4相关概念
 
2.2使用文本文件
 
2.2.1创建文本文件
 
2.2.2查看文本文件内容
 
2.2.3查找及统计
 
2.3目录和文件
 
2.3.1目录及文件的基本操作
 
2.3.2文件权限
 
2.4管理用户和用户组
 
2.4.1相关配置文件
 
2.4.2相关操作
 
2.5其他常见命令
 
2.5.1挂载和卸载设备
 
2.5.2安装和卸载软件
 
2.6本章小结
 
习题
 
练习
 
第3章从Hello Linux程序开始
 
3.1Hello Linux
 
3.1.1hello_linux的诞生
 
3.1.2Linux平台C语言编码风格
 
3.1.3开发工具
 
3.2gcc编译
 
3.2.1单文件的编译
 
3.2.2多个源文件的编译
 
3.2.3其他介绍
 
3.3gdb调试
 
3.3.1gdb介绍
 
3.3.2使用gdb调试C语言文件
 
3.4本章小结
 
习题
 
练习
 
第4章利用Makefile管理一个工程
 
4.1第一个Makefile
 
4.1.1利用make编译一个程序文件
 
4.1.2利用make编译多个程序文件
 
4.2Makefile的基本概念与规则
 
4.2.1Makefile的基本概念
 
4.2.2规则
 
4.3本章小结
 
习题
 
练习
 
第5章Linux系统中的时间
 
5.1时间表示
 
5.1.1Linux系统时间
 
5.1.2Linux应用程序时间函数
 
5.2利用程序显示系统时间
 
5.2.1常用时间函数
 
5.2.2高级时间函数
 
5.3时间的测量与计时
 
5.3.1时间测量
 
5.3.2计时器
 
5.4本章小结
 
习题
 
练习
 
第6章多进程程序开发
 
 
6.1进程概念
 
6.2进程的创建
 
6.3连续调用多次fork函数
 
6.4启动外部程序
 
6.5本章小结
 
习题
 
练习
 
第7章进程间通信
 
7.1概述
 
7.2管道通信
 
7.2.1管道概述
 
7.2.2无名管道
 
7.2.3命名管道
 
7.3套接字通信
 
7.3.1用文件套接字实现本地进程通信
 
7.3.2用网络套接字实现网络进程通信
 
7.4本章小结
 
习题
 
练习
 
第8章利用Qt开发GUI应用程序
 
8.1Qt及Qt Creator
 
8.1.1Qt简介
 
8.1.2Qt Creator
 
8.1.3Qt的安装和启动
 
8.1.4Qt Creator的界面组成
 
8.2用Qt Creator完成一个GUI项目
 
8.2.1创建Qt GUI项目
 
8.2.2程序的运行
 
8.3信号和槽
 
8.3.1信号和槽的概念
 
8.3.2用信号槽机制响应GUI事件
 
8.3.3关于信号槽的进一步说明
 
8.4Qt设计师
 
8.4.1简介
 
8.4.2Qt设计师的功能
 
8.5本章小结
 
习题
 
练习
 
第9章MySQL数据库
 
9.1安装MySQL
 
9.2MySQL的基本用法
 
9.2.1MySQL管理
 
9.2.2数据库操作
 
9.2.3数据类型
 
9.2.4表操作
 
9.2.5创建一个数据库
 
9.3使用C语言访问MySQL数据库
 
9.3.1连接数据库
 
9.3.2执行SQL语句
 
9.3.3处理数据
 
9.4本章小结
 
习题
 
练习
 
第10章Linux综合应用
 
10.1概述
 
10.1.1系统需求
 
10.1.2本章内容结构
 
10.2原型设计
 
10.2.1添加资源文件
 
10.2.2界面设计
 
10.2.3界面布局
 
10.2.4添加动作
 
10.3系统设计
 
10.3.1系统架构
 
10.3.2客户端功能设计
 
10.3.3服务器功能设计
 
10.4系统实现
 
10.4.1数据结构(通信协议)
 
10.4.2客户端实现
 
10.4.3服务器端实现
 
10.4.4几点说明
 
10.5Linux应用综合实训
 
10.6本章小结
 
第11章构建Linux内核系统
 
11.1概述
 
11.2内核初始化
 
11.3内核配置
 
11.4内核构建
 
11.5本章小结
 
练习
 
第12章添加最简单的Linux内核模块
 
12.1用户态与内核态
 
12.1.1C/C 应用程序的运行机制
 
12.1.2Linux内核模块
 
12.2添加最简单的Linux内核模块
 
12.2.1LKM代码框架
 
12.2.2LKM编译
 
12.2.3kello.c的编译、添加和删除
 
12.2.4LKM与C应用程序的差异
 
12.3printk和某些常见宏
 
12.3.1实时显示内核模块运行信息
 
12.3.2显示位置信息
 
12.4本章小结
 
练习
 
第13章基于proc的Linux进程控制块信息读取
 
13.1proc伪文件系统
 
13.1.1proc中的文件
 
13.1.2proc中文件的内容
 
13.1.3proc伪文件系统介绍
 
13.2Linux中的进程控制块
 
13.2.1Linux进程控制块task_struct
 
13.2.2进程重要信息解读
 
13.3通过proc读取Linux进程信息
 
13.3.1创建proc文件
 
13.3.2基于seq_file机制的proc文件操作
 
13.3.3task_struct信息读取过程
 
13.3.4tasklist内核模块编译和添加
 
13.3.5tasklist内核模块工作流程
 
13.4task_struct重要信息
 
13.4.1Linux进程调度策略
 
13.4.2进程优先级
 
13.4.3进程控制块中的其他信息
 
13.5向proc文件写入数据
 
13.5.1用户空间和内核空间之间传递数据
 
13.5.2内核空间内存分配
 
13.5.3proc文件的写操作函数
 
13.6本章小结
 
习题
 
练习
 
第14章POSIX多任务及同步机制
 
14.1fork创建进程
 
14.1.1fork创建进程的流程
 
14.1.2fork/exec创建进程的流程
 
14.1.3fork进阶问题
 
14.2POSIX线程机制
 
14.2.1POSIX概述
 
14.2.2POSIX线程创建
 
14.3POSIX多线程及同步机制
 
14.3.1多个线程的资源竞争访问
 
14.3.2POSIX同步机制
 
14.4条件变量与生产者消费者问题
 
14.4.1同步与互斥
 
14.4.2POSIX条件变量
 
14.4.3条件变量在生产者消费者问题中的应用
 
14.5本章小结
 
习题
 
练习
 
第15章用户态和内核态信号量
 
15.1信号量与同步问题
 
15.1.1信号量概述
 
15.1.2同步问题
 
15.2POSIX信号量
 
15.2.1无名信号量
 
15.2.2有名信号量
 
15.2.3POSIX信号量用于线程同步问题
 
15.2.4POSIX信号量用于进程间同步
 
15.2.5Linux中的信号量技术
 
15.3内核信号量和内核线程
 
15.3.1Linux内核信号量
 
15.3.2Linux内核线程
 
15.3.3内核信号量和线程的例子
 
15.3.4Linux内核同步技术
 
15.4本章小结
 
习题
 
练习
 
第16章基于共享内存的进程间通信
 
16.1共享内存
 
16.2共享内存映射文件
 
16.2.1单个进程的内存映射文件
 
16.2.2多个进程间的内存映射文件的同步
 
16.3POSIX共享内存对象
 
16.4本章小结
 
习题
 
练习
 
第17章Linux内存管理
 
17.1Linux物理内存管理机制
 
17.1.1内存结点node
 
17.1.2内存结点zone 
 
17.1.3物理页框page 
 
17.2IA32的寻址机制
 
17.2.1IA32的段机制
 
17.2.2IA32的页面映射机制
 
17.2.3IA32中的控制寄存器以及PAE、PSE
 
17.3IA32结构上的Linux地址映射机制
 
17.3.1Linux中段地址映射机制
 
17.3.2IA32 Linux段地址映射实验
 
17.3.3IA32 Linux页地址映射
 
17.3.4IA32 Linux页地址映射实验
 
17.4Linux进程地址空间
 
17.4.1Linux中进程的虚拟地址空间
 
17.4.2获取进程虚拟地址空间信息
 
17.4.3Linux中进程的虚拟存储区域vma
 
17.4.4获取进程的虚拟内存区域信息
 
17.4.5Linux中进程、内存和文件的关系
 
17.5本章小结
 
习题
 
练习
 
第18章Linux设备驱动程序
 
18.1概述
 
18.1.1设备管理基本概念
 
18.1.2Linux字符设备管理
 
18.2字符设备CMOS驱动程序
 
18.2.1CMOS RTC信息
 
18.2.2获取CMOS RTC信息的驱动程序内核模块
 
18.2.3CMOS RTC驱动程序内核模块测试
 
18.3基于内存映射的杂项设备驱动程序
 
18.3.1Linux中的杂项设备
 
18.3.2设备驱动中的内存映射
 
18.3.3基于内存映射的杂项设备驱动程序
 
18.3.4测试
 
18.4本章小结
 
习题
 
练习
 
第19章Linux虚拟文件系统
 
19.1概述
 
19.1.1VFS在Linux中的作用
 
19.1.2VFS支持的文件系统类型
 
19.1.3VFS的基本数据结构
 
19.2VFS对象的操作
 
19.2.1注册文件系统
 
19.2.2文件系统装载
 
19.2.3与进程相关的文件系统数据结构
 
19.2.4从当前进程访问Linux内核VFS文件系统
 
19.3proc文件系统
 
19.3.1主要数据结构
 
19.3.2proc文件系统的操作
 
19.4本章小结
 
习题
 
练习
 
参考文献
 
 
 
 
 
 
实验目录
 
 
 
第2章Linux基本命令与应用
 
实验1: 认识命令行的相关实验23
 
实验2: 创建文本文件26
 
实验3: 查看文本文件28
 
实验4: 文本文件查找及统计29
 
实验5: 目录及文件基本操作35
 
实验6: 文件权限38
 
实验7: 管理用户和用户组42
 
实验8: 其他常见操作45
 
第3章从Hello Linux程序开始
 
实验1: 简单程序开发52
 
实验2: 单步编译和多步编译57
 
实验3: 浏览gdb内置命令59
 
实验4: 利用gdb调试程序63
 
第4章利用Makefile管理一个工程
 
实验1: Makefile与命令行编译的比较68
 
实验2: 编写Makefile72
 
第5章Linux系统中的时间
 
实验1: 编程显示系统时间79
 
实验2: Linux中的时间测量79
 
实验3: Linux中的计时器81
 
第6章多进程程序开发
 
实验1: 利用fork创建进程85
 
实验2: 连续调用多次fork函数86
 
实验3: 启动外部程序87
 
第7章进程间通信
 
实验1: 管道通信99
 
实验2: 文件套接字通信103
 
实验3: 网络套接字通信106
 
第8章利用Qt开发GUI应用程序
 
实验1: Qt的安装与启动112
 
实验2: 创建Qt GUI项目115
 
实验3: 信号槽机制118
 
第9章MySQL数据库
 
实验1: MySQL数据库操作124
 
实验2: MySQL表操作127
 
实验3: 创建一个MySQL数据库129
 
实验4: 用C语言访问MySQL数据库136
 
 
 
第12章添加最简单的Linux内核模块
 
实验1: 添加最简单的内核模块kello162
 
实验2: 内核模块输出信息显示162
 
第13章基于proc的Linux进程控制块信息读取
 
实验1: 测试proc文件系统功能168
 
实验2: 创建显示系统进程信息的proc模块179
 
实验3: 显示Linux进程控制块中更多的信息182
 
第14章POSIX多任务及同步机制
 
实验1: Linux进程创建193
 
实验2: POSIX线程创建198
 
实验3: POSIX线程互斥和参数传递202
 
实验4: 使用POSIX条件变量实现线程同步206
 
第15章用户态和内核态信号量
 
实验1: 使用POSIX信号量实现线程同步217
 
实验2: 使用POSIX信号量实现进程同步223
 
实验3: 创建Linux内核线程并使用内核信号量实现同步228
 
第16章基于共享内存的进程间通信
 
实验1: 使用内存映射文件实现进程间通信237
 
实验2: 使用共享内存对象实现进程同步239
 
第17章Linux内存管理
 
实验1: 获取IA32段寄存器中的描述符254
 
实验2: 获取IA32中的全局段表信息256
 
实验3: 获取C程序中一个逻辑地址对应的物理地址263
 
实验4: 显示进程的虚拟内存地址空间分布信息268
 
实验5: 获取一个进程的虚拟存储区域信息272
 
第18章Linux设备驱动程序
 
实验1: 实现读取CMOS实时时钟信息的驱动程序286
 
实验2: 实现一个基于内存映射的设备驱动程序289
 
第19章Linux虚拟文件系统
 
实验1: 访问Linux内核虚拟文件系统300
 
实验2: 加载newproc文件系统303

已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

操作系统实践--基于Linux的应用与内核编程
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon