嵌入式系统开发小白学习笔记(14)

嵌入式系统开发

  • 上期回顾
  • 嵌入式系统开发工具
    • 进程控制
      • Linux虚拟内存管理技术
      • 9、创建一个进程

上期回顾

嵌入式系统开发小白学习笔记(13)

嵌入式系统开发工具

进程控制

1、定义:
(1)进程是可并发执行的程序,是一个在数据集合上的运行过程。
(2)当一个程序开始执行之后,在开始到执行结束的这段时间里,它内存中的部分被称为进程。

简单来说
程序是在硬盘中可执行的文件
进程是在执行中的程序

2、并发过程
(1)多个进程同时运行,多个任务同时执行。
(2)并发的本质:时间片轮询。
3、虚拟内存
4、物理内存
(1)实际在处理器中的内存模块
(2)将硬盘中的一部分存储单元拿来当内存使用 4g左右 (受操作系统的寻址范围的影响)
0x00000000——0xffffffff
4、操作系统:内核空间 和 用户空间
(1)内核空间存放的是高地址:1g
(2)用户空间存放的是低地址:3g
(3)用处

1、有效防止内核空间被破坏
2、防止被恶意窥探(数据虽然是连续的,但并不是有序的)
3、拓展空间
嵌入式系统开发小白学习笔记(14)_第1张图片

5、进程的分类
(1)守护进程
(2)批处理进程
(3)交互进程
6、进程的属性
(1)进程的ID(PID):是唯一的值,用来区分进程
(2)父进程的ID(PPID)
(3)启动进程的用户ID:UID
7、进程的状态:
(1)运行(R)
(2)休眠(S)
(3)僵尸进程(Z)
8、进程的优先级
进程占用资源的大小(内存,cpu)
9、进程控制模块PCB:数据结构
(1)进程号
ps命令:查看Linux系统上的进程

符号 含义
l 长格式输出
u 按用户名和启动启动时间的顺序来显示进程
f 用树状格式来显示进程
a 显示所有用户的所有进程
x 显示无控制终端
X 死掉的进程
+ 位于后台的进程组
TIME 进程消耗CPU的时间
START 开机时间
T 停止或被追踪
< 高优先级
N 低优先级
R 正在运行后者队列中的进程
s 包含子进程

嵌入式系统开发小白学习笔记(14)_第2张图片

Linux虚拟内存管理技术

1、虚拟地址的组成方式:物理地址 + 偏移量
2、kill
(1)功能:杀死命令
(2)语法:kill + 进程号 -9:强制终止
3、pkill
语法:pkill + 程序名
4、xkill
(1)功能:在桌面上杀死图像化界面
5、renice:
(1)功能:改变进程的优先级,通过进程ID(PID)来改变谦让度,进而达到改变进程的优先级。
(2)谦让度 PID
7、进程的状态转换
(1)就绪:当进程已分配到除cpu以外的所有必要资源,只要获得处理器可以立即执行
(2)执行:已获取处理器,其程序正在处理器上执行
(3)阻塞:正在执行的进程,由于等待某个事件的发生而无法执行时,便放弃处理而处于阻塞状态。
嵌入式系统开发小白学习笔记(14)_第3张图片
嵌入式系统开发小白学习笔记(14)_第4张图片
8、Linux进程调度
(1)FCFS也叫FIFO,先来先处理:对于短的任务可能变得非常缓慢
(2)时间片轮询算法:周期性的切换,总体时长比FIFO短
(3)STCF:短作业优先算法

抢占式:
非抢占式:

(4)银行家算法:
T0时刻通过算法计算,查看当前时刻是否安全,若安全则进行接下来的操作;否则进入死锁状态。

优先级反转

9、创建一个进程

(一)fork()函数:它是有两个返回值的
(1)
0:子进程
-1:失败

父进程和子进程跑在不同的内存空间中:父进程与子进程有自己的独立的内存空间
fork函数运行之后,子进程会复制父进程的堆栈数据空间

(2)
早期:fork函数运行之后,子进程会复制父进程的堆栈数据空间
优化:读时不管,写时复制
(3)fork函数创建的父子进程关系时竞争关系,不能判断先后顺序
嵌入式系统开发小白学习笔记(14)_第5张图片

嵌入式系统开发小白学习笔记(14)_第6张图片

(4)
getpid():获取当前进程号
getppid():获取当前父进程号
(二)vfork()函数
(1)保证子程序先动
(2)当子进程调用exit()函数,父进程往下执行
(3)子进程不会继承父进程的界面
练习:
1、创建两条进程,一条输出A,一条输出B,交替输出ABABABABABAB

嵌入式系统开发小白学习笔记(14)_第7张图片

嵌入式系统开发小白学习笔记(14)_第8张图片
嵌入式系统开发小白学习笔记(14)_第9张图片

你可能感兴趣的:(学习笔记,嵌入式,linux,操作系统)