『 Linux 』进程概念

文章目录

    • 🗞️ 冯诺依曼体系结构 🗞️
      • 📃 为什么在计算机当中需要使用内存充当中间介质而不使CUP与外设直接进行交互?
      • 📃 CPU如何读取数据
    • 🗞️ 操作系统(Operating system) 🗞️
      • 📃 操作系统如何对资源进行管理
    • 🗞️ 进程 🗞️
      • 📃 进程是如何被管理的?
      • 📃 如何观察进程?
      • 📃 以文件目录的形式观察进程
      • 📃 进程标识符
      • 📃 父进程

🗞️ 冯诺依曼体系结构 🗞️

在这里插入图片描述

数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。

存储器:

在当前的计算机组成当中,存储方式分为内存存储与硬盘存储等;

与之不同的是硬盘为非易失性存储器(断电不易失),内存为易失性存储器(断电易失);

输入设备:

在生活当中, 键盘,摄像头,话筒,磁盘(读取文件),网卡等都为输入设备;

输出设备:

显示器,音响,磁盘(写入文件)网卡等都为输出设备;

CPU(中央处理器):

  • 运算器

    算逻运算 - 算术运算(±运算等)与逻辑运算(if,else)

  • 控制器

    CUP是可以相应外部事件的(协调外部就绪事件,例如将数据拷贝至内存当中)


📃 为什么在计算机当中需要使用内存充当中间介质而不使CUP与外设直接进行交互?

在各个存储介质当中,不同类型的存储介质的读取速度也不同

响应速度分别为:

CPU&&寄存器 > 内存 > 磁盘/SSD > 光盘 > 磁带

在最早的计算机当中是不存在内存的;

在这里插入图片描述

也就是外设与CUP之间直接进行交互;

但是实际上在计算机当中,最影响计算机整体速度的并不是计算机中最快的,而是最慢的;

若是使外设直接与CPU直接进行交互将会导致外设的速度大大拖慢CPU的速度导致计算机整体效率变慢;

而若是在计算机当中添加存储器后,可以使得外设中的数据通过操作系统率先load(加载)至存储器中,而又由于存储器与CPU的读写速度相差跨度并不是特别大,所以当数据加载至存储器当中CPU可以直接访问存储器从而加快计算机整体的速度;


📃 CPU如何读取数据

以当前大环境而言,CPU一般读取数据(数据,代码)都是从内存之中进行读取;所以若是以数据的角度进行观察:CPU不和外设直接进行交互;

当CPU需要处理数据时会首先将外设中的数据加载到内存当中(外设只与内存进行交互);

以这种方式可以进行一种分类

  • input

    将数据从外设(输入设备)加载至内存中;

  • output

    将数据从内存加载至外设(输出设备)当中;

当数据需要处理时数据首先会加载至内存,通过CPU读取内存数据并作出相应处理;

当数据处理完毕之后并不会直接从CPU转至外设(输出设备),会先将处理后的数据存放回内存并让外设(输出设备)进行显示;


🗞️ 操作系统(Operating system) 🗞️

在这里插入图片描述

操作系统可以看作一个用来对软硬件资源进行管理的软件;

硬件

硬件是整个计算机之中最基本的,任何操作系统都是基于硬件之上;

而在一个机器当中的所有硬件都是按照冯诺依曼体系结构进行存放,不存在杂乱无章;

驱动程序

而紧接着在硬件之上就是驱动程序,驱动程序也是系统软件部分的一部分,它的主要功能就是对硬件进行操作;

主要提供软件级别的对硬件操作的接口;

操作系统的主要工作分为两个方面:

  • 对上提供良好的使用环境;
  • 对下通过管理软硬件资源使计算机保持更高的稳定性;

📃 操作系统如何对资源进行管理

操作系统对资源进行管理时主要按先描述后组织的概念进行管理;

操作系统在整体中处于一个管理者的位置,而这里的先描述后组织的意思即为:

管理者将所有的被管理者以特定的结构进行描述,由于被管理者类型的不同,所以整体的结构也跟着不同;

由于大部分常见的操作系统都是由C/C++开发,所以可以将这个所谓的结构看成是一个结构体(被管理者可以看成类似实例化);

struct A{
    /*属性*/
};

而管理者正式通过这些对象的属性,根据需要的条件对资源进行操作和管理;


🗞️ 进程 🗞️

由于操作系统需要对软硬件资源都进行管理,当然这里的资源也包括进程;

从之前的知识点中可以总结出一条结论:当一个程序被运行时,必须将该程序先加载到内存当中,这是因为由于冯诺依曼体系结构规定CPU访问数据时或者要对数据进行对应操作时首先必需从内存中访问;

当然这句话说的并不全面,对于"当一个程序被运行时,必须将改程序先加载到内存当中",事实是如此,但这仅仅只是以硬件的角度进行观察,真正意义上来说,当一个程序被运行之后,将不能叫做程序,应该叫做"进程的一部分";

以Windows11为例,当我Ctrl+Alt+del并选择任务管理器时可以观察到许多进程;

在这里插入图片描述

根据用户的需要,用户可以通过这个任务管理器去结束相应的进程;

本质上操作系统并不具备直接管理程序的能力,但是操作系统中存在着一个进程管理;

当一个程序被运行起来之后,它将被加载进内存成为进程的一部分,而操作系统通过进程管理可以完成对这个进程的资源管理;

在Linux中也是如此,每当运行一个程序或者执行一条命令时都是将程序/命令加载进内存使其成为进程从而对该资源进行对应的管理;


📃 进程是如何被管理的?

在Linux中,可以同时运行多个程序或者同时执行多条命令的,当然这也意味着在Linux是可能同时存在大量的进程;

那么当Linux同时存在大量的进程时,操作系统该如何对进程这个资源进行管理;

其实很简单,在上文中我们提到的一个概念为 “先描述,后组织”;

操作系统对进程的管理也是如此;

在进程种有一种数据结构叫做PCB(Process Control Block),也可以称之为进程控制块,可以理解为进程属性的集合;

而在Linux下描述进程信息的PCB为task_struct,是以结构体的形式进行实现的;

当一个程序加载进内存成为进程时,操作系统将自动为这个进程创建一个PCB结构体对象,实现对这些进程的描述;相应的这个结构体内存着对应进程的所有属性,而操作系统将用某种数据结构将这些结构体对象链接在一起,从而使得能够通过不同的属性对进程进行对应的资源管理;

这就可以理解了为什么说"当程序被加载进内存的时候就成为了进程的一部分",因为只有加载进内存的程序(代码与数据) + 该进程所对应的PCB结构体这个整体才能称为是一个进程;

在这里插入图片描述

在PCB种包含的结构体化的数据属性中包含了:

  • 标识符

    描述本进程的标识符;

  • 状态

    任务状态,退出代码等;

  • 优先级

    程序相对于其他进程的优先级;

  • 程序计数器

    程序中即将被执行的下一条指令的地址;

  • 内存指针

    程序对应的代码以及数据的位置信息;

  • 上下文数据

    进程执行时处理器的寄存器中的数据;

  • I/O状态

  • 记账信息

    可能包括处理器时间总和等各种信息;

  • 其他


📃 如何观察进程?

在上文中我们提到了进程有关的概念,那么在Linux中该如何观察进程?

  • 在Linux一般可以使用ps来观察进程;

在这里插入图片描述

但是ps只能观察当前窗口(终端)的进程;

若是想要观察所有的进程的话需要使用指令ps axj,当然也可以配合管道|grep来查到对应所需要的进程;

在这里插入图片描述

那么该如何更直观的观察到进程?

假设有一个.cpp文件,代码为:

#include<iostream>

using namespace std;
int main()
{
    while(1) cout<<"进程1"<<endl;
}

并执行这段程序;

此时就已经是执行了一个进程,当然可以使用ps命令的方式观察这个进程;

使用ps axj | head -1 && ps axj | grep myproc查询该进程:

在这里插入图片描述

该进程就已经跑了起来;

此时在终端使用ctrl+C结束该进程并再次查询该进程时发现该进程不存在;

在这里插入图片描述


  • 在Linux中除了用ps命令以外还可以使用top命令;

top命令在Linux中可以看作是Windows下的任务管理器;


📃 以文件目录的形式观察进程

  • 除了可以以上面的方式观察进程以外还可以以目录文件的形式观察进程;

以上面的方式我们再次运行那个程序,将进程跑起来;

  1. 先使用ps的方式查看进程的对应信息;

    在这里插入图片描述

    将会看到PID与PPID;

    我们首先观察23460的这个进程(下面的进程为使用grep时的进程,在本次中可以不进行观察);

  2. 再使用ls查看目录/proc;

    在这里插入图片描述

    可以发现/proc目录下的文件就是一些进程;

  3. 再使用ll并使用grep来找当前目录下的PID23460的这个进程(此时进程还在运行当中);

    在这里插入图片描述

    当我们手动使用Ctrl+C将程序结束时再使用该指令查找该进程时将发现该进程已经不存在;

    在这里插入图片描述

但这并不说明进程在Linux中是以目录的形式存在,实际上/proc是Linux中的一个文件系统,而这个文件系统是一个伪文件系统,通过该文件系统可以访问进程的属性信息而已;

使用ll观察23460这个目录下的文件可以发现,在该目录下存在着两个文件;

在这里插入图片描述

这两个文件分别以cwdexe开头;

  • exe 后所跟的路径为,当前进程所对应程序所在的路径;

  • cwd 后所跟的路径为,当前进程的工作目录;

    当一个程序运行时,每个进程都将会有一个属性来保存当前自身所在的工作路径;


📃 进程标识符

在上面提到了关键字PID,而实际上PID即为进程的标识符;

每个进程所对应的PCB都将会存储这个进程标识符;

进程标识符是每个进程中独有的属性;

当然每个进程在每次运行时其PID都将不同;

在程序中也可以使用getpid()函数来进行对当前进程PID的获取;

在这里插入图片描述

其中pid_t为操作系统中的一个数据类型,是一个无符号整型;

#include<iostream>
#include<sys/types.h>

using namespace std;
int main()
{
    while(1) cout<<"进程1 "<<"PID : "<<getpid()<<endl;
}

在这里插入图片描述

从这里可以看到这里所获取的PID与之前观察到的PID都不同,可以验证在上面所说的"每个进程在每次运行时其PID都将不同";

  • 除了以Ctrl+C的形式结束进程以外也可以使用kill -9 'PID'的形式结束进程;

    在这里插入图片描述


📃 父进程

除了进程以外还有父进程,也可以在程序中使用getppid()函数来获取该进程的父进程的PID;

在这里插入图片描述

而实际上PPID即为bash(Bash 是一种命令行解释器和 shell 程序);

Shell通过创建子进程的方式来完成对应的任务;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OPC DA客户端工具Opc quick client使用

OPC DA客户端工具Opc quick client使用 什么是OPC OPC是工业控制和生产自动化领域中使用的硬件和软件的接口标准&#xff0c;以便有效地在应用和过程控制设备之间读写数据。O代表OLE(对象链接和嵌入)&#xff0c;P (process过程)&#xff0c;C (control控制)。 OPC服务器包括…

XSS 漏洞详解

XSS 漏洞详解 文章目录 XSS 漏洞详解漏洞描述漏洞原理漏洞场景漏洞评级漏洞危害漏洞验证漏洞利用防御方案典型案例 漏洞描述 XSS全名叫Cross Site Scripting(跨站脚本攻击)因为简写和css同名所以改名为XSS&#xff0c;该漏洞主要利用javascript可以控制html&#xff0c;css&am…

剪贴板劫持--PasteJacker的使用

启动 PasteJacker [1] Windows [2] Linux [3] Exit第一次是让我们选择要攻击针对的目标系统&#xff0c;这里以Windows系统为例&#xff0c;即我自己的物理机 因此键入 1 &#xff0c;回车 [1] Download and execute a msfvenom backdoor using certutil (Web delivery Past…

Python编程——模块、包和__init__.py

1. 模块 Python中的一个文件即为一个模块(Module)&#xff0c;一个模块引用另外一个模块的变量、函数或类时&#xff0c;使用import来导入。模块名即文件名。 如fibo.py 文件下有如下代码&#xff1a; def fib(n): # write Fibonacci series up to na, b 0, 1while a <…

JAVA使用Grafana和Loki抓取聚合日志

Grafana和Loki抓取聚合日志 适用范围配置常见问题参考文章 适用范围 Grafana是日志看板Loki是Grafana的一个插件用于收集日志promtail是Loki配套的抓取工具&#xff0c;放在目标服务器抓取日志 配置 日志服务器安装Grafana&#xff0c;傻瓜式下一步日志服务器启动Loki&#…

【hexo博客配置】hexo icarus主题配置

配置icarus 步骤一&#xff1a;下载icarus github网址&#xff1a;[hexo-theme-icarus](ppoffice/hexo-theme-icarus: A simple, delicate, and modern theme for the static site generator Hexo. (github.com)) 可以从这个网址上下载zip文件&#xff0c;解压后&#xff0c…

网络安全专业的就业方向有哪些?

网络安全专业的就业方向有哪些&#xff1f; 网络安全专业毕业生就业较多&#xff0c;可以从事计算机科学与技术、信息与通信、电子商务、互联网金融、电子政务等领域的相关工作。还可以从事政府机关事业单位、银行、保险等信息安全产品的研发、信息系统安全分析与设计、信息安…

LeetCode算法心得——全排列(回溯型排列)

大家好&#xff0c;我是晴天学长&#xff0c;排列型的回溯&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1) .全排列 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按…

Linux Hadoop平台伪分布式安装(Hive on Spark)

&#x1f4d4;Linux Hadoop 伪分布式安装(Hive on Spark) 安装目录 1. JDK2. Hadoop3. MysqlHive3.1 Mysql8安装3.2 Hive安装 4. Spark4.1 Maven安装4.2 Scala安装4.3 Spark编译并安装 5. Zookeeper6. HBase 版本概要&#xff1a; jdk&#xff1a; jdk-8u391-linux-x64.tar.gz…

消防站拍摄VR全景,“火焰蓝”让你的安全感拉满

今年全国消防日的主题是“预防为主、生命至上”&#xff0c;看着这些“火焰蓝”有没有将你的安全感拉满呢&#xff1f;近年来&#xff0c;消防力量的增强使得专业救援力量也逐渐加强&#xff0c;综合消防救援能力也在全面提升&#xff0c;通过VR全景拍摄消防站也是一个非常有意…

爆肝一文,走进大名鼎鼎的HTTP协议(通俗白话+三万字超详细+抓包工具使用)

文章目录 前言1. HTTP 是什么1.1 HTTP 完整请求流程1.2 理解 HTTP 协议的工作过程 2. HTTP 协议格式2.1 抓包工具的使用2.2 抓包工具的原理2.3 抓包结果2.4 协议格式总结 3. HTTP 请求(Request)3.1 认识 URL(Uniform Resource Locator)URL 基本格式关于 URL encode 3.2 认识请求…

[云原生案例2.3 ] Kubernetes的部署安装 【多master集群架构高可用 ---- (二进制安装部署)】

文章目录 1. Kubernetes多Master集群高可用方案1.1 多节点Master高可用的实现过程1.2 实现高可用方法 2. 新Master节点的部署2.1 前置准备2.2 系统初始化操作2.2.1 关闭防火墙、selinux和swap分区2.2.2 修改主机名&#xff0c;添加域名映射2.2.3 修改内核参数2.2.4 时间同步 2.…

【23真题】简单!原题很多!211!

今天分享的是23年内蒙古869的信号与系统试题及解析。 本套试卷难度分析&#xff1a;22年内蒙古大学869考研真题&#xff0c;若有需要&#xff0c;戳这里自取&#xff01;该院校是考察通信原理信号的&#xff0c;从信号部分来看&#xff0c;本套试题内容难度中等偏下&#xff0…

css:文本对齐属性vertical-align实现化学元素上标下标的显示

文档 https://developer.mozilla.org/zh-CN/docs/Web/CSS/vertical-align 语法 vertical-align: <value>;可选值&#xff1a; sub&#xff1a;使元素的基线与父元素的下标基线对齐。 super&#xff1a;使元素的基线与父元素的上标基线对齐。 text-top&#xff1a;使…

PMP项目管理师证书到底是个什么证

项目管理师 PMP是指项目管理专业人士资格认证&#xff0c;PMP的全称是 Project Management Professional&#xff0c;它是由美国项目管理协会(PMI)发起的&#xff0c;严格 评估项目管理人员知识技能是否具有高品质的资格认证考试。 PMP是目前项目管理界含金量较高的证书&…

2023/11/10 JAVA学习

取文件夹本身大小 打开文件 文件改名案例 输出流,文件依照你起的文件名自动创建 哪个流后创建,哪个流先关闭 虚拟机退出跑不了 finally别返回值

NSS [鹏城杯 2022]压缩包

NSS [鹏城杯 2022]压缩包 考点&#xff1a;条件竞争/逻辑漏洞&#xff08;解压失败不删除已经解压文件&#xff09; 参考&#xff1a;回忆phpcms头像上传漏洞以及后续影响 | 离别歌 (leavesongs.com) 源码有点小多 <?php highlight_file(__FILE__);function removedir($…

多彩的树 -----题解(状压dp + 容斥原理)

目录 多彩的树 题目描述 输入描述: 输出描述: 输入 输出 思路解析&#xff1a; 代码实现&#xff1a; 多彩的树 时间限制&#xff1a;C/C 5秒&#xff0c;其他语言10秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld 题目描述 …

【算法练习Day42】买卖股票的最佳时机 III买卖股票的最佳时机 IV

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 买卖股票的最佳时机 III买卖…

二十四、W5100S/W5500+RP2040树莓派Pico<PHY的状态模式控制>

文章目录 1. 前言2. 相关简介2.1 简述2.2 原理2.3 优点&应用 3. WIZnet以太网芯片4. PHY模式配置测试4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 测试现象 5. 注意事项6. 相关链接 1. 前言 W5100S/W5500不仅支持自动PHY自动协商&#xff0c;而且支持用户自定义…