基于时间片轮转的进程切换
cpu维护两个队列防止优先级较高的进程一直抢占cpu,两个队列分别为就绪队列和等待队列,一个就绪队列的进程根据优先级经过一段时间等待,会上cpu运行,经过一个时间片(段)运行后,会被放到等待队列。当就绪队列的所有进程经过以上过程被放入等待队列时,就绪队列就空了,然后交换就绪队列和等待队列。之前的等待队列就是一个新的就绪队列。
每当一个进程从cpu退出都会由寄存器保存它相关的数据(保存上下文),用于在它下一次上cpu运行,简单来说就是让cpu知道该进程上一次运行到哪一步了(恢复上下文),然后现在接着继续运行。这些上下文都保存在进程的PCB中。
环境变量
环境变量是在操作系统中定义的一些变量,它们保存了系统的一些基本信息。 这些信息可以是路径、命令别名、用户配置等。 环境变量被用于告诉系统在运行程序或命令时需要查找的路径、库和其他系统资源的位置。 在Linux系统中,环境变量都是以字符串的形式存储在操作系统内存中的。(环境变量是系统提供的一组name = value形式的变量,不同的环境变量有不同的用户,通常具有全局性)
C/C++一般有两张核心向量表:1.命令行参数表 2.环境变量表
通过代码获取环境变量
命令行参数作用:为指令、工具、软件等提供命令行选项的支持。比如 ls - a \ ls - la等
PATH:linux系统的指令搜索路径
$ PATH = $PATH: + 想要添加的环境变量
指令env可以查看所有环境变量(包括PATH、SHELL、USER、HOME 等)
指令set查看所有环境变量和本地变量
函数getenv() -获取指定的一个环境变量。 getenv("USER")查看当前的用户
我们所运行的进程都是子进程,bash本身在启动的时候,会从操作系统的配置文件中读取环境变量,子进程会继承父进程交给我的环境变量。子进程再创建进程1,进程1同样会继承环境变量,所以环境变量具有全局性。
export将本地变量导入到环境变量(新增环境变量)
unset取消环境变量MY_VALUE
本地变量
如下,本地变量在命令行直接定义,不会存在与环境变量中,即env命令后不可见。本地变量只会在本BASH内部有效,不会被继承
内建命令(cd-)
blinux基本调试方法
gdb + 可执行文件名:进入调试状态
断点:b+行号
查看断点(编号):info b
删除断点:d+断点编号
r:运行
n:逐过程执行,相当于vs中F10
s:逐语句,相当于vs中F11
p+变量名:监视
desable + 断点编号:屏蔽断点
enable + 断点编号:取消屏蔽