学习笔记1(20191222 何雨蔚)
学习笔记
第一章
系统编程是计算机科学和计算机工程教育不可或缺的一部分。
动态数据结构包括c结构,指针,链表,和链数。
操作系统三大组成部分:进程管理,网络编程,文件系统。
Unix
是一种通用操作系统,诞生于20世纪70年代早期。
- AT&T Unix
- Berkeley Unix
- HP Unix
- IBM Unix
- Sun Unix
Linux
Linux是一个类Unix系统,包含其他Unix系统的许多特性,由各种最为流行的Unix系统组合而成。优点:可免费使用,且易于安装。
在典型的linux系统中,linux内核映像位于/boot目录中。
内核映像:一个可启动的linux内核印象由三部分组成:Boot|setup|linux kernel
其中boot包含一些参数以供setup使用,setup是一段16位和32位的汇编代码,用于在启动期间将16位模式转换成32位保护模式。
运行级别:以单用户模式启动。
命令执行:用户进程通常会执行命令解释程序sh。
Ubuntu Linux的特性
- 默认主目录为home/username的用户账户。
- 用户应为普通用户,而不是根用户或超级用户。
- 用户的path(路径)环境变量设置通常不包括用户的当前目录。
Unix/Linux文件系统组织:采用树型组织结构,将所有能够存储或提供信息的事物都视为文件文件。系统树的每个节点都是一个file文件。
文件路径名:以/开头的路径名为绝对路径名,反之则为相对于进程当前工作目录cmd的相对路径名。Cmd可通过cd更改目录命令更改,pwd命令可打印cmd的绝对路径名。
Linux手册页Linux将在线手册页保存在标准/user/man目录下。
sudo命令:sudo(“超级用户执行”)允许用户以另一个用户(通常是超级用户)的身份执行命令。
第二章
vim
vim是linux的标准内置编制器。
vim有三种不同的操作模式,分别是:命令模式,插入模式,末行模式。
vim启动时,处于默认的命令模式。用户输入i(插入)或a(追加)命令,将vim切换到插入模式。要退出插入模式,请按esc键一次或多次。在命令模式下,输入“:”,进入末行模式,将文本保存为文件或退出vim。
使用emacs
- 从X-windows的伪终端输入命令行,使用一个可选文件名(如t.c)调用emacs编辑器
- 创建源文件后,按下meta键序列“CTrl+X+C“,以保存文件并退出
gcc
- 将C源文件转化为汇编代码文件。
- 把汇编代码转换成目标代码。
- 链接。
静态与动态链接
创建二进制可执行文件的方法有两种,分别是静态链接和动态链接。
- 使用静态库的静态链接中链接器将所有必要的库函数代码和数据纳入a.out文件中。使得文件完整,独立,但通常非常大。
- 使用动态库的动态链接中库函数未包含在a.out文件中,但是对此类函数的调用以指令形式记录在文件中。*优点:可减小每个a.out文件的大小;许多执行程序可在内存中共享相同的库函数;修改库函数不需要重新编辑源文件。
a.out
(1)文件头
(2)代码段
(3)数据段
(4)符号表
long jump直接返回到调用序列中较早的某个函数。
GCC生成的汇编代码由三部分组成:入口代码、函数体代码、退出代码。
链接库中包含预编辑的目标代码,分为两种:
- 用于静态链接的静态链接库
- 用于动态链接的动态链接库
Makefile
make是一个程序,它按顺序读取makefile或Makefile,以自动有选择地执行编译链接。
一个make文件由一系列目标项、依赖项和规则组成。
在makefile中,%是一个与sh中的*类似的通配符变量。
GDB调试工具
GNU(GDB)是一个交互式调试工具,可以调试用c、c++和其他几种语言编写的程序。
c语言程序中的常见错误:运行时错误,例如:非法指令,越权错误,除数为零,无效地址等。Cpu将这些错误识别为异常。
主要的运行时错误类型由无效地址引起。
c语言结构体
结构体是包含变量或数据对象集合的复合数据类型。c语言结构体类型由struct关键字定义。
指针:是指向其他数据对象的变量,用 *attribute定义。
类型转换:是一种使用转换运算符(TYPE)变量将变量从一种数据类型转换为另一种数据类型的方法。
结构体和指针通常用于构建和操作动态数据结构,例如链表,队列和树等。
链表常见操作
- 构建
- 遍历
- 搜索
- 插入
- 删除
- 重新排序
树
由多级链表构成的动态数据结构。
- 二叉树
- 二叉搜索树
- 遍历算法:先序遍历、中序遍历、后序遍历
- 深度优先算法、广度优先算法
- Unix/Linux文件系统树:文件系统树通常是上下颠倒的,根节点在上面。
问题:
1. X-Window具体指什么?
解答:X-Window即X-Window图形用户接口,是一种计算机软件系统和网络协议,提供了一个基础的图形用户界面(GUI)和丰富的输入设备能力联网计算机。其中软件编写使用广义的命令集,它创建了一个硬件抽象层,允许设备独立性和重用方案的任何计算机上实现。
2.虚拟机关机后报错?
尚未获得解决方法。