Linux操作系统基本介绍

1、程序与进程

  • 程序相当于剧本,而进程则相当于根据剧本上演的戏;

2、多进程

  • 单道程序设计模式:
    • 同一时间只能有一个进程占用CPU资源
    • 如:DOS操作系统
  • 多道程序设计模式:
    • CPU划分多个时间轮片,通过时钟中断的方式切换进程,硬件手段
    • 如:100ns为一个时间轮片,人的眼睛识别在毫秒级别;
    • 从人的感知上,CPU是同时执行了多个程序;

3、CPU工作原理

  • 硬盘—> 内存—> Cache —> 预取器 —> 译码器 —> 寄存器 —> 算术逻辑单元(ALU) —> 寄存器 —> 内存 —> 硬盘

4、MMU工作原理(内存管理单元)

  • 虚拟地址与物理内存的映射
  • 设置修改内存访问[……]

    继续阅读

Linux文件的基本操作相关函数

1、Linux虚拟地址空间

  • Linux可执行文件格式为ELF,通过file xxxx可以查看文件类型
  • 虚拟地址空间在32位系统中为4G,每个应用程序都有独立的4G
  • 地址位从高到低分别为:
    • 3G ~ 4G:Linux Kernel,内存管理、进程管理、设备驱动、VFS虚拟文件系统
    • 0G ~ 3G
    • 环境变量
    • 命令行参数
    • 栈空间
    • 共享库
    • 堆空间
    • ELF
    • 未初始化的全局变量
      • 已初始化的全局变量
      • 代码段、二进制机器指令
      • 受保护的地址(0 ~ 4K)

2、Linux文件基本组成[……]

继续阅读

Makefile的基本使用

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 -[……]

      继续阅读

gdb的基本使用

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[……]

      继续阅读