当前位置: 首页 > news >正文

Linux——进程概念

什么是操作系统

操作系统管理各种计算机硬件、为应用程序提供基础、并且充当计算机硬件与用户之间的中介。

冯诺依曼体系

在这里插入图片描述
这里的存储器指的是内存不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。

举例:使用printf输出hello world在计算机内部是如何执行的,首先,键盘上编写C语言文件,然后再载入到内存中运算器和控制器对该文件进行处理(忽略处理细节,然后再执行C语言文件把hello world输出到屏幕上

操作系统如何对软硬件资源进行管理:

操作系统对硬件做管理一句话–先数据结构再算法,对软硬件资源建立数据结构模型,再对该模型设计算法实现管理

如何理解进程?

在多道程序环境下,允许多个程序并发执行,此时它们将失去封闭性,并具有间断性及不可再现性的特征。为此引入了进程的概念,以便更好地描述和控制程序的并发执行,实现操作系统的并发性和共享性

  1. 间断性:并发程序具有“执行-暂停–执行”这种间断性的活动规律。
  2. 失去封闭性:多个程序共享系统中的资源,这些资源的状态将由多个程序来改变,致使程序之间相互影响。
  3. 不可再现性:在初始条件相同的情况下,程序的执行结果依赖于执行的次序。程序执行的结果不确定。如何理解?在windows中你用的软件运行起来都叫进程,你将一张图片发给的好友a,这是你使用软件的结果,这个结果取决于你。而不是取决于程序。
  4. 并发性:多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为 并发
    在这里插入图片描述

PCB(Process Conctrl Block)

可以简单理解为一个记录进程属性的集合(是一个C语言结构体)
举例:使用printf输出hello world在计算机内部是如何执行的,首先,键盘上编写C语言文件,然后再载入到内存中运算器和控制器对该文件进行处理(忽略处理细节),然后再执行C语言文件把hello world输出到屏幕上,现在多一个hello linux的程序。会怎么样去执行。
先简单的讲述一下:首先,会对两个程序生成两个对应的PCB结构体,并且里面包含我们编写的代码和数据(如何连接、存储暂不深究),所以一个进程 = PCB + 该进程代码和数据。这样操作系统才可以分辨出那个是hello world,hello linux。以及执行后续操作。
在这里插入图片描述
注意:在linux中的PCB被定义为task_struct,他不是单纯的一种结构,而是多种结构嵌合,这里先理解为链式结构

查看进程

Linux中的/proc目录中存放着每一个进程目录和内核文件
Linux系统中查看父进程ID,进程ID,进程组ID,会话ID的方法:ps ajx
我们可以输入ps ajx指令看到对应进程的pid(每一个进程独有的id,相当于他们的身份证号码)
在这里插入图片描述

  1. PID:进程ID,是Linux操作系统用来唯一标识一个进程的数字。
  2. PPID:父进程ID,表示创建当前进程的父进程的ID。
  3. PGID:进程组ID,表示该进程所属的进程组的ID。
  4. SID:会话ID,表示该进程所属的会话的ID。一个会话可以包含多个进程组,而一个进程组只能属于一个会话。
  5. TTY:终端类型,表示该进程是在哪个终端上运行的。如果进程是在后台运行的,这个字段可能显示为 ?。
  6. TPGID:前台进程组ID,如果该进程是在前台运行的,这个字段表示该进程所属的前台进程组的ID。
  7. STAT:状态,表示进程的当前状态。常见的状态(后面进程状态会讲)
  8. TIME:CPU时间,表示该进程占用CPU的总时间。
  9. COMMAND:命令,表示启动该进程的命令行。PID:进程ID,是Linux操作系统用来唯一标识一个进程的数字。

每一个进程关闭后,重新开启,得到的PID是与之前的PID不一致
当程序作为进程开始执行时,会在/proc 文件夹中新建一个目录,目录的名字为该进程的PID,在该文件夹中会有两个快捷方式(暂时这么理解) exe和cwd,exe->可执行程序 cwd->当前进程的工作目录–这也解释了之前在C语言阶段中,使用fopen函数时,为什么会自动生成文件在该目录一样,是因为在进程中记录了该路径,该路径也被称为当前进程的工作路径
在这里插入图片描述
这里的PID是程序在运行时,在进程中对应的ID,每一次重启ID都会产生不同的ID号
这里的PPID该进程的父进程,本质是bash(什么是bash?)–(bash是shel1的一种,shel1:是一个程序用于给用户与操作系统内核进行交互的接口,它允许用户输入命令,执行程序,操作文件和目录,以及管理系统资源)
我们每一次打开xshell写指令的时候,我们的系统会给我创建bash进程,因为bash是用于对操作系统交互的接口,所有的指令、程序的父进程都是bash,只负责命令行解释给操作系统(翻译官),每一个指令或自己写的程序都是子进程,执行出问题的时候只会影响子进程。

如何创建进程?

使用fork函数创建子进程,使用./可执行文件,或者使用bash指令即可创建进程(创建进程可以理解为运行程序)

fork函数

在这里插入图片描述
Q1:为什么fork要给子进程返回0,给父进程返回子进程pid?
返回不同的返回值是为了区分不同的执行流,执行不同的代码,而且子进程是要被父进程管理的,他结束了要告诉父进程他结束了,不然会导致成为僵尸进程(在后面进程状态中会讲到)
Q2:一个函数是如何做到返回两次的?如何理解?
在fork函数内部实现了创建子进程,因为父子进程的代码是共享的,我们就可以像旁边的那里一下对id做if然后实现返回两个不同的值
Q3:fork函数,究竟在干什么?
1.进程 = 内核数据结构 +代码和数据
2.fork()函数后的代码是共用的在下面共用的代码中肯定有同名定义的变量,其实对于这些变量而言,系统会对他们做写时拷贝,只有子进程用到的时候才会对该数据做写时拷贝,为子进程创建多一份
在这里插入图片描述

为什么这里的after fork被执行两次?

是因为在fork之后,该程序创建了子进程,而子进程与父进程的代码是共用的,这样在执行父进程的时候打印了一次,执行子进程的时候又打印了一次

在这里插入图片描述

为什么这段代码可以同时让两个条件判断成立?

因为在fork()函数过后,就多了一个子进程而子进程的的pid返回值是0,所以子进程去执行了id==0的那一部分,而父进程执行了id>0的部分。这里不禁有一个疑问?一个变量id是如何接收两个值的呢?在后面地址空间会讲。

相关文章:

Linux——进程概念

什么是操作系统 操作系统管理各种计算机硬件、为应用程序提供基础、并且充当计算机硬件与用户之间的中介。 冯诺依曼体系 这里的存储器指的是内存不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)外设(输入或输出设备)要…...

【H2O2|全栈】关于HTML(1)认识HTML

HTML相关知识 目录 前言 准备工作 WEB前端是什么? HTML是什么? 如何运行HTML文件? 标签 概念 分类 双标签和单标签 行内标签和块标签 HTML文档结构 预告和回顾 UI设计相关 Markdown | Md文档相关 项目合作管理相关 后话 前…...

Oracle(111) 如何使用RMAN备份数据库?

使用 RMAN(Recovery Manager)备份 Oracle 数据库是确保数据安全和可恢复性的关键步骤。下面是详细的指导和代码示例,展示如何使用 RMAN 进行数据库备份。 1. 准备工作 在开始备份之前,需要确保以下几点: 已安装并配…...

linux字符设备驱动程序

字符设备驱动程序简介  linux系统中万物皆文件,驱动程序加载后会在/dev目录下生成一 个对应的文件,如/dev/led。应用程序就是先用open打开该文件, 用write控制led的亮灭,用read读取led的亮灭,用完之后用close 关闭该…...

【pyhton】python如何实现将word等文档中的文字转换成语音

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

Claude Enterprise推出计划

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

【前端】CSS控制style样式失效

在CSS中,可以通过几种方式控制或禁用特定的style样式。 使用all: unset来重置所有可继承的属性,并清除所有的样式: .element {all: unset;} 使用inherit值来使属性获取其父元素的值: .element {color: inherit;font-size: inh…...

How can I load the openai api configuration through js in html?

题意:怎样在HTML中通过JavaScript加载OpenAI API配置 问题背景: I am trying to send a request through js in my html so that openai analyzes it and sends a response, but if in the js I put the following: 我正在尝试通过HTML中的JavaScript发…...

Pipeline流水线通过git拉取Jenkinsfile报错 error: RPC failed; result=22, HTTP code = 404

Pipeline流水线通过git拉取Jenkinsfile报错 error: RPC failed; result22, HTTP code 404 在学习共享库时使用通过git拉取jenkinsfile时,报错在排查gitlab服务状态,网络通讯,防火墙规则以及Jenkins凭据均可以正常使用,最后发现的…...

【与C++的邂逅】--- string容器使用

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 与C的邂逅 本篇博客我们将来了解string容器本身以及接口的使用。 string是串,本质是一个字符数组,可以对其进行增删查改。 &am…...

1-18 平滑处理——高斯滤波 opencv树莓派4B 入门系列笔记

目录 一、提前准备 二、代码详解 cv2.GaussianBlur函数用于对图像进行高斯滤波。高斯滤波是一种平滑图像的技术,用于减少噪声和细节。函数的三个参数如下: 三、运行结果 四、完整工程贴出 一、提前准备 1、树莓派4B 及 64位系统 2、提前安装opencv库…...

小爱打工,你躺平!让「微信AI小助理」接管你的文件处理,一个字:爽!

前两天,搞了个微信 AI 小助理-小爱(AI),爸妈玩的不亦乐乎。 零风险!零费用!我把AI接入微信群,爸妈玩嗨了,附教程(下) 最近一直在迭代中,挖掘小爱的无限潜力: 链接丢给…...

管理学习(一)马云《赢在中国》创业演讲整理

目录 一、小公司也需要制度二、不要害怕冒险三、创业者要的不是技术,而是胆识四、不要惧怕和大企业竞争五、理念不一样,老板永远是对的六、要真实地为客户创造价值七、跟风险投资谈判,说到要做到八、风险投资,只能帮你不能救你九、…...

Opencv中的直方图(2)计算图像的直方图函数calcHist()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算一组数组的直方图。 函数 cv::calcHist 计算一个或多个数组的直方图。用于递增直方图bin的元组的元素是从相同位置的相应输入数组中获取的。…...

Buzzer:一款针对eBPF的安全检测与模糊测试工具

关于Buzzer Buzzer是一款功能强大的模糊测试工具链,该工具基于Go语言开发,可以帮助广大研究人员简单高效地开发针对eBPF的模糊测试策略。 功能介绍 下面给出的是当前版本的Buzzer整体架构: 元素解析: 1、ControlUnit&#xff1a…...

若依框架登录鉴权详解(动态路由)

若依框架登录鉴权:1.获取token(过期在响应拦截器中实现),2.基于RBAC模型获取用户、角色和权限信息(在路由前置守卫),3.根据用户权限动态生成(从字符串->组件,根据permission添加动…...

孤儿进程、僵尸进程、守护进程(精灵进程)

目录 一、孤儿进程 二、僵尸进程 三、守护进程&#xff08;精灵进程&#xff09; 一、孤儿进程 定义&#xff1a;孤儿进程是指那些其父进程已经结束&#xff0c;但它们依然在运行的进程 创建一个孤儿进程&#xff1a; #include <stdio.h> #include <stdlib.h> #in…...

Centos9 网卡配置文件

1、Centos stream 9 网络介结 Centos以前版本&#xff0c;NetworkManage以ifcfg格式存储网络配置文件在/etc/sysconfig/networkscripts/目录中。但是&#xff0c;Centos steam 9现已弃用ifcfg格式&#xff0c;默认情况下&#xff0c;NetworkManage不再创建此格式的新配置文件。…...

ios免签H5

1、windows下载mobileconfig文件制作工具&#xff0c;可在csdn搜索iPhone_Mobileconfig_Tool下载安装&#xff1b;IOS 从APP Store 下载Apple Configurator 2 2、用申请的域名SSL证书给mobieconfig文件签名&#xff0c;最好下载Apache证书&#xff0c;里面包含 AE86211.crt…...

RedHat9.x-基本操作

本例以RedHat9.3为例 安装ifconfig命令 # dnf -y install net-tools 安装图形化 # dnf -y groupinstall "Server with GUI" 安装tmux # dnf -y install tmux -- screen已弃用 network-scripts 已弃用...

Phi-4-mini-reasoning部署教程:容器化打包(Dockerfile)+ NVIDIA Container Toolkit

Phi-4-mini-reasoning部署教程&#xff1a;容器化打包&#xff08;Dockerfile&#xff09; NVIDIA Container Toolkit 1. 项目概述 Phi-4-mini-reasoning是微软推出的3.8B参数轻量级开源模型&#xff0c;专为数学推理、逻辑推导、多步解题等强逻辑任务设计。这款模型主打&quo…...

超高压输电线路空载运行时的电压升高现象解析

1. 为什么空载时线路末端电压会升高&#xff1f; 第一次接触超高压输电线路时&#xff0c;很多工程师都会对这个现象感到困惑&#xff1a;明明没有接任何用电设备&#xff0c;为什么线路末端的电压反而比始端更高&#xff1f;这就像往一根长长的水管里注水&#xff0c;结果发现…...

高效获取B站视频:downkyi开源工具全方位使用指南

高效获取B站视频&#xff1a;downkyi开源工具全方位使用指南 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09…...

基于 LlamaFactory 与 LoRA 微调开源大模型:构建高效文本分类系统的实践指南

1. 为什么选择LlamaFactoryLoRA做文本分类&#xff1f; 最近在做一个政务工单分类项目时&#xff0c;我发现传统BERT模型遇到三个头疼问题&#xff1a;标注成本高&#xff08;需要上万条数据&#xff09;、领域迁移难&#xff08;换个场景就失效&#xff09;、小样本表现差&…...

Phi-3-mini-4k-instruct-gguf入门必看:q4-GGUF量化对中文语义保留的影响实测

Phi-3-mini-4k-instruct-gguf入门必看&#xff1a;q4-GGUF量化对中文语义保留的影响实测 1. 模型简介 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本&#xff0c;特别适合中文场景下的问答、文本改写、摘要生成等任务。这个经过量化的模型版本在…...

SpringBoot 3.2.0 项目里,如何优雅地引入 Flowable 7.1.0 工作流引擎?

SpringBoot 3.2.0 项目优雅集成 Flowable 7.1.0 工作流引擎实战指南 在微服务架构中引入工作流引擎&#xff0c;往往意味着需要在不破坏现有架构的前提下实现业务流程的自动化管理。本文将深入探讨如何在已具备MyBatis-Plus、Spring Cloud Alibaba等技术栈的SpringBoot 3.2.0项…...

Windows 11 + CUDA 12.1 保姆级教程:手把手搞定Detectron2环境搭建(含Git加速与权限避坑)

Windows 11 CUDA 12.1 终极指南&#xff1a;零障碍搭建Detectron2开发环境 RTX 40系显卡用户注意了&#xff01;如果你正在Windows 11上尝试搭建Detectron2开发环境&#xff0c;却苦于找不到针对CUDA 12.1的完整解决方案&#xff0c;这篇指南将为你扫清所有障碍。不同于网上那…...

Ostrakon-VL终端入门指南:如何导出结构化JSON结果用于BI工具接入

Ostrakon-VL终端入门指南&#xff1a;如何导出结构化JSON结果用于BI工具接入 1. 认识Ostrakon-VL终端 Ostrakon-VL终端是一款专为零售与餐饮行业设计的智能图像识别工具&#xff0c;它将复杂的AI技术包装成一个充满游戏感的像素风格界面。这个终端基于Ostrakon-VL-8B多模态大…...

ZGC停顿时间为何突然飙升?3个被90%团队忽略的配置雷区曝光

第一章&#xff1a;ZGC停顿时间为何突然飙升&#xff1f;3个被90%团队忽略的配置雷区曝光 ZGC&#xff08;Z Garbage Collector&#xff09;以亚毫秒级停顿著称&#xff0c;但生产环境中频繁出现 10–50ms 甚至更高停顿&#xff0c;往往并非内存压力所致&#xff0c;而是源于几…...

如何快速上手AutoGPT-Next-Web:5分钟搭建专属AI助手

如何快速上手AutoGPT-Next-Web&#xff1a;5分钟搭建专属AI助手 【免费下载链接】AutoGPT-Next-Web &#x1f916; Assemble, configure, and deploy autonomous AI Agents in your browser.一键免费部署你的私人AutoGPT 网页应用 项目地址: https://gitcode.com/gh_mirrors/…...