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

学习嵌入式的第二十八天-数据结构-(2025.7.15)进程和线程

主要学习了数据结构种进程和线程的相关内容知识。

一、进程

进程:程序运行过程,会去分配内存资源,cpu的调度,程序走起来就变成进程(所以需要CPU执行)。

pcb块 process control block:在操作系统里面,本质是内核链表

PID进程标识符,相当于进程的ID名字

进程运行起来之前->程序,进程是动态过程

程序:静态
进程:动态

程序执行的过程,包括进程的创建、调度、消亡
(1)程序是永存,进程是暂时的
(2)进程有程序状态的变化,程序没有
(3)进程可以并发,程序无并发
(并发:同一时刻,多个同时运行)
(4)进程与进程会存在竞争计算机的资源 race condition
(5)程序可以运行多次,变成多个进程

二、进程的内存分布

虚拟地址

进程分类:
1、交互式进程
2、批处理进程shell脚本
3、守护进程

进程的作用:并发(同一时刻,多个同时运行)

./A.OUT-->就绪态--调度-->运行态-条件不满足->阻塞态
^                                       条件不满足
|满足                                       |
---    ---    ---    ---        ---        ---     

stopped暂停状态理解为暂停

进程的调度
cpu只有一个,任务有多个。
宏观上并行

微观上,

实时系统,分时系统
Linux算分时系统\windos
实时系统stm32 rt_threaducos ucos

调度的算法    
先来先服务
短任务优先
优先级,时间片

三、进程相关命令


1.ps aux    查询进程相关命令

父子进程的关系:
子进程是父进程的副本。子进程获得父进程数据段,堆,栈,正文段共享。
在fork之后,一般情况那个会先运行,是不确定的。如果非要确定那个要先运行,需要IPC机制

区别:
1)fork的返回值>0==0
82)pid不同

进程的终止:8种情况
主动退出

  • (1) main 中return
  • (2)exit(),c库函数,会执行io库的清理工作,关闭所有的流,以及所有打开的文件。已经清理函数(atexit)
  • (3)_exit,_Exit 会关闭所有的已经打开的文件,不执行清理函数。
  • (4)主线程退出
  • (5)主线程调用pthread_exit

异常终止

  • (6) abort()
  • (7) signal kill pid
  • (8)最后一个线程被pthread_cancle

僵尸进程:进程执行结束但是空间未回收
子先消亡

回调函数,回收,进程结束前一刻执行

3.atexit
int atexit(void (*function)(void))
功能:
注册进程退出前执行的函数
参数:
function:函数指针
指向void返回值void参数的函数指针
返回值:
成功返回0
失败返回非0
当程序调用exit或者由main函数执行return时,所有用atexit
注册的退出函数,将会由注册时顺序倒序被调用

四、pthread 线程

优点:比多进程节省资源,可以共享变量。

概念:线程是轻量级进程,一般是一个进程中的多个任务
进程是系统中最小的资源分配单位(管理)
线程是系统中最小的执行单位。(执行)

区别
1.线程属于某个进程
2.当进程运行起来后,默认有一个线程。主线程
3.线程与线程,平级。主次之分
4.创建的开销不同。进程3G。线程8M栈区独立
5.线程空间是共享(栈区独立)。进程空间独立。
6.稳定性。线程弱,进程强。



文章转载自:
http://alcazar.isnyv.cn
http://chokecherry.isnyv.cn
http://braxy.isnyv.cn
http://avail.isnyv.cn
http://catladder.isnyv.cn
http://byrnie.isnyv.cn
http://ambo.isnyv.cn
http://asl.isnyv.cn
http://burman.isnyv.cn
http://aphanitic.isnyv.cn
http://bernadine.isnyv.cn
http://arenite.isnyv.cn
http://beccaccia.isnyv.cn
http://bracteole.isnyv.cn
http://cameral.isnyv.cn
http://carbonatite.isnyv.cn
http://celesta.isnyv.cn
http://amyloidosis.isnyv.cn
http://cancerology.isnyv.cn
http://catalase.isnyv.cn
http://armet.isnyv.cn
http://amtrak.isnyv.cn
http://astrometer.isnyv.cn
http://cameroonian.isnyv.cn
http://boatswain.isnyv.cn
http://bactericidal.isnyv.cn
http://anathematize.isnyv.cn
http://asker.isnyv.cn
http://aspergillum.isnyv.cn
http://borah.isnyv.cn
http://www.dtcms.com/a/281541.html

相关文章:

  • For and While Loop
  • javaScript 基础知识(解决80%js面试问题)
  • 代码随想录算法训练营十六天|二叉树part06
  • 配置nodejs,若依
  • 【08】MFC入门到精通——MFC模态对话框 和 非模态对话框 解析 及 实例演示
  • Git未检测到文件更改
  • 密码协议的基本概念
  • bytetrack漏检补齐
  • Nginx配置反向代理
  • 【世纪龙科技】智能网联汽车环境感知系统教学软件
  • C# StringBuilder源码分析
  • Java大厂面试实录:从Spring Boot到AI微服务架构的层层递进
  • 华为OD 特异双端队列
  • 魔搭官方教程【快速开始】-swift 微调报错:`if v not in ALL_PARALLEL_STYLES`
  • [数据结构]#3 循环链表/双向链表
  • Spring AI Alibaba 1.0 vs Spring AI 深度对比
  • 信息学奥赛一本通 1552:【例 1】点的距离
  • 记一次POST请求中URL中文参数乱码问题的解决方案
  • React响应式组件范式:从类组件到Hooks
  • Ubuntu 安装
  • 回收站里的文件被删除了怎么还原和恢复
  • 京存大容量存储助力“国漫之光”·玄机动画
  • 注解和反射
  • 3D视频技术全解析:从原理架构到产业应用的深度探索
  • Python文本统计分析工具
  • 集训Demo2
  • 巧用Bitset!优化dp
  • “C21988-谷物烘干机(2D+3D+说明书+运动仿真)8张cad+设计说明书
  • Eplan API SQL
  • 从灾前感知到灾后恢复:人工智能在城市气候风险管理中的全链路赋能