Skip to content
1、程序与进程
2、多进程
- 单道程序设计模式:
- 同一时间只能有一个进程占用CPU资源
- 如:DOS操作系统
- 多道程序设计模式:
- CPU划分多个时间轮片,通过时钟中断的方式切换进程,硬件手段
- 如:100ns为一个时间轮片,人的眼睛识别在毫秒级别;
- 从人的感知上,CPU是同时执行了多个程序;
3、CPU工作原理
- 硬盘—> 内存—> Cache —> 预取器 —> 译码器 —> 寄存器 —> 算术逻辑单元(ALU) —> 寄存器 —> 内存 —> 硬盘
4、MMU工作原理(内存管理单元)
- 虚拟地址与物理内存的映射
- 设置修改内存访问[……]
继续阅读
1、Linux虚拟地址空间
- Linux可执行文件格式为ELF,通过file xxxx可以查看文件类型
- 虚拟地址空间在32位系统中为4G,每个应用程序都有独立的4G
- 地址位从高到低分别为:
- 3G ~ 4G:Linux Kernel,内存管理、进程管理、设备驱动、VFS虚拟文件系统
- 0G ~ 3G
- 环境变量
- 命令行参数
- 栈空间
- 共享库
- 堆空间
- ELF
- 未初始化的全局变量
- 已初始化的全局变量
- 代码段、二进制机器指令
- 受保护的地址(0 ~ 4K)
2、Linux文件基本组成[……]
继续阅读
1、为什么要使用makefile
- 在编译项目时,gcc相关参数非常多,如gcc *.c -I include -Wall -g -03 -D DEBUG -…..
- 这是一个代码管理工具,外部编译时只需要执行makefile即可
- 屏蔽编译的复杂过程,源代码以最简单的方式生成可执行程序
2、makefile的规则
- 三要素:目标、依赖、命令
- 第一条规则是用来生成终极目标的规则
- 如果规则中的依赖不存在,向下寻找其他的规则;
- 更新机制:比较的是目标文件和依赖文件的时间;
- 两个函数:
- 查找指定目录下,指定类型的文件:
src=$(wildcard ./*.c)
- 匹配替换函数
obj=[......]
继续阅读
1、命名规则
- 静态库:lib+名称.a —> libSian.a
- 动态库:lib+名称.so —> libSian.so
2、静态库制作
- 准备目录:include、lib、src
- 头文件存放在include中,源文件存放在src中,库文件存放lib中
- 生成.o文件:在src目录中gcc -c *.c -I ../include // 大写i不是小写l
- 生成.a文件:ar rcs lib/libCalc.a src/*.o // 将src下的所有.o文件在lib目录下生成.a文件
- 利用静态库编译源文件:
- gcc main.c lib/libCalc.a -o main.out -[……]
继续阅读
1、前期准备
- gcc编译的时候要带参数-g,编译出来的可执行文件才带断点信息,否则无法断点;
- gcc -g xxx.c -o xxx.out // xxx.c为源文件,.out为输出可执行文件名字
2、几条命令
- list
- 简写为l
- 查看源代码,默认为main函数文件
- l xxx.c:20,则是查看xxx.c的第20行代码
- l xxx.c:main,查看xxx.c的main函数
- 再次执行则是显示后续的内容
- break n
- n为代码行号,如break 37,可简写为b 37
- 也可以跟条件,如:break 37 if xxx=xxx;
- 行号也可以用函数名来代替,如bre[……]
继续阅读