嵌入式学习笔记总结Day24

今天进入了下一个阶段的学习——进程与线程的学习
今天主要了解了进程的相关知识以及linux系统中对进程进行控制的一些函数接口

一、概念

程序:存放在外存中的一段数据组成的文件
进程:是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡

二、进程的相关命令

1、top 动态查看当前系统中的所有进程信息(根据cpu占用率排序)
其中有以下几种进程信息需要注意:

pid:唯一识别一个进程的id号(都大于0)
优先级:linux系统中数据高,优先级高,优先级主要是(-20到19)。
进程的状态有以下几种:R 运行态、就绪态S 睡眠态、可唤醒等待态D 不可唤醒等待态T 暂停态Z 僵尸态X 结束态
2.nice 以指定优先级运行某个进程:eg:nice -n 优先级 要执行的某个进程renice 重新设定一个正在运行的程序
3.kill
杀死指定的进程killall 杀死进程名所对应的所有进程任务4.ps -f 查看当前时刻所有进程的信息5.pstree 查看进程树关系6.ps -aux 查看当前时刻的进程信息7. ./a.out & 表示将a.out任务放在后台执行8. jobs 查看一个终端下后台执行的所有任务9. fg 将后台任务放在前台执行

三、进程的创建

3.1概念
一个进程在运行时,操作系统会为该进程分配0-4g的虚拟内存空间,这个空间主要包括文本段,数据段,系统数据段

文本段:也称为文本区,存放代码和指令数据段:也称为数据区,可以细分为:1.字符串常量区2.未初始化全局变量/静态变量3.已初始化全局变量/静态变量 系统数据段:包含堆区和栈区

四、进程中的虚拟地址和实际物理地址的对应关系

1. 0 - 4G虚拟内存空间只有一个
2. 实际物理地址中每个进程空间独立
3. 通过MMU内存映射单元,单一个进程执行时,将物理地址中的数据加载到虚拟地址中运行

五、进程的调度

5.1进程的调度:
常见的调度算法:
1.先来先执行,后来后执行
2.高优先级调度算法
3.时间片轮转调度算法
4.多级队列反馈调度算法
5.负载均衡调度算法
常用的就是时间片轮转调度算法。进程在运行时,宏观并行,微观串行

六、进程相关的函数接口

1.创建一个进程:fork
原型:pid_t fork(void);
功能:创建一个子进程,新创建的进程称为原来进程的子进程,原来的进程是父进程。
返回值:成功子进程返回0,父进程返回子进程的pid,失败返回-1
注意:父进程调用fork创建子进程,子进程拷贝父进程文本段,数据段,系统数据段。并且子进程从父进程创建子进程那一句代码之后开始运行。

   getpidpid_t getpid(void);功能:获得调用进程的PID号getppidpid_t getppid(void);功能:获得调用进程的PPID

使用:使用fork()创建一个父进程的两个子进程:

#include "head.h"int main(void)
{pid_t pid1;pid_t pid2;pid1 = fork();if (-1 == pid1){perror("fail to fork");return -1;}if (0 == pid1){printf("子进程1 PID:%d PPID:%d\n", getpid(), getppid());}else if (pid1 > 0){pid2 = fork();if (-1 == pid2){perror("fail to fork");return -1;}if (0 == pid2){printf("子进程2 PID:%d PPID:%d\n", getpid(), getppid());}else if (pid2 > 0){printf("父进程 PID:%d child1PID:%d child2PID:%d\n", getpid(), pid1, pid2);}}while (1){}return 0;
}

2.exit()
让进程结束,会刷新缓存区
_exit()让进程结束,不会刷新缓存区

七、进程的消亡

僵尸进程:进程代码执行结束,但其空间没有回收
避免僵尸进程:让父进程先结束,让父进程回收子进程空间
wait()
功能:回收子进程空间
wait具有阻塞和同步功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/702538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【人工智能高频面试题--基本篇】

🚀 作者 :“码上有前” 🚀 文章简介 :人工智能高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 人工智能高频面试题--基本篇 1.深度学习和过往的神经网络训练方法有什么区别?列举…

Linux互斥体的驱动程序测试

一. 简介 上一篇文章学习如何在驱动代码中使用互斥锁。文章地址如下: Linux内核中处理并发与竞争的互斥体的驱动实现-CSDN博客 本文对所实现的驱动进行测试。确定互斥锁是否实现对 Led设备的互斥访问,即一次只能一个应用程序访问Led设备。 二. Linux互斥体的驱动程序测试…

LED流水灯实验

#include "reg52.h" #include <intrins.h> //包含函数_crol_,_cror_ typedef unsigned int u16; //对系统默认参数重新定义 typedef unsigned char u8; #define LED_PORT P2 //使用宏定义P2端口 void delay_10…

Panalog大数据日志审计系统libres_syn_delete.php命令执行漏洞

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 1、产品简介 Panalog大数据日志审计系统定位于将大数据产品应用于高校…

Element UI 组件的安装及使用

Element UI是基于Vue.js 的一套企业级的前端UI 组件库&#xff0c;它包含了丰富的UI组件供开发者使用&#xff0c;极大的提高生产效率。这篇文章将帮你快速了解Element UI的安装和使用。 一、安装 Element UI 首先&#xff0c;你需要在你的环境中安装Node.js&#xff0c;因为…

【.xml文件匹配不到】⭐️解决使用mybatis-plus找不到对应的xml文件导致的持久层方法报错

前言 小伙伴们大家好&#xff0c;很快嗷&#xff0c;到了年后的第一周&#xff0c;最近在自己电脑上敲项目时遇到一个平时可能不怎么遇到的问题&#xff0c;就是mybatis持久层框架使用时找不到对应的xml配置文件&#xff0c;也就导致自己写的持久层方法报错 接口报错内容&…

win11修改网络算法为BBR2_提升网络环境质量

Win11 BBR2 是Google开发的一种高效的网络拥塞控制算法&#xff0c;玩 Linux 的朋友应该对它还有锐速不陌生。相比Windows默认使用的 CUBIC 算法&#xff0c;BBR2 在网络吞吐量、延迟、全局性能等方面都有一定优势。 如果你日常网络经常丢包或者高延迟可以尝试切换为BBR2算法。…

实施工程师前后端项目部署流程一次完成

目录 一、jdk安装具体步骤 二、tomcat安装具体步骤 三、MySql具体步骤 修改密码 登录 四、nginx安装 4.1、Nginx 4.2、操作步骤 安装ssl证书&#xff08;https&#xff09; 开80端口 测试 设置自启动 五、后端部署tomcat负载均衡 5.1、为什么要使用 5.2、搭建ngin…

抖音视频提取软件怎么用|抖音数据抓取工具

针对用户获取抖音视频的需求&#xff0c;我们开发了一款功能强大的抖音视频提取软件&#xff0c;旨在帮助用户轻松获取他们感兴趣的视频内容。无需逐个复制链接&#xff0c;无需繁琐的下载步骤&#xff0c;我们的软件让抖音视频获取变得简单快捷。 使用我们的软件非常简单&…

Open3D 基于最小生成树的法线定向 (27)

Open3D 基于最小生成树的法线定向 (27) 一、算法介绍二、算法实现一、算法介绍 法线计算的方向通常都存在方向问题,用Open3D估计的点云法线,是在每个点的局部进行拟合,估计的法线方向并不一致,Open3D提供了使用最小生成树调整法线到统一方向的方法,下面是具体的实现代码…

停车场管理(C语言)

【题目描述】停车场管理。设有一个可以停放n辆汽车的狭长停车场&#xff0c;它只有一个大门可以供车辆进出。车辆按到达停车场时间的先后次序依次从停车场最里面向大门口处停放 (即最先到达的第一辆车停放在停车场的最里面) 。如果停车场已放满n辆车&#xff0c;则以后到达的车…

从Unity到Three.js(outline 模型描边功能)

指定模型高亮功能&#xff0c;附带设置背景颜色&#xff0c;获取随机数方法。 百度查看说是gltf格式的模型可以携带PBR材质信息&#xff0c;如果可以这样&#xff0c;那就完全可以在blender中配置好材质导出了&#xff0c;也就不需要像在unity中调整参数了。 import * as THRE…

从零实现一套低代码(保姆级教程)【后端服务】 --- 【22】实现数据库管理的前端页面

摘要 在上一篇中&#xff0c;我们实现了三个接口&#xff1a; 新增实体的接口删除实体的接口获取实体列表的接口 其实复杂的地方在于&#xff0c;我们创建一个实体&#xff0c;是在数据库中创建了一张表。而这张表中的数据&#xff0c;是要根据低代码平台中的操作进行更改。…

Qt中使用openGL

1. Qt与OpenGL的整合 Qt提供了QOpenGLWidget类&#xff0c;这是一个集成了OpenGL渲染能力的QWidget。通过使用QOpenGLWidget&#xff0c;开发者可以在Qt应用程序中嵌入OpenGL渲染的图形。QOpenGLWidget提供了一个框架&#xff0c;让OpenGL的渲染能够很好地集成在Qt的事件驱动模…

基于pytorch使用LSTM实现文本匹配任务

本文学习纪录 PyTorch深度学习项目实战100例 使用LSTM来实现文本匹配任务 使用LSTM&#xff08;Long Short-Term Memory&#xff09;网络来实现文本匹配任务是自然语言处理&#xff08;NLP&#xff09;中的一个常见应用。文本匹配任务的目标是确定两个文本段落是否在某种程度…

Vue + Echarts页面内存占用高问题解决

Vue Echarts页面内存占用高问题解决 1.问题描述 目前使用的是Vue2 Echarts4.x的组合&#xff0c;页面如下所示。 就是一个类似于神策的数据看板页面&#xff0c;左侧是一个导航栏&#xff0c;右侧看板页面中包含很多个报表图片&#xff0c;其中报表页面中对Echarts图表进…

挑战30天学完Python:Day21 类和对象

&#x1f389; 本系列为Python基础学习&#xff0c;原稿来源于 30-Days-Of-Python 英文项目&#xff0c;大奇主要是对其本地化翻译、逐条验证和补充&#xff0c;想通过30天完成正儿八经的系统化实践。此系列适合零基础同学&#xff0c;或仅了解Python一点知识&#xff0c;但又没…

[python][whl]pymc所有版本下载地址汇总

pymc-2.3.7-cp27-cp27m-win_amd64.whl下载地址&#xff1a;https://download.csdn.net/download/FL1623863129/88631556 pymc-2.3.7-cp35-cp35m-win_amd64.whl下载地址&#xff1a;https://download.csdn.net/download/FL1623863129/88631555 pymc-2.3.8-cp36-cp36m-win_amd64.…

Python-读取串口接收到的数据

一、需求描述 现有一单片机在通过串口向外发送数据&#xff0c;需要使用Python编写程序进行数据的接收&#xff0c;并根据自定义的协议进行报文的解析。 二、自定义协议 因为单片机在通过串口发送数据时&#xff0c;是以字节为单位进行发送&#xff0c;对于接收方来说&#…

2-25练习题

6.假设循环队列用数组实现,其定义如下: #define SEQLEN 32 int seqn [ SEQLEN ]; /*用于存放队列数据的数组*/ int head;/*数组下标索引&#xff0c;指向队列头部&#xff0c;若队列不空&#xff0c;指向队列头元素*/ int tail;/*数组下标索引&#xff0c;指向队列尾部&#xf…