IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 操作系统第三章-进程Process -> 正文阅读

[嵌入式]操作系统第三章-进程Process

进程是现代分时操作系统的工作单元,是操作系统进行资源分配和调度的基本单位

通过CPU的多路复用(进程之间切换CPU),所有进程可以并发执行

进程不只是程序代码,进程还包括当前活动,如程序计数器的值和寄存器的内容等,还包括堆.栈,数据等

1.进程状态

进程执行时会改变状态
有下面几个状态:
新的(new):进程正在被创建
运行(running):指令正在执行
等待(waiting):又称阻塞状态,进程等待发生某个事件
就绪(ready):进程等待分配处理器
终止(terminated):进程已经结束

进程状态图

2.进程控制块(Process Control Block,PCB)

进程控制块的包含信息在这里插入图片描述
在这里插入图片描述
1.CPU通过读取PCB内的信息来执行对应的进程
2.从保存状态PCB0到PCB1重新加载状态,这个时间段CPU是空闲时间,不执行P0和P1
3.在Lunix内核(C/C++)中,PCB采用task_stuct的双向链表表示

3.进程调度

1.调度队列

  • 进程在进入系统时会被加入到作业队列(job queue) 中,这个队列包括系统内所有进程
  • **就绪队列(ready queue)**保存驻留在内存中,就绪的,等待运行的进程
  • **设备队列(device queue)**等待特定IO设备的进程列表
    在这里插入图片描述

2.调度程序

操作系统通过调度程序来选择进程,而后执行进程

1.长期调度程序

如批处理系统,提交的进程数量多余可以立即执行的数量,就将进程保存到大容量存储设备(如磁盘)的缓冲池,长期调度就是将缓冲池内的进程调到内存里面去

2.短期调度程序

从准备执行的进程中选择进程,并分配CPU执行

3.中期调度程序

进程a正在执行,突然进程b需要立即执行,进程a就会中断,调度程序会将中断的进程调到缓冲池中,等到进程b执行完,又会从缓冲池中把进程a调到内存中继续执行

4.进程运行

进程树:进程在执行的过程中可能创建多个新的进程,创建进程称为父进程,而新的进程称为子进程.每个新进程可以再创建其他进程,形成进程树
PID:操作系统通过唯一的进程标识符(process identifier,pid)进行标识

1.进程创建

当进程创建新进程时,有两种执行可能:
1.父进程与子进程并发执行
2.父进程等待,直到某个或全部子进程执行完成
子进程的两种类型:
1.子进程是父进程的复制品
2.子进程执行的是一个新程序

linux操作系统使用fork()创建新进程
linux操作系统使用fork()创建新进程

2.进程终止

当进程完成执行最后语句并且通过系统调用exit()请求操作系统删除自身时,进程终止,操作系统会释放其资源

父进程终止子进程的类型:
1.子进程使用了超过它所分配的资源(如超过分配的内存的大小,无打印机等)
2.分配给子进程的任务,不在需要
3.父进程正在退出,而操作系统不允许无父进程的子进程继续执行(父进程终止,下面的所有子进程必须终止,级联终止)

5.客户机/服务器通信

1.socket(套接字)

通信的端点.通过网络通信的每对进程需要使用一对套接字
每个socket由ip和端口号组成
ip对应进程所在主机的地址
端口号对应进程

2.远程过程调用(RPC)

RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复 信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。(查看原文)

3.管道(pipe)

普通管道:单向的,只允许单向通信;若要实现双向通信,就需要两个管道;当进程通信开始管道建立,如果进程通信结束,管道不存在
命名管道:可以双向;多个进程可以用一个命名管道进行通信;通信完成后,命名管道继续存在

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-12 13:19:13  更:2021-09-12 13:19:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 18:31:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码