当前位置: 首页 > news >正文

嵌入式第二十八天(程序与进程)

一.

<进程是操作系统资源分配的最小单位>

二.CPU调度


CPU调度的主要目标

- 提高CPU利用率:让CPU尽可能处于忙碌状态。
- 提升系统吞吐量:单位时间内完成的进程数量更多。
- 缩短周转时间:进程从提交到完成的总时间更短。
- 减少等待时间:进程在就绪队列中等待的时间更短。
- 保证响应时间:交互式进程(如键盘输入)得到快速响应。

常见调度算法

- 先来先服务(FCFS):按进程到达顺序分配CPU,简单但可能导致“短进程等待长进程”。
- 短作业优先(SJF):优先选择估计运行时间最短的进程,能缩短平均周转时间,但可能导致长进程饥饿。
- 时间片轮转(RR):为每个进程分配固定时间片,时间片用完则切换到下一个进程,适合交互式系统。
- 优先级调度:为进程分配优先级,高优先级进程优先获得CPU,可分为抢占式(高优先级进程可打断低优先级进程)和非抢占式。

三.操作系统基本进程

四.Linux操作系统的进程状态

五.查看进程的相关命令:

补充:

前台进程依赖于终端,而后台进程不依赖于终端.

六.进程相关编程

1.

fork()  是 Unix/Linux 系统中用于创建新进程的系统调用,它会复制当前进程(称为“父进程”),生成一个新进程(称为“子进程”)。

主要特点

- 调用一次,返回两次:父进程中返回子进程的 PID(进程 ID,非负整数),子进程中返回 0。若创建失败,父进程返回 -1。
- 子进程复制父进程的地址空间(包括代码、数据、栈等),但后续修改互不影响.
- 子进程与父进程并发执行,调度顺序由操作系统决定,无法预知。

简单示例:

#include <stdio.h>
#include <unistd.h>

int main() {
pid_t pid = fork();
if (pid == 0) {
// 子进程执行
printf("这是子进程,PID:%d\n", getpid());
} else if (pid > 0) {
// 父进程执行
printf("这是父进程,子进程PID:%d\n", pid);
} else {
// 出错处理
perror("fork failed");
}
return 0;
}

图示:

2.进程退出

3.回收资源空间:

4.简单示例

http://www.xdnf.cn/news/1299565.html

相关文章:

  • 百度智能云x中科大脑:「城市智能体」如何让城市更会思考
  • k8s+isulad 重装
  • 数据结构---链式结构二叉树
  • 4. 索引数据的增删改查
  • Java 大视界 -- Java 大数据机器学习模型在金融欺诈检测与防范策略制定中的应用(397)
  • 读取Kaggle下载的数据集(数据的读取 f’{path}\\CMaps\\train_FD001.txt’)
  • Linux中的日志管理
  • C++中的链式操作原理与应用(三):专注于异步操作延的C++开源库 continuable
  • ESP32入门开发·通用硬件定时器 (GPTimer)
  • Spring Boot + Redis Sentinel (一主两从)测试案例
  • 实体店获客新引擎:数据大集网如何破解传统门店引流难题
  • 深入理解 RAG:检索增强生成技术详解
  • 力扣 外传之数据结构java篇
  • latex 中破折号的输入
  • 【51单片机学习】定时器、串口、LED点阵屏、DS1302实时时钟、蜂鸣器
  • 华为实验WLAN 基础配置随练
  • 解剖HashMap的put流程 <一> (JDK 1.8)
  • 设计模式(2)
  • app-4 日志上传
  • Linux编程--进程
  • web请求和响应
  • SpringMVC(详细版从入门到精通)未完
  • 【科研绘图系列】R语言绘制蝶形条形图蝶形柱状堆积图
  • 【22-决策树】
  • 一款开源的远程桌面软件,旨在为用户提供流畅的游戏体验,支持 2K 分辨率、60 FPS,延迟仅为 40ms。
  • 多种适用于 MCU 固件的 OTA 升级方案
  • PHP现代化全栈开发:实时应用与WebSockets实践
  • 智能门锁:安全与便捷的现代家居入口
  • CMake笔记:Alias Target在哪些地方可以使用
  • python的艺术品收藏管理系统