Linux软件高级编程-进程基本概念--day6

1.进程:

           程序:

                  存放在外存的一段数据组成的文件

           进程:

                  是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡

2.进程相关命令:

           1)top:

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

                   PID:唯一识别进程的ID号(>0)

                   优先级:Linux系统中数据高,优先级高(-20 --- 19);
                                  Windows系统中数值高,优先级高

                   进程状态:

                            R:运行态/就绪态

                            S:睡眠态/可唤醒等待态

                            D:不可唤醒等待态

                            T:暂停态

                            Z:僵尸态

                            X:结束态

             2)nice :

                      以指定优先级来运行进程

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

                   renice:重新设定一个正在运行的进程的优先级

                      eg:renice  -n  优先级  进程PID

             3)kill:

                      杀死指定的进程任务  

                      eg:kill  -9  进程PID

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

                      eg:killall  -9  进程名

             4)ps  -ef:

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

                   PPID:父进程的ID号

                   ps  -ef  grep  a.out

             5)pstree:

                        查看进程树

             6)ps  -aus:

                        查看当前时刻的进程信息

             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

              功能:创建一个子进程,新创建的进程称为原来进程的子进程,原来的进程称为新进程的父进程

              参数:void 缺省

              返回值:成功子进程返回0
                            父进程返回子进程的PID

                            失败返回-1

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

              getpid

                        pid_t getpid(void);

                功能:

                       获得调用进程的PID号
      
             

              getppid

                        pid_t getppid(void);

                 功能:

                        获得调用进程的PPID

       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(jnt *wstatus);

          功能:

                   回收子进程空间

          参数:

                   wstatus:存放子进程结束状态空间的首地址

          返回值:

                   成功返回回收到的子进程PID失败返回-1

wait函数的作用

          1)wait函数具有阻塞作用

          2)wait函数具有同步作用

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

  WEXITSTATUS(wstatus)
  进程结束状态值

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

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

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

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

相关文章

Linux的系统错误

strerror()函数是用于获取指定错误码对应的错误信息字符串的函数。它的声明为&#xff1a; #include <string.h> char *strerror(int errnum);该函数接收一个整型参数errnum&#xff0c;表示错误码&#xff0c;然后返回一个指向错误信息字符串的指针。 使用strerror()函…

STM32程序(移植)中头文件的路径

例:#include "./BSP/LCD/lcd.h"为什么有的头文件加了路径? 先看AI的回答: 在C和C编程中&#xff0c;当我们在源文件中包含&#xff08;或称为“引入”或“导入”&#xff09;一个头文件时&#xff0c;编译器需要知道这个头文件的位置。通常&#xff0c;编译器会在…

FariyGUI × Cocos Creator 3.x 弹窗制作

在fgui里制作一个弹窗 新建一个按钮&#xff0c;作为返回按钮 新建一个标签 做成这个样子 其中包含两个节点&#xff0c;名称分别为title和closeButton 可以阅读fgui的源码window.js得到&#xff0c;closeButton按钮只需要输入名称即可在contentPane设置时自动绑定。 且会…

【C++ QT项目5】——基于HTTP与JSON数据流的天气预报界面设计

【C QT项目5】——基于HTTP与JSON数据流的天气预报界面设计 一、项目概述二、UI设计与stylesheet样式表三、天气预报数据接口四、JSON数据4.1 概述4.2 QT生成JSON数据4.3 QT解析JSON数据4.4 将JSON数据解析到QMap中 五、软件开发网络通信架构5.1 BS架构/CS架构5.2 HTTP基本概念…

Object转List

1.背景 工作中经常会遇到一个map存key为string类型 value存object&#xff0c;方便我们下文代码获取数据 2.例如 Map<String, Object> result new HashMap<>(); List<Map<String, Object>> sheet1Result new ArrayList<>(); List<String&…

二、系统知识笔记-系统架构概述

一、系统架构定义 系统架构是指对一个系统的整体结构和组成部分进行描述和规划的过程。系统架构定义决定了系统的设计、开发和实施过程中的关键方向和决策。是系统的骨架和根基&#xff0c;支撑和链接各个部分&#xff0c;包括组件、连接件、约束规范以及指导这些内容设计与演…

go语言的切片理解

var numbers4 [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}myslice : numbers4[4:6]//这打印出来长度为2fmt.Printf("myslice为 %d, 其长度为: %d\n", myslice, len(myslice))myslice myslice[:cap(myslice)]//为什么 myslice 的长度为2&#xff0c;却能访问到第四个元…

MyBatis使⽤PageHelper(MySQL)

MyBatis使⽤PageHelper&#xff08;MySQL&#xff09; 一、 limit分⻚二、PageHelper插件第⼀步&#xff1a;引⼊依赖第⼆步&#xff1a;在mybatis-config.xml⽂件中配置插件第三步&#xff1a;编写Java代码第四步&#xff1a;格式化结果查看 三、SpringBoot3 集成 PageHelper …

自动驾驶---Motion Planning之Path Boundary

1 背景 在上文《自动驾驶---Motion Planning之LaneChange》中,笔者提到过两种LaneChange的思路,这里再简单回顾一下:(1)利用Routing和周围环境的信息,决定是否进行换道的决策;(2)采用的博弈思想(蒙特卡洛树搜索---MCTS)决定是否进行换道的决策。不管是变道,避让还是…

2024-02-25 Unity 编辑器开发之编辑器拓展6 —— Event

文章目录 1 Event 介绍2 重要 API3 代码示例 1 Event 介绍 ​ Event 提供许多属性和方法&#xff0c;允许检查和处理用户输入&#xff0c;主要用于 Unity 编辑器拓展开发。 ​ Input 相关内容需要在运行时才能监听输入&#xff0c;而 Event 专门提供给编辑模式下使用&#xf…

爬虫入门四(抽屉半自动点赞、xpath使用、动作链、打码平台、scrapy框架介绍与安装及创建项目)

文章目录 一、抽屉半自动点赞二、xpath的使用三、动作链四、打码平台介绍超级鹰打码基本测试 五、自动登录超级鹰六、scrapy框架介绍安装创建爬虫项目 一、抽屉半自动点赞 登录抽屉账号保存cookiesimport timeimport jsonfrom selenium import webdriverfrom selenium.webdrive…

(正规api接口代发布权限)短视频账号矩阵系统源码独立搭建技术开发

短视频账号矩阵系统源码独立搭建技术开发&#xff1a; 搭建短视频账号矩阵系统源码独立技术开发需要以下步骤&#xff1a; 1. 确定需求&#xff1a;明确系统需要实现的功能和目标&#xff0c;包括账号管理、视频发布、数据分析等。 2. 学习相关知识和技术&#xff1a;了解短视…

Adobe将类ChatGPT集成到PDF中

2月21日&#xff0c;全球多媒体巨头Adobe在官网宣布&#xff0c;推出生成式AI助手AI Assistant&#xff0c;并将其集成在Reader 和Acrobat 两款PDF阅读器中。 据悉&#xff0c;AI Assistant的功能与ChatGPT相似&#xff0c;可以基于PDF文档提供摘要、核心见解、基于文档内容&a…

docker 容器访问 GPU 资源使用指南

概述 nvidia-docker 和 nvidia-container-runtime 是用于在 NVIDIA GPU 上运行 Docker 容器的两个相关工具。它们的作用是提供 Docker 容器与 GPU 加速硬件的集成支持&#xff0c;使容器中的应用程序能够充分利用 GPU 资源。 nvidia-docker 为了提高 Nvidia GPU 在 docker 中的…

全球冰川均衡调整(GIA)数据下载链接汇总(续)

前一专栏我们介绍了一些常用的GIA模型和对应的下载地址&#xff0c;但是不少数据是提供的球谐数据&#xff0c;对于部分用户使用不方便&#xff0c;这里分享NASA发布的几个格网的GIA&#xff08;PGR&#xff09;模型产品&#xff0c;其下载地址为&#xff1a;Files (nasa.gov) …

迅速了解Ascii、GBK、Unicode、UTF-8、BCD各种编码格式的由来及关系!

《嵌入式工程师自我修养/C语言》系列——迅速了解Ascii、GBK、Unicode、UTF-8、BCD各种编码格式的由来及关系 一、Ascii编码二、GBK编码三、Unicode编码四、UTF-8编码五、BCD编码六、其他网友的总结 快速学习嵌入式开发其他基础知识&#xff1f;>>>>>>>&g…

什么是代码签名证书中的“硬证书”?

代码签名证书是用于验证和签名软件程序的一种数字证书。使用代码签名证书&#xff0c;可以保护代码完整性、防止非法篡改&#xff0c;标识软件发行商的身份并确保软件来源可信。按不同验证级别&#xff0c;代码签名证书分为扩展验证型EV代码签名证书、企业验证型OV代码签名证书…

5.2 Ajax 数据爬取实战

目录 1. 实战内容 2、Ajax 分析 3、爬取内容 4、存入MySQL 数据库 4.1 创建相关表 4.2 数据插入表中 5、总代码与结果 1. 实战内容 爬取Scrape | Movie的所有电影详情页的电影名、类别、时长、上映地及时间、简介、评分&#xff0c;并将这些内容存入MySQL数据库中。 2、…

tomlc99开源库使用

下载地址&#xff1a;GitHub - cktan/tomlc99: TOML C library 1.加载tomlc99库 只需要在工程当中添加toml.h / toml.c这两个文件就可以了 2.使用tomlc99库解析toml文件 以下是从文件中获取值的常用步骤&#xff1a; 解析 TOML 文件。遍历并找到 TOML 中的表。从表中提取值…

Linux命令:重复多次后台运行且不保存输出,查看命令对应的进程数量

要在后台重复运行 Linux 命令并查看对应的进程数量&#xff0c;你可以使用循环结构和后台运行符号 & 结合起来。以下是一个示例&#xff1a; bash for i in {1..3}; do your_command > /dev/null 2>&1 & done 命令 your_command > /dev/null 2>&…