信息安全系统设计与实现
第一章 引言
关于本书
系统编程的作用
本书的目标
- 强化学生的编程背景知识
- 动态数据结构的应用
- 进程概念和进程管理
- 并发编程
- 定时器和定时功能
- 信号、信号处理和进程间通信
- 文件系统
- TCP/IP和网络编程
目标读者
本书的独特之处
将本书用作系统编程课程的教材
其他参考书
关于Unix
- AT&T Unix
- Berkeley Unix
- HP Unix
- IBM Unix
-
Sun Unix
对Unix的发展历史有了一些了解,Unix系统大部分专有而且与硬件绑定,所以催生了Linux
关于Linux
Linux 版本
- Debian Linux
- Ubuntu Linux
- Linux Mint
- 基于RPM的Linux
-
Slackware Linux
对Linux的发展历史有了一些了解,以前一直以为俩者是类似windows那样的一家公司的产品,现在才知道原来是类似架构的系统
Linux硬件平台
虚拟机上的Linux
- VirtualBox
- Vmware
- 双启动Slackware和Ubuntu Linux
使用Linux
- Linux内核映像
- Linux启动程序
- Linux启动
- Linux运行级别
- 登陆进程
-
命令执行
简述了Linux运行启动的一系列过程,让我对Linux系统的运行过程有了更深刻的了解
使用Ubuntu Linux
- Ubuntu版本
- Ubuntu Linux的特性
Unix/Linux文件系统组织
-
文件类型
目录文件、非目录文件(常规文件、特殊文件) - 文件路径名
- Unix/Linux命令
- Linux手册页
Ubuntu Linux系统管理
- 用户账户
- 添加新用户
- sudo命令
第二章 编程背景
Linux中的文本编辑器
-
vim
标准内置编辑器 hjkl左下上右i插入a追加:末行模式w保存q退出wq保存退出q!强制退出 - gedit
- emacs
使用文本编辑器
- 使用emacs
- emacs菜单
- emacs集成开发环境
程序开发
-
程序开发步骤
变量:全局变量、局部变量、静态变量、自动变量、寄存器变量 创建源文件~gcc转换为二进制可执行文件(.c编译器.s汇编器.o链接器.out) - 静态与动态链接
- 可执行文件格式
-
a.out文件的内容
文件头、代码段、数据段、符号表 - 程序执行过程
- 程序终止
C语言中的函数调用
- 32位GCC中的运行时堆栈使用情况
- long jump
- 64位GCC中的运行时堆栈使用情况
C语言程序与汇编代码的链接
- 用汇编代码编程
- 用汇编语言实现函数
- 从汇编中调用C函数
链接库
- 静态链接库
- 动态链接库
makefile
- makefile格式
- make程序
- makefile事例
GDB调试工具
- 在emacs IDE中使用GDB
- 有关使用调试工具的建议
- C语言程序中的常见错误
C语言结构体
- 结构体和指针
- C语言类型转换
链表处理
- 链表
- 链表操作
- 构建链表
- 链表遍历
- 搜索链表
- 插入操作
- 优先级队列
- 删除操作
- 循环链表
- 可扩充C语言结构体
- 双向链表
-
双向链表示例程序
这部分内容基本和数据结构课程类似
树
二叉树
- 二叉搜索树
- 构建二叉搜索树
- 二叉树遍历算法
- 深度优先遍历算法
-
广度优先遍历算法
这部分内容也和数据结构差不多,让我重新巩固了之前学习的知识
编程项目:Unix/Linux文件系统树模拟器
- Unix/Linux文件系统树模拟器
- 用二叉树实现普通树
- 项目规范及要求
- 命令规范
- 程序结构体
- 命令算法
- 示例解决方案
习题
学习心得
总的来说这两章知识高屋建瓴地描述了Linux系统的架构和运转过程,让我有了一个粗浅的概略了解,其中还涉及不少数据结构课程的知识,需要多多进行复习和练习才行
拓展学习
make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。
首先,我们用一个示例来说明Makefile的书写规则。以便给大家一个感兴认识。这个示例来源于GNU的make使用手册,在这个示例中,我们的工程有8个C文件,和3个头文件,我们要写一个Makefile来告诉make命令如何编译和链接这几个文件。我们的规则是:
1.如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。
2.如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。
3.如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。
只要我们的Makefile写得够好,所有的这一切,我们只用一个make命令就可以完成,make命令会自动智能地根据当前的文件修改的情况来确定哪些文件需要重编译,从而自己编译所需要的文件和链接目标程序。