嵌入式day25

进程线程

多任务编程

1、进程

2、线程

进程(process)

进行中的程序 --- 正在运行中的程序

进程 --- 程序的一次执行的过程

进程 是程序的一个实例

进程是跑起来的程序

一个程序可以对应多个进程

程序 静态 硬盘

进程 动态 内存

为什么需要进程?

-为了描述和管理程序运行的动态过程

操作系统为了管理程序的动态运行过程,引入了进程

PCB(Process control block)进程控制块

进程的组成

程序的构成:.c // 程序源代码

a.out // 可执行程序

程序 = 代码 + 数据

标准 c程序 在内存中布局 //C标准规定的

linux下程序在内存中的典型布局:

堆(动态区)(a.out执行后才产生)


bss(未初始化的全局变量)

data(已初始化的全局变量)

text

进程 = PCB + 进程实体(text | data | bss | 堆栈)

PID // Process ID // 进程的id号

S // stauts // 进程状态

进程的生命周期

man ps 查询当前进行状态

ps aux | grep 程序名 //主要查看某个儿进程的pid号及信息

eg:ps aux | grep a.out //查看a.out

ps -elf | grep 程序名 //主要查看 父子进程 包含PID PPID // parent pid

eg:ps -elf | grep a.out //查看a.out

pstree -sp pid号 //用途 查看父子进程间的关系(以树状图的方式展现 包含pid号)

kill //杀死 --- 给进程发信号

killall //可以指定 进程 名称 这种方式发送信号

eg:kill -9 a.out

进程编程

进程 ---为了实现多任务

//1.创建进程

//2.进程的执行

//3.进程结束

//4.进程结束时资源回收 --- 僵尸态

进程的创建

fork

创建一个进程(child process 子进程)

通过复制 调用进程 复制的子进程

返回值:

成功 在父进程中 返回了 子进程的pid号

在子进程中 返回了 0

失败 -1 并且没有 子进程被创建

注意:

pid号实际上是一个非负整数,最小的pid号为1

32位的平台 每个进程拥有独立的4G 内存空间(虚拟的)

每个进程运行在各自的独立空间

父子进程间,数据相互独立,不受影响

父子进程运行的顺序不确定,取决于操作系统 ---先调度谁

n个fork同时前后运行:

一共2的n次方个进程,新生成2的n次方-1个进程

fork&&fork||fork:


嵌入式学习第二十五天,今天学习了新的内容,进程 的相关知识。进程就是正在运行中的程序,进程是静态的。也学习了一些关于查询linux系统进程的一些命令,还有创建进程的函数fork。后面的进程学习将会持续一周,继续加油!

相关推荐
L1624762 分钟前
linux中mdadm命令生产环境全流程实战总结
linux·运维·数据库
电商API&Tina4 分钟前
item_video-获得淘宝商品视频 API||商品API
java·大数据·服务器·数据库·人工智能·python·mysql
志栋智能6 分钟前
释放人力,聚焦创新:超自动化巡检的战略意义
大数据·运维·网络·人工智能·安全·自动化
小比特_蓝光7 分钟前
Linux权限
linux·运维·服务器
wanhengidc9 分钟前
选择站群服务器的好处
运维·服务器·网络·安全·智能手机
AC赳赳老秦10 分钟前
OpenClaw核心命令详解(常用指令+实战示例,高效开启自动化工作)
大数据·运维·人工智能·自动化·ai-native·deepseek·openclaw
RoboWizard12 分钟前
解锁高效办公新体验 金士顿高速闪存盘
运维·服务器·网络·缓存·智能手机
Trouvaille ~15 分钟前
【项目篇】从零手写高并发服务器(五):Channel事件管理与Poller模块
运维·服务器·c++·reactor·高并发·多路转接·epoll
赋创小助手15 分钟前
NVIDIA RTX PRO 4500 Blackwell Server Edition 深度解析:AI服务器新一代“高密度算力卡”?
服务器·人工智能·科技·深度学习·计算机视觉·语言模型·自然语言处理
user_admin_god16 分钟前
服务器安装向量数据库-Docker版本
服务器·数据库·docker