进程与线程之进程的理解

首先对堆栈等进程运行过程中的内存有了更深层次的理解:

我们之前了解到,程序在运行中存在堆栈,字符串常量区代码区。

现在我们提出虚拟内存的概念:程序在运行的过程中开辟0~4G的虚拟空间使用MUU映射单元映射到物理地址上

简而言之,进程是运行中的程序,可参考windows下的任务管理器,或者手机的后台应用。而程序则可认为是应用、代码等。

当应用在运行的过程中则为进程。

1·进程:

    程序:存放在外存一个数据文件                固定的、死的

    进程:程序 动态执行 的过程(程序的运行)     运行的、活的
            包括:进程的创建、进程的调度、进程的消亡

2·进程的命令:
    1·top
        动态查看当前系统中的所有进程信息    (类似于windows的任务管理器)
        PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
            PID:唯一识别进程的ID号(例如QQ登两个账号,就需要两个PID)
            USER:进程所属用户名
            PR优先级:数值低 优先级高(-20 ~ 19) (window下数值高 优先级高)

            NI:进程的nice值,用来调整进程的优先级
            VIRT:进程使用的虚拟内存

            RES:进程占用的物理内存

            SHR:进程占用的共享内存

           

        S :
            进程状态:
                R   运行态/就绪态
                S   睡眠态
                D   不可唤醒等待态
                T   暂停态
                Z   僵尸态  代码执行结束但是空间未回收
                X   结束态

            %MEM:进程占用物理内存的百分比
            
           
        q 退出top

    //设定进程优先级
    2·nice
        设定优先级运行进程
        nice -n 优先级 要进行的进程任务 

      renice
        重新设定一个运行进程的优先级
        renice -n 优先级 进程PID 

    3·kill
        杀死指定的进程任务
        示例:
        kill -9 进程PID(47914)
        -9: kill的方式

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

        示例:
        killall -9 进程名(a.out)


    4·ps -ef
        查看当前时刻所有的进程信息(10:14) 静止的
        PPID:父进程的ID号

      ps -ef | grep a.out
        查看a.out的信息

    5·pstree
        查看树形进程联系

    6·ps -aux
        TTY:? 精灵进程不依赖于终端

    7·./a.out &
        将进程放在后台运行

        jobs:查看一个终端下后台执行的所有任务
        fg 1/2/3(编号)
            将后台任务放在前台来执行


进程的调度:

 1·常见的调度算法
        1·先来先执行
        2·短作业优先
        3·优先级调度
        4·时间片轮转调度算法
            宏观并行  微观串行 (多任务)
        5·多级反馈队列调度
        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函数具有同步功能

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

  WEXITSTATUS(wstatus)
  进程结束状态值

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

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

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

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

相关文章

28V、115V、270V坦克装甲车启动电源:为现代战争注入新能量

28V、115V、270V坦克装甲车启动电源:为现代战争注入新能量 世界新格局的诞生后,现代战争已经从传统的陆地、海洋、空中扩展到了网络空间和外太空。在这种背景下,各种先进的武器装备不断涌现,为国家安全提供有力保障。28V、115V、2…

【Unity】提示No valid Unity Editor liscense found.Please active your liscense.

有两个软件,如果只有一个,点黑的不会有效果、、、、(楼主是这个原因,可以对号入座一下) 简而言之,就是去下载Unity Hub,再里面激活管理通行证 问题情境: 点击unity出现以下弹窗&a…

C语言-指针详解速成

1.指针是什么 C语言指针是一种特殊的变量,用于存储内存地址。它可以指向其他变量或者其他数据结构,通过指针可以直接访问或修改存储在指定地址的值。指针可以帮助我们在程序中动态地分配和释放内存,以及进行复杂的数据操作。在C语言中&#…

一些PCB整改优化经验总结

一个UP的PCB整改经验: 当正面全局铺铜之后出现很多小铜皮碎片的时候不如不铺铜或者单面铺铜RJ45网口的地和整体的地分开,两地之间通过电容相连(整板地一定要相连)TVS这种防浪涌高压的器件的地单独铺设,这样当高压来临…

配电网重构知识及matlab实现

配网重构中,很重要的一个约束条件为配网应随时保持开环、辐射的状态: 配电网系统是属于闭环设计但是开环运行的系统,因此,在开关的开闭过程中,随时保持配电网的开环状态时很重要。Mendoza等利用图论,尤其是…

基于ElementUI封装省市区四级联动下拉选择

基于ElementUI封装的省市区下拉级联选择 效果 数据 最新省市区JSON数据获取:https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/ 参数说明 参数说明inputNumShow下拉框的数量,最多4个defaultAddress默认显示省市区 例:[‘安徽’, …

音视频剪辑|Windows|抽帧和合帧

什么是抽帧? FFmpeg 抽帧(Extracting frames)的作用是从视频文件中按需提取单张或多张静止图像(帧),并将它们保存为图片文件(如 JPEG、PNG 等格式)。这一功能在以下场合十分有用&am…

一元函数微分学——刷题(18

目录 1.题目:2.解题思路和步骤:3.总结:小结: 1.题目: 2.解题思路和步骤: 遇到绝对值函数,需要把它转化为分段函数,从而更加方便求导数: 3.总结: 遇到绝对…

Docker容器实战

"爱在,地图上,剥落~" Mysql 容器化安装 我们可以在 docker hub上,进入mysql的镜像仓库,找到适合的版本。 直接拉取镜像: docker pull mysql:latest 我们知道 msyql 的默认端口是 3306 ,而且有密码&#x…

计算机网络实验四VLAN与三层交换机

一、实验目的和要求 1)掌握VLAN的基本配置方法,理解VLAN的功能和作用; 2)掌握三层交换机的基本配置方法。 二、实验环境 1)运行Windows 2008 Server/XP/7操作系统的PC一台。 2)PacketTracer。 实验内…

电子器件系列63:肖特基二极管NSQ03A04\SS34C

以下是肖特基二极管_SS34C_规格书_SLKOR(萨科微),立创编号C880740 以下是肖特基二极管NSQ03A04的规格书: 稍微比较下参数,发现两者参数接近,ss34的几个参数还要略微好一些,可以用ss34来作替换。 在电源电路中的应用: …

python实现贝尔曼福德算法

对于求图的最短路径问题,如果使用迪杰斯特拉算法,也可以算是一个较为常见的方法,但是对于迪杰斯特拉算法解决最短路径问题的时候,会存在一个问题,那就是所有边所对应的距离都必须是正数,而如果在存在负数的边的时候,迪杰斯特拉算法就会存在问题,而对于存在负数的这种情…

Bean的声明周期

1.创建Bean对象(调用无参数构造) 2.给bean对象设置相关属性(依赖注入) 3.bean后置处理器(初始化前执行,类似于过滤器和拦截器) 首先要定义一个类MyBeanPost,实现BeanPostProcessor…

Freertos实时操作系统---基于STM32

一、Freertos简介 1.Freertos介绍 1)RTOS指的是一类的实时操作系统 2)rtos的使用:用户根据对任务来设置其优先级然后来使用调度器来决定哪一个任务来先执行。 3)Freertos的文件数量远低于其他操作系统 4)主要特点&…

[rust] 10 project, crate, mod, pub, use: 项目目录层级组织, 概念和实战

文章目录 一 项目目录层级组织概念1.1 cargo new 创建同名 的 Project 和 crate1.2 多 crate 的 package1.3 mod 模块1.3.1 创建嵌套 mod1.3.2 mod 树1.3.3 用路径引用 mod1.3.3.1 使用绝对还是相对? 1.3.4 代码可见性1.3.4.1 pub 关键字1.3.4.2 用 super 引用 mod1.3.4.3 用 …

Win11网络连接选项和蓝牙选项突然消失的解决办法

在设置或者开始栏里搜索“网络重置” 打开网络重置: 然后点击立即重置,之后按照系统提示操作即可

51单片机学习(4)-----独立按键进一步控制LED灯

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 目录 一. 独立按键灵活控制LED 程序一:单个独立按键控制多个…

C++ 二分法

目录 1、704. 二分查找 2、34. 在排序数组中查找元素的第一个和最后一个位置 3、69. x的平方根 4、35. 搜索插入位置 5、852. 山脉数组的峰顶索引 6、162. 寻找峰值 7、153. 寻找旋转排序数组中的最小值 8、LCR 173. 点名 1、704. 二分查找 ​ class Solution {…

2024 windows环境下安装RabbitMQ(亲测超详细)

一、RabbitMQ是什么?   RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。 ​ AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消…

[C++] 如何操作ini文件

什么是ini文件? INI文件(.ini)是一种常见的配置文件格式,用于存储程序、操作系统或设备驱动程序的配置信息。INI是"Initialization"的缩写,指的是初始化。INI文件通常是纯文本文件,在Windows操作…