理解linux进程

news2024/9/27 17:33:16

基本概念

课本概念:程序的一个执行实例,正在执行的程序等

内核观点:担当分配系统资源(CPU时间,内存)的实体

windows上的进程

由上图可以看出在OS中进程可以同时存在并且非常多

大概理解进程

 

进程=内核task_struct结构体+程序的代码和数据

 理解一个概念:如何理解进程动态运行?

只要我们的进程task_struct在不同的队列中就可以访问不同的资源

 PCB

进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合.

PCB也叫进程控制块,这个数据结构是在操作系统内部进行管理进程的,一般叫他内核数据结构

我们都知道开机是在加载OS,刚开始OS也是在磁盘中是一堆二进制文件,等待的时间是将磁盘中的文件拷贝到内存中,以便计算机可以开始执行操作系统的代码并进行初始化

在操作系统启动的时候,通常会创建一个特殊的进程,这个进程通常被称为 init 进程。init 进程是在操作系统引导过程中由内核启动的,它是用户空间中的第一个进程,负责系统的初始化和进程管理。

操作系统在启动时会创建 init 进程的进程控制块(PCB),用于描述和管理这个特殊进程的信息。进程控制块(PCB)是操作系统用来管理进程的数据结构,它包含了进程的状态、程序计数器、堆栈指针、内存分配情况、打开文件的状态等信息。

加强认识:OS对于进程管理是通过PCB进行管理的而不是将你的可执行程序加载到内存中对你的可执行程序管理

 为什么要有PCB?因为OS要对进程管理

 task_ struct内容分类

task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。

进程的task_struct本身内部的属性有哪些?

1. 启动   

./xxx 本质就是让系统创建进程并运行----我们自己写的代码形成的可执行==系统命令==可执行文件。在linux中运行的大部分操作其实本质就是运行进程。

在windows中双击就是运行进程,在linux中./就是运行进程


2. 每一个进程都要有自己的唯一标识符,叫做进程pid

3. ctrl+c在用户层面上就是终止进程,kill -9 pid 可以直接杀死进程

多次运行发现pid是变得而ppid不变
进程每次启动,对应的pid都不一样是正常的

 

 为什么要创建子进程?

我们想让子进程执行和父进程不一样的代码(由于机器的限制部分功能无法展示)


fork之后父子代码都是共享的,只不过进行判断了所以父与子运行不同


当调用 fork() 时,操作系统会复制当前的进程,包括它的地址空间、文件描述符等,然后在新的进程中继续执行代码。在调用 fork() 后,会出现两个几乎完全相同的进程:父进程和子进程。这两个进程的唯一区别在于 fork() 的返回值不同:

  • 在父进程中,fork() 返回子进程的进程 ID。
  • 在子进程中,fork() 返回 0。

 fork()会有两个返回值,返回两次

fork()也是函数只不过是由os提供的,可以这样理解:在fork内部我们已经把子进程创建可以被调度了所以return两次

 进程一定要具有独立性即使我俩是父子也不影响,所以父子进程有自己独立的task_struct(也有自己独立的pid),而代码是只读的,数据原则是要分开的

ls /proc当你执行 ls /proc 命令时,会列出一系列以数字命名的目录,每个目录代表一个正在运行的进程或者系统相关的信息


ls /proc/x -d查看具体

ls -l /proc/x 查看正在运行的进程可以看出有exe和cwd

exe 是一个指向正在执行的进程可执行文件的符号链接。通过查看这个符号链接,你可以知道该进程当前正在执行的可执行文件的路径

cwd 是一个指向进程当前工作目录的符号链接。通过这个符号链接,你可以了解到该进程当前的工作目录路径。

 由于机器有限部分内容无法展示

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

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

相关文章

SpringSecurity两种验证方式及调用流程

一、HttpBasic方式 <security:http-basic/> 二、Formlogin方式 <security:form-login login-page"/userLogin" /> 三、SpringSecurity执行流程

OpenCV的常用数据类型

OpenCV涉及的常用数据类型除包含C的基本数据类型,如&#xff1a;char、uchar&#xff0c;int、unsigned int,short 、long、float、double等数据类型外, 还包含Vec&#xff0c;Point、Scalar、Size、Rect、RotatedRect、Mat等类。C中的基本数据类型不需再做说明下面重点介绍一下…

redisson解决redis服务器的主从一致性问题

redisson解决redis的主节点和从节点一致性的问题。从而解决锁被错误获取的情况。 实际开发中我们会搭建多台redis服务器&#xff0c;但这些服务器分主次&#xff0c;主服务器负责处理写的操作&#xff08;增删改&#xff09;&#xff0c;从服务器负责处理读的操作&#xff0c;…

全国保护性耕作/常规耕作农田分类数据集

基于Sentinel-2遥感产品&#xff0c;使用来自文献调研和目视解译产生的保护性/常规耕作样本点&#xff0c;通过交叉验证方法训练随机森林分类器&#xff0c;生成了2016-2020年全国保护性耕作/常规耕作农田分类数据集。分类代码&#xff1a;0值代表非农田&#xff0c;1值表示第一…

掌握React中的useEffect:函数组件中的魔法钩子

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Django 模版基本语法

Django学习笔记 模版语法 本质&#xff1a;在HTML中写一些占位符&#xff0c;由数据对这些占位符进行替换和处理。 views.py def page2(request):#定义一些变量将变量传送给templates中的html文件name1 sallyname2 yingyinghobbys [swimming,badminton,reading]person {…

数学建模【对粒子群算法中惯性权重和学习因子的改进】

一、改进原因 这是前面 数学建模【粒子群算法】 中的一部分&#xff0c;这里提到了w存在的一些问题&#xff0c;那么本篇介绍一些方法对w和因子进行一些改进&#xff0c;提高粒子群算法的效率和准确度。 二、改进方法 1.线性递减惯性权重 惯性权重w体现的是粒子继承先前的速度…

如何获取用户请求的真实ip,并返回访问者的ip地理位置?node,vue

一、获取真实IP 方式1、前端调用免费公共接口获取 前端获取访问者的真实的外网ip,可以通过调用接口https://api.ipify.org/来获取。你也可以直接在网页上访问它来看自己的外网ip。 ipify介绍&#xff1a; ipify是一个免费的公共 API&#xff0c;用于获取设备的公共 IP 地址。…

备考2025年AMC8数学竞赛:吃透2000-2024年600道AMC8真题就够

我们继续来随机看五道AMC8的真题和解析&#xff0c;根据实践经验&#xff0c;对于想了解或者加AMC8美国数学竞赛的孩子来说&#xff0c;吃透AMC8历年真题是备考最科学、最有效的方法之一。 即使不参加AMC8竞赛&#xff0c;吃透了历年真题600道和背后的知识体系&#xff0c;那么…

conda pack环境迁移并下载安装离线包

背景 训练服务器为了安全起见&#xff0c;限制不能联网&#xff0c;无法直接创建虚拟环境及安装模型的依赖库&#xff0c;所以需要把另一台测试服务器已经部署好的虚拟环境迁移到训练服务器上&#xff0c;并在不能联网的情况下安装一些离线包。过程记录如下记录。 一、环境迁移…

指针篇章(3)-(指针之间的区别)

学习目录 ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————…

微信小程序开发系列(二十六)·小程序运行机制(启动、前后台状态、挂起、销毁)和小程序更新机制

目录 1. 小程序运行机制 1.1 启动 1.2 前台和后台状态 1.3 挂起 1.4 销毁 2. 小程序更新机制 1. 小程序运行机制 1.1 启动 小程序启动可以分为两种情况&#xff0c;一种是冷启动&#xff0c;一种是热启动。 冷启动&#xff1a;如果用户首次打开&#xff0c;或小…

mysql的trace追踪SQL工具,进行sql优化

trace是MySQL5.6版本后提供的SQL跟踪工具&#xff0c;通过使用trace可以让我们明白optimizer&#xff08;优化器&#xff09;如何选择执行计划。 注意&#xff1a;开启trace工具会影响mysql性能&#xff0c;所以只适合临时分析sql使用&#xff0c;用完之后请立即关闭。 测试数…

电脑中缺失EMP.dll文件怎么办,解决EMP.dll丢失问题的有效方法分享

当你的电脑出现由于找不到emp.dll无法继续执行代码的提示&#xff0c;那你要怎么办呢&#xff1f;其实解决方法还是挺多的&#xff0c;今天就来给大家详细的说说emp.dll这方面的信息吧。 一、电脑为什么会出现emp.dll丢失 不完全卸载软件&#xff1a;在卸载程序时&#xff0c;…

小迪安全37WEB 攻防-通用漏洞XSS 跨站权限维持钓鱼捆绑浏览器漏洞

#XSS跨站系列内容:1. XSS跨站-原理&分类&手法 XSS跨站-探针&利用&审计XSS跨站另类攻击手法利用 XSS跨站-防御修复&绕过策略 #知识点&#xff1a; 1、XSS 跨站-另类攻击手法分类 2、XSS 跨站-权限维持&钓鱼&浏览器等 1、原理 指攻击者利用…

可商用的HuoCMS建站系统,基于thinkphp内核且免费开源

HuoCMS是一套内容管理系统&#xff0c;同时也是一套适用于企业官网建设的系统&#xff0c;能够帮助用户快速搭建个人网站。满足企业站、外贸站、个人博客等多种建站需求。HuoCMS的优势在于可以通过统一后台管理多个网站的内容&#xff0c;方便维护和共享不同内容在不同网站上的…

关于playbook中when条件过滤报The conditional check ‘result|failed‘ failed的问题

问题现象 在使用plabook中的when做过滤脚本如下&#xff1a; --- - hosts: realserversremote_user: roottasks:- name: Check if httpd service is runningcommand: systemctl status httpdregister: resultignore_errors: True- name: Handle failed service checkdebug:ms…

离线数仓(六)【ODS 层开发】

前言 1、ODS 层开发 ODS层的设计要点如下&#xff1a; &#xff08;1&#xff09;ODS层的表结构设计依托于从业务系统同步过来的数据结构&#xff08;JSON/CSV/TSV&#xff09;。 &#xff08;2&#xff09;ODS层要保存全部历史数据&#xff0c;故其压缩格式应选择高压缩比的…

Android 学习之追踪应用的安装情况

先上结论&#xff0c;急用的话直接看结论 结论一、借助 API 读取安装信息&#xff0c;然后上报二、借助手动埋点&#xff0c;然后上报三、对比 前提过程 结论 一、借助 API 读取安装信息&#xff0c;然后上报 通过 PackageManager 的 API&#xff0c;我们可以得知自身应用安装…

基于VSCode安装Node.js开发环境

根据官网介绍&#xff0c;Node.js 是一个免费的、开源的、跨平台的JavaScript实时运行环境&#xff0c;允许开发人员在浏览器之外编写命令行工具和服务器端脚本. Node.js框架由于是采用JavaScript语法进行调用的&#xff0c;因此Node.js环境除了用来编写调试Node.js代码&#…