linux进程切换、环境变量、本地变量、内建命令、调试

本文详细解释了基于时间片轮转的进程调度机制,涉及就绪队列、等待队列和上下文切换,同时介绍了环境变量在操作系统中的作用,如PATH、环境变量表以及如何通过C/C++获取和管理环境变量。此外,还讨论了Linux中bash的环境变量继承和基本调试方法如gdb的使用。
摘要由CSDN通过智能技术生成

基于时间片轮转的进程切换

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 + 断点编号:取消屏蔽

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值