嵌入式学习 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://www.mzph.cn/news/702672.shtml

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

相关文章

面向对象进阶——抽象类,接口,内部类

第一章 抽象类 1.1 概述 1.1.1 抽象类引入 ​ 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了(因为子类对象会调用自己重写的方法)。…

01|Mysql底层存储引擎

1. 聚集索引(聚簇)与非聚集索引 1.1 聚集索引 索引和数据存储在一起。叶子节点存储了完整的数据记录; 1.2 非聚集索引 MyISAM存储引擎就是非聚集索引,索引和数据文件是分开存储的。索引在MYI文件中,数据在MYD文件中…

基于springboot+vue的音乐网站(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

【GameFramework框架内置模块】3、数据表(Data Table)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录: https://blog.csdn.net/q7…

zemax人眼模型

人眼模型可以从下面这张图来提取 按照前后顺序,简化模型中跟成像直接相关的就是: 角膜、前方(液状体)、瞳孔、晶状体、玻璃体、视网膜 一般情况下我们认为瞳孔可以作为光阑 入瞳4mm视场(近轴像高)5波长0…

【Java程序设计】【C00290】基于Springboot的网上书城管理系统(有论文)

基于Springboot的网上书城管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的网上书城管理系统 本系统分为系统功能模块、管理员功能模块以及用户功能模块。 系统功能模块:在系统首页可以查看首…

Vue.js+SpringBoot开发生活废品回收系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 资源类型&资源品类模块3.3 回收机构模块3.4 资源求购/出售/交易单模块3.5 客服咨询模块 四、免责说明 一、摘要 1.1 项目介绍 生活废品回收系统是可持续发展的解决方案,旨在鼓…

网络编程中的read、write函数的三种返回值处理及readn和writen函数

read函数返回值为0,表示对端关闭。 write函数返回值为0,表示什么东西都没写。 比如:总共想读4096个字节,每次只发1500个字节,就需要读多次。 readn函数读一行,读到\n

java实战:Redis实现查找附近的人

本文将介绍如何使用Redis实现查找附近的人的功能。我们将探讨如何使用Redis的地理空间(Geospatial)索引功能,并展示一个简单的Java代码示例,该示例使用Jedis库和Redis的GEOADD命令来添加位置信息,以及使用GEORADIUS命令…

【Flutter/Android】运行到安卓手机上一直卡在 Running Gradle task ‘assembleDebug‘... 的终极解决办法

方法步骤简要 查看你的Flutter项目需要什么版本的 Gradle 插件: 下载这个插件: 方法一:浏览器输入:https://services.gradle.org/distributions/gradle-7.6.3-all.zip 方法二:去Gradle官网找对应的版本:h…

Unity(第六部)向量的理解和算法

标量:只有大小的量。185 888 999 (类似坐标) 向量:既有大小,也有方向。(类似以个体为主体的方向,前方一百米) 向量的模:向量的大小。(类似以个体为主体的方向,前方一百米、只取一百米…

洛谷P1135题解

题目背景 感谢 yummy 提供的一些数据。 题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯。大楼的每一层楼都可以停电梯,而且第 i 层楼(1≤i≤N)上有一个数字 K[i]​(0≤K[i]​≤N)…

最新红盟云卡个人自动发卡开源系统源码优化版

红盟云卡系统是云商学院旗下的一款基于 PHPMySQL 开发的虚拟商品在线售卖平台。它是一款漂亮且功能丰富的发卡网站,可以与社区进行对接。该系统完全开源且无任何加密,可商业使用,并支持个人免签多个接口。 下载地址:优化版.zip

【JavaEE Spring 项目】在线 OJ 系统

在线OJ系统 1. 需求2. 最终页面展示3. 需求分析4. 创建 Spring 项目5. 前后端交互接口约定6. 后端功能实现6.1 编译运行模块6.1.1 进程和线程的相关知识6.1.2 Java 中的多进程编程6.1.3 进程间通信 -- 文件6.1.4 Java中的 IO 知识6.1.5 封装创建进程执行命令工具类6.1.6 实现编…

项目:shell实现多级菜单脚本编写

目录 1. 提示 2. 演示效果 2.1. 一级菜单 2.2. 二级菜单 2.3. 执行操作 3. 参考代码 1. 提示 本脚本主要实现多级菜单效果,并没有安装LAMP、LNMP环境,如果要用在实际生成环境中部署LNMP、LAMP环境,只需要简单修改一下就可以了。 2. 演…

C#高级--设计模式(七个原则)

一、单一职责原则 原理: 单一职责原则即:对于一个类而言,应该仅有一个引起他变化的原因。换言之,一个类只负责一个功能领域中的相应职责。 单一职责原则是实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则…

keepalived+HAProxy+MySQL双主实验

keepalivedHAProxyMySQL双主实验 环境准备 node1(HAProxy1):192.168.184.10 node2(HAProxy2):192.168.184.20 node3(MySQL1):192.168.184.30 node4(MySQL2):192.168.184.40 虚拟IP vip:192.168.184.100MySQL部署 在node3执行以下脚本: #!/bin/bash sy…

具身智能(Embodied AI)的概念、核心要素、难点及突破性进展

在ChatGPT之后,具身智能(Embodied AI)这个大模型概念火了,那什么是具身智能呢? 什么是具身智能? 具身智能作为人工智能发展的一个重要分支,正在迅速崭露头角,成为科技界和大众关注…

c++ http操作接口

很简单的使用libcurl来操作http与服务器来通讯,包含http与https,对外只开放 #include "request.h" #include "response.h" #include "url.h" 三个头文件,简单易用,使用的实例如下: vo…

【Linux】部署单机项目(自动化启动)

目录 一.jdk安装 二.tomcat安装 三.MySQL安装 四.部署项目 一.jdk安装 1.上传jdk安装包 jdk-8u151-linux-x64.tar.gz 进入opt目录,将安装包拖进去 2.解压安装包 防止后面单个系列解压操作,我这边就直接将所有的要用的全部给解压,如下图注…