操作系统-进程管理

一、进程与线程

1.进程映像(进程实体):由程序段、相关数据段和PCB三部分构成。

2.进程:进程是进程实体的运行过程,是系统进行资源分配的一个独立单位。

3.原语:在操作系统中,一般把进程控制用的程序段称为原语,原语的特点是执行期间不允许中断,它是一个不可分割的基本单位。

4.一个进程至少包括一个线程。

5.不同的线程可以执行相同的程序。

6.管道:

(1)从管道读数据是一次性操作,数据一旦被读取,它就从管道中被抛弃;

(2)管道只能采用半双工通信,即某一时刻只能单向传输。

二、处理机调度

1.调度的层次

(1)作业调度(高级调度)

(2)中级调度(内存调度)

(3)低级调度(进程调度)

2.三级调度关系

(1)作业调度为进程活动做准备,进程调度使进程正常活动起来,中级调度将暂时不能运行的进程挂起,中级调度处于作业调度和进程调度之间。

(2)作业调度次数少,中级调度次数略多,进程调度频率最高。

(3)进程调度是最基本的,不可或缺。

3.现代操作系统中,不能进行进程的调度与切换的情况:

(1)在处理中断的过程中;

(2)进程在操作系统内核程序临界区中;

(3)其他需要完全屏蔽中断的原子操作过程中。

4.进程优先级设置(一般情况)

(1)系统进程>用户进程。

(2)交互型进程>非交互型进程。

(3)I/O型进程>计算型进程。

三、进程同步

1.临界区:进程中访问临界资源的那段代码,又称临界段。

2.同步机制应遵循以下准则:

(1)空闲让进。

(2)忙则等待。

(3)有限等待。

(5)让权等待(不一定要实现)。

3.通过硬件支持实现临界段问题的方法称为低级方法,或称元方法。

4.管程:

一个代表共享资源的数据结构,以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序,称为管程。

(1)管程由4部分组成:

①管程的名称;

②局部于管程内部的共享数据结构说明;

③对该数据结构进行操作的一组过程(或函数);

④对局部于管程内部的共享数据设置初始值的语句。

(2)特点:

①管程内的共享数据结构只能被管程内的过程所访问;

②每次仅允许一个进程进入管程,从而实现进程互斥。

(3)条件变量和信号量的不同点

        条件变量是“没有值”的,仅实现了“排队等待”功能;而信号量是“有值”的,信号量的值反映了剩余资源数,而在管程中,剩余资源数用共享数据结构记录。

四、死锁

1.死锁产生原因:系统资源竞争或进程推进顺序非法。

2.死锁产生的必要条件

(1)互斥条件;

(2)不剥夺条件;

(3)请求并保持条件;

(4)循环等待条件;

3.死锁预防

(1)破坏互斥条件(不可行)

(2)破坏不剥夺条件

常用于状态易于保存和恢复的资源,如CPU的寄存器及内存资源。

(3)破坏请求并保持条件

采用预先静态分配方法,但可能会导致“饥饿”。

(4)破坏循环等待条件

采用顺序资源分配法。

解决ESP32烧录MicroPython时esptool.py未识别的错误 当出现esptool.py not recognized错误时,通常是由于环境变量未正确配置或工具未安装。以下是逐步解决方法: 1. 确认esptool.py是否安装 安装命令: Bash pip install esptool # 或使用Python3 pip3 install esptool 如果已安装但版本过旧,可升级: Bash pip install --upgrade esptool 2. 检查环境变量配置 Windows系统: Python脚本默认安装路径为C:\Users\<用户名>\AppData\Local\Programs\Python\PythonXX\Scripts(XX为版本号)。 将此路径添加到系统环境变量PATH中4。 修改后需重启命令行工具或IDE(如VS Code)。 Linux/macOS系统: Bash export PATH="$PATH:$HOME/.local/bin" 可将此命令添加到~/.bashrc或~/.zshrc中永久生效。 3. 通过Python模块直接运行 若环境变量未生效,可显式调用Python模块: Bash python -m esptool --help # 或指定Python3 python3 -m esptool --help 4. 检查开发环境配置 如果使用ESP-IDF框架,确保已执行环境初始化脚本: Bash # Linux/macOS . $IDF_PATH/export.sh # Windows %IDF_PATH%\export.bat 此步骤可能影响工具链路径的识别。 5. 验证命令格式 确保烧录命令正确,典型MicroPython烧录命令示例: Bash esptool.py --port COM3 erase_flash esptool.py --port COM3 --baud 460800 write_flash -z 0x1000 firmware.bin 替换COM3为实际串口号,firmware.bin为固件路径。 6. 重装或修复工具 若问题持续,尝试: 卸载后重装: Bash pip uninstall esptool pip install esptool 检查系统架构兼容性(如32/64位系统或文件损坏问题,参考文件格式错误解决方法35)。第二步的具体步骤
03-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值