【Linux】深入理解进程概念

这篇具有很好参考价值的文章主要介绍了【Linux】深入理解进程概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Linux】深入理解进程概念,Linux,linux,服务器,运维
【Linux】深入理解进程概念,Linux,linux,服务器,运维

个人主页:🍝在肯德基吃麻辣烫
我的gitee:Linux仓库
个人专栏:Linux专栏
分享一句喜欢的话:热烈的火焰,冰封在最沉默的火山深处


前言

本篇文章继上一篇的冯诺依曼体系结构和操作系统这两个软硬件的概念之后,开始讲解Linux下三座大山之一的进程

因为进程概念虽然不是很多,但比较难以理解,因为它离我们日常生活比较远,比较抽象,本文章以最平易近人的语言和生活中我们都熟悉的例子对进程进行剖析,希望这篇文章能进一步帮助你理解进程的概念,吃透Linux的其中一座大山。

废话不多说,我们现在开始。


浅谈进程概念

  • 进程到底是什么呢?

这里给出一个比较简单的理解:

一个加载到内存的程序就叫做进程。

正在运行的程序,也叫做进程。

我们可以这样理解,进程,进:进入,程:程序,进入内存的程序,就是进程。

自从我们理解冯诺依曼之后,程序加载到内存这件事情我们就可以轻松理解。前面我们讲过,操作系统是一款进行管理的软件。 既然操作系统是软件,那就应该也会被加载到内存中运行。我们平时所说的启动电脑,就是先启动操作系统,也就是将操作系统加载到内存中。

以我的电脑为例,当打开任务管理器时,下面一览无余的任务等,这些就是进程,正在运行的程序。【Linux】深入理解进程概念,Linux,linux,服务器,运维

1. 进程和操作系统的联系

其实,程序是一堆数据和代码,最先是被存放到磁盘中。我们知道启动电脑时,操作系统也会被加载到内存中运行,在内存中有一块空间属于操作系统自己的数据和代码。
【Linux】深入理解进程概念,Linux,linux,服务器,运维

当我们想要运行整个程序时,由于CPU只会和内存打交道,不会直接和磁盘交互,这就注定了程序想要运行必须加载到内存中,这个同时也遵守了冯诺依曼体系结构。


  • 这时候我们仔细想想,只能由一个程序能加载到内存里面吗?

其实并不是,我们玩电脑的时候,会同时启动几个软件,我们会一边看b站一边登录qq和微信,一边敲代码,这些都可以同时进行。

所以,一个操作系统,是可以同时运行多个进程的!

这就像大学里面有大一的,有大二的,有在实习的,有天天在宿舍打游戏的一样,一个操作系统要想同时运行那么多个进程,就必须将进程管理起来!

  • 操作系统如何管理进程呢?

还记得上篇文章那句贯穿整个Linux的话吗?

先描述,再组织

描述的过程就是让操作系统先认识进程,再将进程用一个struct结构体描述起来,然后将众多进程全部都具体化,而对于进程的管理无非就是多一个进程,少一个进程等等这些操作,所以操作系统再将进程组织起来,就能达到管理

2.描述进程的对象——PCB

从上面我们可以知道,任何一个程序,加载到内存时,操作系统对进程进行描述时,会把进程具象化成一个struct结构体,而这个结构体就是PCB,全称是Process Ctrl Block:进程控制块

怎么理解进程PCB?


  • 这里有一个问题:人是怎么认识一个事物的?

假如这里有一个苹果,我们都会说,这个苹果是圆的,是红色的,大大的一个东西,还是一个甜甜的水果。

又譬如对你大学舍友的描述,长得怎么样,两个眼睛扛着两片眉毛,一个鼻子,一张嘴巴,爱好什么,喜欢做什么等等。

可以看出来,这些描述一个事物,就是通过事物本身的属性来描述的!

其实我们对一个事物本身并不了解,而是通过该事物的大量属性来了解这个事物,当属性足够多时,这一堆属性的集合,就是目标事物本身!

所以描述进程的对象——PCB,就是进程属性的集合!


到这里我们再对程序加载到内存这件事情进一步详谈:

程序加载到内存中时:

  • 1.把数据和代码都加载到内存中
  • 2.同时创建描述该进程的PCB对象并加载到内存中

这就像是,大学新生考上了某所学校时,要证明我真正在那所学校了,就需要在学校的教务系统录入我的名字信息等等。也许该名同学还在放暑假,可是当学校教务系统有该同学的信息时, 就表明这名同学真正的来这所大学就读了。

深谈进程概念

从前面我们可以知道,一个程序加载到内存,一是程序本身的数据和代码加载到内存,二是操作系统创建了一个PCB对象并加载到内存

所以,单纯的数据和代码不叫进程,单纯的PCB对象也不叫进程,而是数据和代码 + 描述该进程的PCB结构体 = 进程!
1)进程的数据和代码是程序员写的
2)描述该进程的PCB结构体是操作系统维护的

可以想想,在学校中我们对学生的管理是看学生的及格率,挂科率,学分绩,宿舍号等属性进行管理的。

所以,操作系统对进程的管理并不是对数据和代码的管理,而是对描述该进程的PCB结构体进行管理!

因为这个内核PCB结构体就是该进程属性的集合!

【Linux】深入理解进程概念,Linux,linux,服务器,运维


可是,操作系统对进程进行管理,不只是要知道该进程的属性值,还要获取进程的数据和代码。因此,在描述该进程的PCB结构体中,一定有指向该进程数据和代码指针信息

就像管理学生,学校老师如何通过学生的属性去获取指向学生数据的 “ 指针信息 ”?

其实就是手机号。手机号是该学生的属性值,但是这个属性可以找到学生这个人!

以上就是关于操作系统如何对进程进行描述的过程。


3. 对进程的组织操作

通过上面的信息可以知道,操作系统会对多个进程进行描述,管理这些进程的时候就管理对应描述进程的PCB对象就可以了。

在PCB结构体中大概有这些信息:
【Linux】深入理解进程概念,Linux,linux,服务器,运维
前面说过,操作系统对进程的管理方式是:
先描述,再组织。

那么该如何对那么多的进程组织起来呢?
其实我们可以再PCB结构体中再加一个指针信息:

struct PCB* next,该指针指向下一个PCB结构体对象,如下图:
【Linux】深入理解进程概念,Linux,linux,服务器,运维

从而将操作系统对进程的管理转化成对一个链表的增删查改!

这个过程就是对进程进行组织的过程!

总结:进程 = 内核PCB数据结构 + 自己的代码和数据。
操作系统对进程的管理是先描述,再组织的过程;操作系统对进程的数据管理是被弱化的,更重要的是对进程的PCB结构体进行管理,然后将这一个个的PCB结构体连接起来,就形成了对链表的增删查改。


总结

本篇文章重点在于理解进程的概念就可以了,进程的相关内容比较多且难以理解,从进程概念入手是最合适的,后面会持续更新如何创建进程,进程的状态等详细的内容,更好地理解进程,贯穿整个Linux。文章来源地址https://www.toymoban.com/news/detail-634461.html

到了这里,关于【Linux】深入理解进程概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 蓝易云:Linux系统sshd命令 – openssh服务器守护进程

    sshd是Linux系统中的一个守护进程,它提供了远程登录服务和安全的文件传输功能。以下是sshd的详细教程。 1. 安装openssh-server 在Debian/Ubuntu上安装openssh-server命令如下: sudo apt-get update sudo apt-get install openssh-server 在CentOS/RHEL上安装openssh-server命令如下: sudo yum update sudo yum install

    2024年02月16日
    浏览(49)
  • 基于linux下的高并发服务器开发(第二章)- 2.7 进程退出、孤儿进程、僵尸进程

    ◼ 父进程运行结束,但子进程还在运行(未运行结束),这样的子进程就称为孤儿进程 (Orphan Process)。 ◼ 每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为 init ,而 init 进程会循环地 wait() 它的已经退出的子进程。这样,当一个孤儿进程凄凉地结束 了其生

    2024年02月16日
    浏览(55)
  • Linux高并发服务器开发---笔记1(环境搭建、系统编程、多进程)

    0613 首先这整个系列笔记属于笔记①:牛客校招冲刺集训营—C++工程师中的 第四章 笔记。 视频课链接: 视频1:Linux高并发服务器开发(40h); 视频2:第4章 项目制作与技能提升(录播)(26h30min); 视频课3: 第5章 高频考点与真题精讲(录播)中的 5.10-5.13 项目回顾 有个学

    2024年02月15日
    浏览(67)
  • 【Linux】进程学习(1)---理解进程概念

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

    2023年04月25日
    浏览(57)
  • linux 服务器进程、端口查找,nginx 配置日志查找,lsof 命令详解

    1.1 使用查看端口号对应的进程信息 方式一 : 使用netstat命令 -t:显示TCP连接 -u:显示UDP连接 -l:仅显示监听状态的连接 -n:以数字形式显示端口号,而不是以服务名称显示 通过管道符号|将netstat的输出结果传递给grep命令,用于过滤出包含指定端口号的行。 执行命令后,终端

    2024年02月04日
    浏览(63)
  • 【Linux】对进程概念的理解

    进程定义  进程是一个具有一定独立功能的程序在一个数据集合上依次动态执行的 过程 。进程是一个正在执行的程序的实例,包括程序计数器、寄存器和程序变量的当前值。 进程特征 1.进程依赖于程序运行而存在,进程是动态的,程序是静态的。 当一个程序被加载到内存当

    2024年02月09日
    浏览(29)
  • Linux中 socket编程中多进程/多线程TCP并发服务器模型

    一次只能处理一个客户端的请求,等这个客户端退出后,才能处理下一个客户端。 缺点:循环服务器所处理的客户端不能有耗时操作。 模型 源码 可以同时处理多个客户端请求 父进程 / 主线程专门用于负责连接,创建子进程 / 分支线程用来与客户端交互。 模型 源码 模型 源

    2024年02月12日
    浏览(42)
  • Linux 常用操作命令(CentOS 7.0)- 故障定位:服务器负载、进程管理、日志分析

    系统经研发测试上线后,如果运行期间出现了BUG,需要对服务故障进行定位,一般会查看服务器负载、服务状态、进程管理、服务日志等。 本文以CentOS 7.0 操作系统上的命令操作作为示例进行记录。 #服务器负载 完整参见:http://www.laobingbiji.com/note/detail.html?note_id=20231115154337

    2024年01月17日
    浏览(69)
  • 【Linux】初步理解操作系统和进程概念

    操作系统是一款纯正的 “搞管理” 的文件 。 那操作系统为什么要管理文件? “管理” 又是什么? 它是怎么管理的? 1.操作系统帮助用户,管理好底层的软硬件资源; 2.为了给用户提供一个良好,安全的环境 即操作系统通过管理好底层的软硬件资源,为用户提供一个良好

    2024年02月15日
    浏览(43)
  • [Linux] 网络编程 - 初见TCP套接字编程: 实现简单的单进程、多进程、多线程、线程池tcp服务器

    网络的上一篇文章, 我们介绍了网络变成的一些重要的概念, 以及 UDP套接字的编程演示. 还实现了一个简单更简陋的UDP公共聊天室. [Linux] 网络编程 - 初见UDP套接字编程: 网络编程部分相关概念、TCP、UDP协议基本特点、网络字节序、socket接口使用、简单的UDP网络及聊天室实现…

    2024年02月16日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包