linux系统编程:多任务编程(进程1)

news2024/11/24 2:35:26

1.进程

  进程:(进行中的程序)--正在运行的程序 (动态的) ---内存 
  程序的一次执行过程!

  一个程序一个程序 可以 对应多个进程
   程序 -- a.out (可执行程序) ---静态的
   程序 加载 到内存 运行起来 成为了 进程。 

   进程是 程序运行的实体。

   程序 = 数据+代码

    

2.进程的组成

  进程 = pcb + text|data|bss|堆|栈

   宏观并行,微观串行。

  pcb

   

3.进程状态

   三态模型

    

linux下的模型

4.linux下进程的命令

  ps  -elf  |  grep  程序名    //主要查看父子进程       包含  pid      ppid //parent pid

  eg:  ps   -elf  | grep a.out   //査看 a.out 进程

  ps aux grep | 程序名    //主要查看某个而进程的pid号及状态信息

 eg:  ps aux  grep | a.out    //查看 a.out

 pstree   -sp   pid号/   /用途,查看 父子进程间的关系(以树形图的方式展现包含了pid号)
   kill    //杀死---给进程发信号
   eg:kill  -l    //查看 kill可以发送的信号

   kill   - 9   pid号    //给指定的pid号发9号信号

  ki11 -19 pid号   //暂停进程      kill -18 pid号;  //恢复进程
  killall     //可以指定进程名称这种方式发送信号

 eg:kill -9 a.out //表示给所有叫a.out的进程发信号

5.linux系统

   R --- 运行或可运行     -就绪态

   S --- 可中断的睡眠态

   D --- 不可中断的睡眠态

   T --- 暂停态

    Z --- 僵尸态

6.创建一个进程

   fork();

   

  功能:

   创建一个进程(child process 子进程)

    通过复制调用进程复制的子进程

返回值     : 成功   在父进程中返回了子进程的pid号     在子进程返回了0

                    失败    在父进程中返回了-1并且没有子进程被创建

fork之后,父进程和子进程都是从fork之后的下一句话开始执行。

7.进程的执行

    

8.进程的结束

    正常结束:•使用 exit() 函数:这是最常见的进程正常结束方式。exit() 函数由 C 标准库提供,它会立即终止进程并返回一个状态码给父进程。  

     异常结束:•信号处理:进程可以因为接收到特定的信号而结束,例如 SIGTERM(终止信号)或 SIGKILL(强制终止信号)。这些信号通常由操作系统发送,也可以由其他进程发送。运行时错误:当程序遇到不可恢复的错误时,如段错误(SIGSEGV)或浮点异常(SIGFPE),进程会被异常终止。

    当进程结束时,操作系统会保留一个称为“退出状态”的值。这个值可以被父进程捕获,用于判断子进程是否正常结束。在 UNIX 和类 UNIX 系统中,父进程可以使用 wait() 或 waitpid() 系统调用来获取子进程的退出状态。

 9.进程结束时资源的回收  - 僵尸态

       在操作系统中,僵尸进程(Zombie Process)是指一个已经结束但其父进程尚未对其进行适当清理的进程。僵尸进程本身并不占用任何资源,但它仍然存在于进程表中,占用一个进程表条目,直到其父进程通过 wait() 或 waitpid() 系统调用来回收它为止。

      父进程先于子进程结束:如果父进程在子进程结束之前就已经结束,那么子进程就会变成孤儿进程,并被 init 进程(PID 1)收养。此时,子进程是一个后台进程,init 进程会负责回收孤儿进程,但在这之前,子进程会处于僵尸状态。

      父进程没有调用 wait() 或 waitpid():如果父进程创建了子进程,但在子进程结束之前没有调用 wait() 或 waitpid() 来回收子进程的状态信息,那么子进程就会变成僵尸进程。

  

10. 1.32位的平台,每个进程拥有独立的4G内存空间(虚拟的)

       2.每个进程运行在各自独立的4G内存空间中。

       

    3.父子进程间,数据相互独立,不受影响。

    4.父子进程运行的顺序,不确定。取决于操作系统---先调度谁 。

    判断 fork() && fork() ||  fork ()  这个式子中有几个进程

    

                       

  有5个进程

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

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

相关文章

背包九讲(求方案数,求具体方案数,有依赖背包)

文章目录 求方案数基本思路代码 背包问题求具体方案基本思路代码 有依赖背包基本思路代码 求方案数 问题描述: 给定n nn个物品,以及一个容量大小为m mm的背包,然后给出n nn个物品的体积及价值,求背包最大价值是多少,也…

递归排序 归并排序 快排

递归 求中点 midL(R-L)/2 midL((R-L)>>1)右移一位更快 子问题等量 mast er公式 T(N) a*T(N/b)O(N^d) T(N):母 T(N/b):子 (是否等量) a:调用多少次 O(N^d):除去子变量之外的时间复杂度 子问题等量 上面…

sqli-labs-master靶场通关

目录 一、sqli-labs第一关 1.判断是否存在sql注入 (1)提示输入数字值的ID作为参数,输入?id1 (2)通过数字值不同返回的内容也不同,所以我们输入的内容是带入到数据库里面查询了 (3&#xff0…

信号量和管道

一、信号量 实现模拟售票问题: 1、信号量的机制:描述可使用资源的个数。 (1)P操作:表示使用这个资源,资源个数减一 逻辑:尝试获取资源——有资源可用直接使用 | 无资源可用等待 如果信号量的…

面向新人的 Java 面试问题(101-150)

101.什么是多态? 多态性被定义为能够采用多种形式的能力。它有两种类型,即编译时多态性或方法重载 - 在编译时调用的函数。例如,以“面积”类为例。根据参数数量,它可以计算正方形、三角形或圆形的面积。运行时多态性或方法覆盖 …

【详细】linux 打包QT程序

【详细】linux 打包QT程序 一. 安装linuxdeployqt1.1 下载linuxdeployqt源码并修改如下 二. 安装patchelf三. 打包appimage四. 打包成 Debian包4.1 control文件内容4.2 postinst文件内容4.3 postrm文件内容4.4 打包命令4.4 安装命令4.5 卸载命令 一. 安装linuxdeployqt 下载地…

【Redis】Redis 数据类型与结构—(二)

Redis 数据类型与结构 一、值的数据类型二、键值对数据结构三、集合数据操作效率 一、值的数据类型 Redis “快”取决于两方面,一方面,它是内存数据库,另一方面,则是高效的数据结构。 Redis 键值对中值的数据类型,也…

被极氪“背刺”新能源汽车车主,你可以说不

文 魏强 导语:谁也改变不了不断被“背刺”的命运。 8月13日晚,极氪召开发布会主推两款改款车——2025款极氪007升级了第二代金砖电池(磷酸铁锂)、标配了激光雷达和两颗Orin X芯片、全系降价2-3万元。2025款极氪001智驾芯片从Mob…

Artifactory集成LDAP示例

LDAP在企业软件身份认证中起到了非常关键的作用,给企业内用户带来了非常多的便利,JFrog 平台支持针对开箱即用的 LDAP 服务器对用户进行身份验证。下面我们一起看下Artifactory如何集成LDAP,本示例以OpenLDAP为例。 1.快速安装OpenLDAP doc…

SqlSugar详解-国产ORM框架

ORM (Object-Relational Mapping) 概念 ORM 是一种程序技术,用于将关系型数据库中的数据映射到对象上。 主要目的是简化数据库操作,使得开发人员可以像操作对象一样来操作数据库。 原理 数据表与类的映射:数据库中的表对应为类。 记录与对象…

灵办AI助手Chrome插件全面评测:PC Web端的智能办公利器

探索灵办AI助手在Mac OS上的高效表现,支持多款主流浏览器,助你轻松应对办公挑战 文章目录 探索灵办AI助手在Mac OS上的高效表现,支持多款主流浏览器,助你轻松应对办公挑战摘要引言开发环境介绍核心功能评测1. 网页翻译与双语对照 …

【祖孙询问】

问题 代码 #include <bits/stdc.h> using namespace std; const int N 4e410; vector<int> edge[N]; int p[N][20], d[N]; void dfs(int from, int u) {for(auto to : edge[u]){if(to from) continue;d[to] d[u] 1;p[to][0] u;dfs(u, to);}} void init() {fo…

mysql主从同步遇到的问题

1&#xff0c;主库data文件复制到从库&#xff0c;之后主库要同步的实例data一定不要在修改&#xff1b; 1.1&#xff0c;修改之后就要重新覆盖一遍 2&#xff0c;如果状态不对&#xff1a;一定要查看日志&#xff1b;比如slave_io_state是空时&#xff0c;需要查看日志 2.1&a…

使用百度文心智能体创建AI旅游助手

百度文心智能体平台为你开启。百度文心智能体平台&#xff0c;创建属于自己的智能体应用。百度文心智能体平台是百度旗下的智能AI平台&#xff0c;集成了先进的自然语言处理技术和人工智能技术&#xff0c;可以用来创建属于自己的智能体应用&#xff0c;访问官网链接&#xff1…

查看电脑连接过的wifi密码

netsh wlan show profiles netsh wlan show profile name"8821" keyclear

用Python实现9大回归算法详解——01. 线形回归算法

1. 线性回归的基本概念 线性回归是一种最基本的监督学习算法&#xff0c;用于预测因变量&#xff08;目标变量&#xff09;和一个或多个自变量&#xff08;特征变量&#xff09;之间的关系。线性回归假设因变量与自变量之间的关系是线性的&#xff0c;即可以用以下形式的线性方…

写一个githubDemo

1.List组件 <template><div class"container"><!-- 展示用户列表 --><div class"row"><divv-show"info.users.length"v-for"(item, index) in info.users":key"item.id"><div class"…

使用Python对知识文本进行分块

使用大型语言模型时&#xff0c;切勿忽略文本分块的重要性&#xff0c;其对处理结果的好坏有重大影响。接下来介绍常用的一些文本分块方法。1.1 一般的文本分块方法 如果不借助任何包&#xff0c;直接按限制长度切分方案。 text " 我是一个名为 chatGLm3-68 的人工智能助…

wps云字库字体下载到电脑

下拉字体菜单栏--->查看更多云字体 进入后 云字库里的字体&#xff0c;都只能在wps在线使用。 但是&#xff0c;要想下载到自己的电脑上&#xff0c;安装到电脑系统字体库中&#xff0c;WIN7的字体安装系统路径&#xff1a;C:\Windows\Fonts&#xff0c;以供电脑软件adobe …

Spring IoCDI(上)--初识

1. IoC & DI ⼊⻔ 1.1 Spring 是什么 通过前⾯的学习, 我们知道了Spring是⼀个开源框架, 他让我们的开发更加简单. 他⽀持⼴泛的应⽤场 景, 有着活跃⽽庞⼤的社区, 我们⽤⼀句更具体的话来概括Spring, 那就是: Spring 是包含了众多⼯具⽅法的 IoC 容器 1.1.1 什么是容器…