嵌入式操作系统开发(第十三节)

嵌入式操作系统开发

学习内容:

一:进程控制:

1.进程:

1.进程是可并发执行的程序,是一个在数据集合上的运行过程。
(当一个程序开始执行后,在开始执行到执行结束的这段时间里,它内存中的部分被称为进程)
通俗讲:
程序:在硬盘上的可执行文件
进程:在执行中的程序

进程的分类“
1.守护进程
2.批处理进程
3.交互进程

进程的属性:
进程的ID(PID):是唯一的数值,用来区分进程
父进程的ID:PPLD
启动进程的用户:UID
进程的状态:运行R,休眠S, 僵尸进程Z

进程优先级:
进程占用资源的大小 (内存,cpu)

进程控制模块PCB:数据结构
进程号 ps命令查看Linux系统中的进程号
l:长格式输出
u:按用户名和启动时间的顺序来显示进程
f:用树状格式来显示进程
a:显示所有用户的所有进程
x:显示无控制终端进程 (aux)
%CUP 占用cup大小
%MEM 占用内存大小
STAT:进程状态
START:
TIME:进程消耗时间
COMMAND:命令参数
在这里插入图片描述
kill:kill + 进程号 (-9 强制杀死)
pkill:pkill + 进程名字
xkill:在桌面上杀死图像化界面
renice:改变进程的优先级,通过改变进程ID(PID)来改变谦让度,进而达到改变进程的优先级
renice 谦让读 PID
进程的状态转换
(1)就绪:当进程已分配到除cpu以外的所有必要资源,只要获得处理器就可以立即执行
(2)执行:已经获取处理器,其程序正在处理器上执行
(3)阻塞:正在执行的进程,由于等待某个事件的发生而无法执行,便放弃处理机会而处于阻塞状态
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.并发:

多进程同时运行,多个任务同时执行
并发的本质:时间片轮询

Linux进程调度
1.FCFS也叫FIFO,先来先处理 /缺点:对于短的任务可能变得非常缓慢

2.时间片轮询算法:周期性的切换总体时长必FIFO短

3.STCF:
短任务优先算法
抢占式和非抢占式 非

4.银行家算法:
优先级反转

5.创建一个进程
fork()函数:
它是有两个返回值 0:子进程 / -1: 失败

     #include <sys/types.h>
     #include <unistd.h>
     pid_t fork(void);

getpid():(取得当前进程号)
getppid():获取当前父进程号

     #include <sys/types.h>
     #include <unistd.h>

     pid_t getpid(void);
     pid_t getppid(void);

在这里插入图片描述

在这里插入图片描述

父进程与子进程跑在不同的内存空间中:父进程与子进程有自己独立的内存空间
早期:fork函数运行之后,子进程会复制父进程的堆栈数据空间
优化:读时不管,写时复制

fork函数创建的父子进程关系时竞争关系,不能判断是谁先动

在这里插入图片描述

vfork():创建一个进程
与fork有什么不同:
1.保证子进程先动
2.当子进程调用exit()函数后,父进程往下执行
3.不会继承父进程的页面

eg:
1.创建两条进程,一条输出A,一条输出B交替输出ABABABABAB

3.虚拟内存

Linux虚拟内存管理技术:
物理内存:实际在处理器中的内存模块 (几百M)
将硬盘中的一部分储存单元拿来当内存使用 (4g)受操作系统的寻址范围的影响
0 x 0000000 - 0 x f f f f f f f

操作系统
内核空间:高地址 1g
用户空间:低地址 3g
好处:
1.有效防止内核空间被破坏
2.防止被恶意
3.扩展内存空间

Linux虚拟内存管理技术
虚拟地址的储存方式:物理地址+偏移量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值