嵌入式学习 Day 23

一. 进程基本概念:


1.进程:


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

2.进程相关命令:

    1.top 


      动态查看当前系统中的所有进程信息(根据CPU占用率排序)

        PID:唯一识别进程的ID号(>0)
        优先级:Linux系统中数据高,优先级高(-20 - 19)  Windows系统中数值高,优先级高
        进程状态: 
            R   运行态/就绪态
            S   睡眠态/可唤醒等待态
            D   不可唤醒等待态
            T   暂停态
            Z   僵尸态
            X   结束态

        q退出 

    2.nice


      以指定优先级来运行进程

      示例:
        nice -n 优先级 要执行的集成任务

      renice 
      重新设定一个正在运行的进程的优先级
      
      示例:
        renice -n 优先级 进程PID 

    3.kill


      杀死指定的进程任务

      示例:
        kill -9 进程PID 

      killall 
      杀死进程名对应的所有进程任务

      示例:
        killall -9 进程名 

    4.ps -ef 


      查看当前时刻所有进程的信息

      PPID:父进程的ID号 

      ps -ef | grep a.out 

    5.pstree


      查看进程树关系

    6.ps -aux 


      查看当前时刻的进程信息

    7../a.out &


      将a.out任务放在后台执行


    8.jobs


      查看一个终端下后台执行的所有任务


    9.fg 编号


      将后台任务放到前台执行

3.进程的运行


    32bits

    一个进程在运行时,操作系统会为该进程分配 0 - 4G 虚拟内存空间,分为文本段、数据段、系统数据段

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

4.进程中虚拟地址和物理地址的关系


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

5.进程的调度:

    1.常见的调度算法:


      1.先来先执行,后来后执行
      2.高优先级调度算法
      3.时间片轮转调度算法
      4.多级队列反馈调度算法
      5.负载均衡调度算法

      时间片:
        1.CPU在一个任务中的运行时间称为一个时间片

    2.宏观并行,微观串行

    3.进程的状态:


        R     运行态、就绪态 
        S     睡眠态/可唤醒等待态 
        D     不可唤醒等待态 
        T     暂停态
        Z     僵尸态
        X     结束态

6.进程相关函数接口:


    1.进程的创建 


      fork 
      pid_t fork(void);
      功能:
        创建一个子进程,新创建的进程称为原来进程的子进程,原来的进程称为新进程的父进程
      参数:
        void 缺省
      返回值:
        成功子进程返回0 
        父进程返回子进程的PID 
        失败返回-1 

       父进程调用fork创建子进程,子进程拷贝父进程的文本段、数据段、系统数据段  

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

  练习:
    创建一个父进程的2个子进程,子进程中打印自己的PID和父进程的PID
                            父进程中打印自己的PID和两个子进程的PID

  2.进程的结束

    exit
    void exit(int status);
    功能:
      让进程结束
    参数:
      status:进程结束的状态
    返回值:
      缺省

    exit在主函数中使用和return效果一致
    exit会刷新缓存区

    _exit
    void _exit(int status);
    功能:
      让进程直接结束
    参数:
      status:进程结束的状态
    返回值:
      缺省

7.进程的消亡


  1.僵尸进程:
    进程代码执行结束,空间没有被回收,称为僵尸进程


  2.如何避免产生僵尸进程?
    1.让父进程先结束
    2.让父进程回收子进程空间

  3.孤儿进程:
      进程的父进程先结束,此时该进程称为孤儿进程,被系统进程收养,进程再结束时,会被系统进程回收进程空间

8.wait 


  pid_t wait(int *wstatus);
  功能:
    回收子进程空间
  参数:
    wstatus:存放子进程结束状态空间的首地址
  返回值:
    成功返回回收到的子进程PID
    失败返回-1 

 父、子进程 的运行是独立的没有具体的先后之分(异步)

  1.wait函数具有阻塞(回收)功能

     保证子进程运行结束后,才回收子进程空间
  2.wait函数具有同步功能

     wait之后的代码在子进程结束之后才会被执行,父、子进程有了先后之分(同步)

  WIFEXITED(wstatus)
  进程是否正常退出 

  WEXITSTATUS(wstatus)
  进程结束状态值

  WIFSIGNALED(wstatus)
  进程是否被信号杀死

  WTERMSIG(wstatus)
  获得杀死进程的信号编号

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Java/Python/Go不同开发语言基础数据结构和相关操作总结-GC篇

Java/Python/Go不同开发语言基础数据结构和相关操作总结 1. 常见gc方式1.1 gc判断对象是否存活1.2 引用计数法1.2 标记-清除算法1.3 复制算法1.4 标记-压缩算法1.5 分代收集算法 2. java的gc方式以及垃圾回收器2.1 gc方式2.1 gc回收器2.1.1 Serial收集器2.1.2 ParNew收集器2.1.…

成长优化算法(Growth Optimizer,GO)求解不闭合MD-MTSP(提供MATLAB代码)

一、成长优化算法介绍 成长优化算法(Growth Optimizer,GO)由Qingke Zhang等人于2023年提出,该算法的设计灵感来源于个人在成长过程中的学习和反思机制。学习是个人通过从外部世界获取知识而成长的过程,反思是检查个体…

手写myscrapy(五)

项目地址:https://gitee.com/wyu_001/myscrapy 我们继续完成返回的处理类 MyResponse的实现 先上类图: 主要功能: json() 方法解析返回的json格式内容,转换为 python 的json对象 xpath()方法解析返回的html格式的内…

LabVIEW和Python开发微细车削控制系统

LabVIEW和Python开发微细车削控制系统 为满足现代精密加工的需求,开发了一套基于LabVIEW和Python的微细车削控制系统。该系统通过模块化设计,实现了高精度的加工控制和G代码的自动生成,有效提高了微细车削加工的自动化水平和编程效率。 项目…

微服务-微服务Spring Security OAuth 2实战

1. Spring Authorization Server 是什么 Spring Authorization Server 是一个框架,它提供了 OAuth 2.1 和 OpenID Connect 1.0 规范以及其他相关规范的实现。它建立在 Spring Security 之上,为构建 OpenID Connect 1.0 身份提供者和 OAuth2 授权服务器产…

区分服务 DiffServ

目录 区分服务 DiffServ 区分服务的基本概念 区分服务 DiffServ 的要点 每跳行为 PHB DiffServ 定义的两种 PHB 区分服务 DiffServ 区分服务的基本概念 由于综合服务 IntServ 和资源预留协议 RSVP 都较复杂,很难在大规模的网络中实现,因此 IET…

挑战杯 基于机器学习与大数据的糖尿病预测

文章目录 1 前言1 课题背景2 数据导入处理3 数据可视化分析4 特征选择4.1 通过相关性进行筛选4.2 多重共线性4.3 RFE(递归特征消除法)4.4 正则化 5 机器学习模型建立与评价5.1 评价方式的选择5.2 模型的建立与评价5.3 模型参数调优5.4 将调参过后的模型重…

vulnhub靶场---->DOUBLETROUBLE: 1

详细思路 知识点1.网段探测2.nmap扫描3.目录扫描4.隐写5.上传木马文件6.awk提权 知识点 图片隐写----->steghide 密码爆破----->stegseek awk提权------>sudo awk BEGIN {system("/bin/bash")}1.网段探测 kali:192.168.0.131 靶机:192.168.0.1…

【小沐学QT】QT学习之Web控件的使用

文章目录 1、简介1.1 Qt简介1.2 Qt下载和安装1.3 Qt快捷键1.4 Qt帮助 2、QtWeb控件2.1 测试代码1(QApplication)2.2 测试代码2(QApplicationQWidget)2.3 测试代码3(QApplicationQMainWindow)2.4 测试代码4&…

Spring事务模板及afterCommit存在的坑

大家好,我是墨哥(隐墨星辰)。今天的内容来源于两个线上问题,主要和大家聊聊为什么支付系统中基本只使用事务模板方法,而不使用声明式事务Transaction注解,以及使用afterCommit()出现连接未按预期释放导致的…

AI赋能Oracle DBA:以自然语言与Oracle数据库互动

DBA AI助手:以自然语言与Oracle数据库互动 0. 引言1. AI赋能Oracle DBA的优势2. AI如何与Oracle数据库交互3. 自然语言查询的一些示例4. 未来展望 0. 引言 传统的Oracle数据库管理 (DBA) 依赖于人工操作,包括编写复杂的SQL语句、分析性能指标和解决各种…

项目解决方案:街道社区视频监控接入、汇聚和联网设计方案

目 录 一、客户需求 二、网络拓扑图 三、方案描述 四、系统配置 1、服务器配置 2、带宽配置 五、方案优势 1. 平台可堆叠使用 2. 支持主流接入协议 4. 多种终端显示 5. 客户端功能强大 6. 一机一档 一、客户需求 1,一个街道有十个社…

计算机设计大赛 深度学习图像风格迁移 - opencv python

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习图像风格迁移 - opencv python 该项目较为新颖,适合作为竞赛课题…

Linux环境基础开发工具使用篇(三) git 与 gdb

一、版本控制器-git 1.简单理解: ①git既是服务端,又是客户端 ②git会记录版本的变化 ③git是一个去中心化的分布式软件 git/gitee 是基于git仓库搭建的网站,让版本管理可视化 2.git 三板斧提交代码 查看安装的git版本 git--version 命令行提交代…

Python读写XML文件的技术指南【第100篇—读写XML文件】

Python读写XML文件的技术指南 在软件开发中,XML(可扩展标记语言)是一种广泛用于数据存储和交换的格式。Python作为一门强大而灵活的编程语言,提供了许多库和工具来处理XML文件。本篇技术博客将介绍如何使用Python读写XML文件&…

FPGA 与 数字电路的关系 - 这篇文章 将 持续 更新 :)

先说几个逻辑:(强调一下在这篇文章 输入路数 只有 1个或2个,输出只有1个,N个输入M个输出以后再说) 看下面的几个图: 图一( 忘了 这是 啥门,不是门吧 :)也就…

笔记本hp6930p安装Android-x86避坑日记

一、序言 农历癸卯年前大扫除,翻出老机hp6930p,闲来无事,便安装Android-x86玩玩,期间多次入坑,随手记之以避坑。 笔记本配置:T9600,4G内存,120G固态160G机械硬盘 二、Android-x86系统简介 官…

Unity中URP实现水体(水下的扭曲)

文章目录 前言一、使用一张法线纹理,作为水下扭曲的纹理1、在属性面板定义一个纹理,用于传入法线贴图2、在Pass中,定义对应的纹理和采样器3、在常量缓冲区,申明修改 Tilling 和 Offset 的ST4、在顶点着色器,计算得到 应…

MySQL认证方法介绍

阅读本文之前请参阅----MySQL 数据库安装教程详解(linux系统和windows系统) MySQL数据库的认证方法对于确保数据安全和维护系统完整性至关重要。在MySQL中,有多种认证方法可供选择,每种方法都有其特定的用途和配置方式。本文将详细…

Windows 开机启动 | 启动项管理

开机启动 开机启动对于保障系统的正常运行、提高用户体验、及时响应系统事件以及自动化管理和维护系统都具有重要意义。合理管理开机启动项,系统启动时自动运行必要的程序和服务。 但是,随着操作系统使用时长的增加启动项越来越多,而且还很难…