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.hqwc.cn/news/491870.html

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

相关文章

(Linux学习一):Mac安装vmWare11.5,centOS 7安装步骤教程

一。下载vmware 官网地址:下载地址 由于我的电脑系统是Mac 10.15.6版本系统,我下载的是VMware Fusion 11.5版本,13是最新版本不支持安装需要系统在11以上。 百度网盘下载地址: VMware Fusion 11 VMware Fusion 12 VMware Fusion 13 下载需要…

万界星空科技商业开源MES

一、万界星空科技商业开源MES系统概述: 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、适合二开的开源MES。 1.万界星空开源MES制造执行系统的Java开源版本。 开源mes系统包括系统管理,车间基础数据管理,计…

【管理咨询宝藏资料25】某能源集团五年发展战略报告

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏资料25】某能源集团五年发展战略报告 【关键词】战略规划、五年战略、管理咨询 【文件核心观点】 - LL应以快速做大做强为目标,专注…

五.AV Foundation 视频播放 - 标题和字幕

引言 本篇博客主要介绍使用AV Foundation加载视频资源的时候,如何获取视频标题,获取字幕并让其显示到播放界面。 设置标题 资源标题的元数据内容,我们需要从资源的commonMetadata中获取,在加载AVPlayerItem的时候我们已经指定了…

docker安装mongodb

1.使用docker安装mongo 1.1下载MongoDB镜像 docker pull mongo:4.4 1.2运行MongoDB容器 docker run -itd --name mongo -v /docker_volume/mongodb/data:/data/db -p 27017:27017 mongo:4.4 --auth 2.创建用户 2.1 登录mongo容器,并进入到【admin】数据库 dock…

kafka生产者

1.原理 2.普通异步发送 引入pom&#xff1a; <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.0.0</version></dependency><dependency><g…

【wails】(6):使用wails做桌面应用开发,使用gin+go-chatglm.cpp进行本地模型运行,在windows上运行成功

1&#xff0c;整体架构说明 主要使用&#xff0c;参考的开源项目是&#xff1a; https://github.com/wailsapp/wails 前端项目&#xff1a; https://github.com/Chanzhaoyu/chatgpt-web 运行模型&#xff1a; https://github.com/Weaxs/go-chatglm.cpp 参考代码&#xff1a; h…

Python算法题集_实现 Trie [前缀树]

Python算法题集_实现 Trie [前缀树] 题208&#xff1a;实现 Trie (前缀树)1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【定义数据类默认字典】2) 改进版一【初始化字典无额外类】3) 改进版二【字典保存结尾信息无额外类】 4. 最优算法5. 相关…

JAVA集合进阶(Set、Map集合)

一、Set系列集合 1.1 认识Set集合的特点 Set集合是属于Collection体系下的另一个分支&#xff0c;它的特点如下图所示 下面我们用代码简单演示一下&#xff0c;每一种Set集合的特点。 //Set<Integer> set new HashSet<>(); //无序、无索引、不重复 //Set<…

Vulnhub靶机:Hacker_Kid

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;Hacker_Kid&#xff08;10.0.2.42&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://download.vulnhub.com/hac…

信息抽取(UIE):使用自然语言处理技术提升证券投资决策效率

一、引言 在当今快速变化的证券市场中&#xff0c;信息的价值不言而喻。作为一名资深项目经理&#xff0c;我曾领导一个关键项目&#xff0c;旨在通过先进的信息抽取技术&#xff0c;从海量的文本数据中提取关键事件&#xff0c;如企业并购、新产品发布以及政策环境的变动。这些…

【openGL教程08】基于C++的着色器(02)

LearnOpenGL - Shaders 一、说明 着色器是openGL渲染的重要内容&#xff0c;客户如果想自我实现渲染灵活性&#xff0c;可以用着色器进行编程&#xff0c;这种程序小脚本被传送到GPU的显卡内部&#xff0c;起到动态灵活的着色作用。 二、着色器简述 正如“Hello Triangle”一章…