进程概述

文章目录

  • 计算机算机组成
  • 因特尔CPU型号
  • 摩尔定律
  • 衡量CPU的指标
  • 指令(Instruction)
  • 操作系统(Operating System)
  • 虚拟地址空间(Virtual Address Space)
  • 进程(Process/task)
  • 进程管理(PCB - 进程控制块)
  • 进程控制块(Process Control Blob)
  • 进程间通信

本节介绍进程和计算机相关概念,为后面介绍多线程铺垫一下

计算机算机组成

在这里插入图片描述

  • CPU(Central Processing Unit)中央处理单元,计算机最核心的部分,相当于计算机的大脑。
  • 存储器
    • 内存(主存):速度快快、空间小、成本更高、掉电后数据丢失。
    • 外村:速度慢、空间大、成本低、掉点后数据丢失。
  • 输入设备
    • 键盘、鼠标、网卡等。
  • 输出设备
    • 显示器、音箱等。

可怕的是CPU虽然制造极其困难,但是它的价格却不高,几年前的CPU已经成为白菜价了,问什么会出现这种情况呢?

  1. CPU通过大规模量产,可以降低成本。
  2. CPU迭代速度非常快,并且每一代CPU相较于上一代的提升都很大,这就使得前代CPU的价格大幅度降低

因特尔CPU型号

英特尔CPU型号首先是分哪个系列的,然后一个产品线和代数

  • 服务器 - 至强
  • 家庭 - 酷睿
    • I3 - 入门级
    • i5 - 普通级
    • i7 - 高端级
    • i9 - 旗舰级
  • 嵌入式、低耗设备 - 赛扬。我们这里所说的什么I3、I5、I7、I9,这个是针对酷睿。

    由于CPU技术迭代快,所以CPU的代数是一个非常重要的指标,一般来说,13代i5的性能会大于12代i7。那么为什么会出现i3、i5、i7、i9呢?是由于CPU加工有一个良品率的问题。CPU的体积虽然小巧,但是其内部包含了非常精密的大规模集成电路,存在着大量的计算单元(ALU - Algorithm Logic Unit),每个计算单元体积都极小,这就给加工加工制造带来了非常大的难度。在制造时是使用激光刻蚀去构建集成电路的。所以制造出的CPU中的计算单元会有的无法完成计算任务,有的计算单元是不可用的。那么厂家使用一定的技术屏蔽不可用的计算单元,只保留功能完好的计算单元,所以计算单元的数量就对应了各个级别的CPU

摩尔定律

    摩尔定律是有因特尔联合创始人兼副总裁摩尔,在长期从事CPU制造后,总结出来的一个定律,内容大致是:芯片每隔18个月,集成程度提高一倍,计算效率提高一倍,成本下降一半。这个定律在CPU发展的50多年中一直被印证。

衡量CPU的指标

主频和核心数是衡量CPU性能的核心指标.

主频即CPU的时钟频率,计算机的操作在时钟信号的控制下分步执行,每个时钟信号周期完成一步操作,时钟频率的高低在很大程度上反映了CPU速度的快慢

  • 主频 - 3.20GHZ

    • 指的是CPU每个时钟周期所指向的指令条数
    • 可以简单的理解为CPU每秒钟可以执行32亿条指令
  • 核心数

    • 核心就是一个能完成完整计算功能的整体
    • CPU最初都是单个核心的,只能执行单个程序,后来发展出现了多进程、多线程技术,厂家为了支持这样的技术,就研发处理多核心的CPU
    • 多核CPU的到来,又一步极大地提高了CPU的性能

指令(Instruction)

指令时CPU上能够执行任务的最小单元。高级语言中一条语句可能就对应了CPU中的多条指令,比如高级语言中的加法操作,在CPU指令层面可能就要执行load(读取数据到寄存器),add(加法器完成加法操作),store(写回内存)。在CPU设计是就会支持一些指令,让CPU可以正常的工作,CPU的工作就是由一条条指令组成的。

操作系统(Operating System)

操作系统很多,比如我们最常用的Windows,Mac OS,服务器使用的Linux/Unix ,移动端的Android、Ios等,虽然这些操作系统来自于不同的厂商,功能也各有侧重,但是这些操作系统的核心机制是相通的。

操作系统本质上是用来管理计算机软硬件资源的软件,对下管理所有的硬件设备,对上给软件(应用层)提供一个稳定的运行环境,这一点是由进程的隔离性保证的(后面会介绍到),可以保证各个程序在运行时(进程)不会相互干扰。
在这里插入图片描述

操作系统分为内核态和用户态两种模式,一个程序在运行过程中,可能是在用户态工作,也可能是在内核态工作。首先介绍一下什么叫做内核。内核其实顾名思义,它就属于是一个操系统,最核心的功能模块。简单理解 操作系统 = 内核 + 配套的应用程序一些核心的程序都是直接在内核中运行的,如一些驱动程序等。内核只有一份但是却要给很多的上层软件提供支持,一般内核都会给上层提供API供上层使用。

在Java中,一般不会直接使用系统API,由于不同操作系统提供的API是不相同的,Java对系统API进行了一层封装,保证跨平台特性,降低了学习和使用的成本。

虚拟地址空间(Virtual Address Space)

早期的操作系统它程序运行时,它分配的内存就直接从物理内存上进行分配。这样一旦某个程序越界访问/修改内存,就可能会导致其它程序异常崩溃

为了解决这个问题就引入了”虚拟内存空间“的概念,通过对物理内存的抽象,通过虚拟内存映射到物理内存,在访问到物理内存之前强行检查,防止出现未定义行为。保证了进程间的隔离性从而给进程提供一个稳定的运行环境。
在这里插入图片描述

假如你故意访问构造一个其他的一个地址,在应用程序这个层面看到的是异常,在系统内部,它是通过这个信号机制触发一个signal segment default(段错误)这样的一个信号。

进程(Process/task)

在Java语言生态下,并多进程编程使用的并不多,创建、销毁、调度进程是一个很大的开销。反而在C++中经常使用多进程编程,Java中经常使用多线程编程,要想清楚的了解线程,就要先对进程有一个大概的了解。
在这里插入图片描述

进程(Process),又叫做任务(task),进程本质上是一个正在运行的程序,exe文件只是一个可执行文件,是静态的,不是进程。进程运行时,CPU会分配给进程一定的系统资源(CPU资源,内存资源、硬盘资源…),每个进程要想执行就都需要消耗一定的系统资源,进程每个时刻消耗的资源都是动态变化的。 所以进程是操作系统资源分配的最小单位

进程管理(PCB - 进程控制块)

  1. 先描述:使用PCB结构表示出进程的各种属性
  2. 后组织:使用类似双向链表,把这些PCB给串起来
    进程控制块PCB

进程是系统分配资源的基本单位。进程的管理,想要对实体进行管理,首先在Linux操作系统中使用task_struct结构体描述和管理一个进程,task_struct又叫做PCB(Process Control Blob)进程控制块,这样我们就可以操作系统中的进程使用一定的数据结构来进行管理(增删改查)了。一个进程可能有一个PCB,也可能有多个,因为一个进程可能会有多个线程。

当我们创建一个进程,本质上就是创建出这样的一个结构体,再把它插到链表上面。销毁一个进程,那就是直接从这个列表上删掉一个节点。查看进程列表,其实就是在这个双向链表进行遍历。

进程控制块(Process Control Blob)

下面我们挑选一些PCB中比较重要的概念进行介绍。

  1. pid 每个进程(进程中的所有线程共享同一个进程的pid)都有唯一的pid,是一个进程的唯一身份标识。

  2. 内存指针 描述了进程所持有的内存资源。进程在运行时操作系统会分配一块儿内存空间,而这 块内存空间就是有一组内存指针来维护的。使用内存指针区分这块内存空间具体在哪里,有哪些部分,每个部分有什么作用。比如,进程的内存空间需要有专门的区域存储要执行的指令,以及指令依赖的数据。并且还需要存储一些运行时产生的临时数据,这些都属于是我们不同的一个内存空间所负责的一个作用,所负责的一个功能。(CPU 大概的工作流程 取指 - 译码 - 执行 - 写回)。

  3. 文件描述符表 描述了进程持有的硬盘资源。在操作系统中,硬盘上面的存储空间以文件的这种抽象的形式来去进行表示的,所以这个时候我们代码里面操作的是文件,实际上在硬件上操作就是硬盘。一个进程也会涉及到一些硬盘操作,比如说从硬盘读数据,或者往硬盘上写数据(IO),那这是我们就需要按照文件的方式来组织。进程它关联了哪些文件,都能操作哪些文件。

上面的三个字段描述了进程的id和进程持有的资源,那么下面我们介绍几个用于进程调度的字段,也就是CPU资源的分配的情况。

  • 并发:两个进程在一个CPU核心上"轮转调度","分时复用"执行
  • 并行:两个进程分别在在两个CPU核心上同时执行

进程在调度之下,会“同时”执行,轮转执行,只是这个速度非常快,肉眼无法感知到,这个过程叫做并发,或者分时复用。平时开发中, 会通统一使用做并发,来代指并行和并发。进程就是为了实现并发编程的效果,提高效率。

管理进程调度的字段:

  1. 状态
    简单介绍两个核心状态:

    1. 就绪状态正在CPU上执行或者随时准备到CPU上执行。
    2. 阻塞状态由于某些条件不具备,暂时无法到CPU上执行。
  2. 优先级

CPU会根据重要程度来划分优先级,从而在进程调度时让优先级更高的进程获得更多的调度机会。比如,游戏和QQ的优先级不同,游戏程序的优先级肯定会大于QQ,QQ只需要在后台收消息,而游戏会实时影响你的体验。

  1. 上下文

什么是上下文?

上下文是保存在内存中的,在进程离开CPU之前,会把当前CPU中的各种寄存器,将寄存器中的数据打包,记录到内存中去,下次调度来到时,就可以把只写寄存器的值进行回复,还原场景,沿着上次执行的结果继续执行。类似于单机游戏存档和读档.

CPU某些寄存器属于没有特点含义,就只是用来保存计算的中间结果的,有些寄存器是有特点含义的,保存当前执行到那个指令(程序计数器),记录了下一条指令所在的位置,维护栈相关的寄存器,通过这一组寄存器,维护当前程序的调用栈(局部变量和方法参数),一般是一对寄存器,有了这个我们才知道下一步到哪儿执行

  1. 记账信息
    1. 记账信息中会对进程调度执行进行统计,从而为进程调度提供一个参考
    2. 如果某个进程长时间未被调度,那么下次调度它的概率就会增加
    3. 通过优先级机制对不同的进程分配了不同权重的资源

进程的状态、优先级、上下文、记账信息是用配合完成进程调度得,和进程持有的cpu资源密切相关。由于CPU核心数少,进程多,这是就需进程轮番在CPU上执行,只要轮转的速度够快,在用户眼中,看起来就像是在“同时“执行一样。

进程间通信

由于进程之间彼此独立,具有隔离性,虽然保证了进程的安全,进程之间不会相互影响,但是也出现了一个问题,就是进程之间如何通信。进程间通信的核心思想是借助共有空间,主要形式有以下两种。

  • 文件(IO)
  • 网络(socket)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023亚太杯数学建模思路 - 案例:异常检测

文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 建模资料 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常…

UE 调整材质UV贴图长宽比例

首先,为什么要先减去0.5呢,因为缩放的贴图中心在0,0原点,以这个点缩放效果是这样: 它缩放的图案不会在正中间,因为是以0,0点进行缩放的 以这个图的箭头去缩放图片的,所以不能使得缩放后的图片放在正中心 那…

开源WIFI继电器之方案介绍

一、实物 1、外观 2、电路板 二、功能说明 输出一路继电器常开信号,最大负载电流10A输入一路开关量检测联网方式2.4G Wi-Fi通信协议MQTT配网方式AIrkiss,SmartConfig设备管理本地Web后台管理,可配置MQTT参数供电AC220V其它一个功能按键&…

java并发编程之基础与原理2

cpu缓存结构剖析 下面说一下概念与作用 CPU缓存即高速缓冲存储器,是位于CPU与主内存间的一种容量较小但速度很高的存储 器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中 保存着CPU刚用过或循环使用的一部…

二维码智慧门牌管理系统升级解决方案:高效运营,信息尽在掌握

文章目录 前言一、升级要点二、方案优势三、应用场景四、客户案例 前言 在这个日新月异的时代,二维码智慧门牌管理系统已经成为了各行各业的标配。为了更好地满足用户需求,提升运营效率,我们推出了全新的升级解决方案。这个方案将让你轻松掌…

【DevOps】Git 图文详解(四):Git 使用入门

Git 图文详解(四):Git 使用入门 1.创建仓库2.暂存区 add3.提交 commit 记录4.Git 的 “指针” 引用5.提交的唯一标识 id,HEAD~n 是什么意思?6.比较 diff 1.创建仓库 创建本地仓库的方法有两种: 一种是创建…

nodejs微信小程序-慢性胃炎健康管理系统的设计与实现-安卓-python-PHP-计算机毕业设计

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

爱上C语言:操作符详解(下)

🚀 作者:阿辉不一般 🚀 你说呢:生活本来沉闷,但跑起来就有风 🚀 专栏:爱上C语言 🚀作图工具:draw.io(免费开源的作图网站) 如果觉得文章对你有帮助的话,还请…

【漏洞复现】泛微e-Weaver SQL注入

漏洞描述 泛微e-Weaver(FANWEI e-Weaver)是一款广泛应用于企业数字化转型领域的集成协同管理平台。作为中国知名的企业级软件解决方案提供商,泛微软件(广州)股份有限公司开发和推广了e-Weaver平台。 泛微e-Weaver旨在…

CAS源码工程搭建记录

CAS源码工程搭建 1.下载2.gradle下载源改为阿里云,解决下载慢的问题3.解决保存 1.下载 git clone -b 5.3.x https://gitee.com/mirrors/CAS.git如果下载的是压缩包,导入工程会保存,因为builder.gradle的第20行开始有取git信息,如…

wangEditor富文本编辑器使用

一、官网 开源 Web 富文本编辑器&#xff0c;开箱即用&#xff0c;配置简单 二、下载安装 npm install --save wangeditor/editor-for-vue 三、在vue中使用 3.1、抽离组件editor.vue 在工程的components目录下新建组件editor <template><div><Toolbar:edi…

【漏洞复现】通达oa 前台sql注入

漏洞描述 通达OA(Office Automation)是一款企业级协同办公软件,旨在为企业提供高效、便捷、安全、可控的办公环境。它涵盖了企业日常办公所需的各项功能,包括人事管理、财务管理、采购管理、销售管理、库存管理、生产管理、办公自动化等。通达OA支持PC端和移动端使用,可以…

C_12练习题

一、单项选择题(本大题共20小题,每小题2分&#xff0c;共40分。在每小题给出的四个备选项中&#xff0c;选出一个正确的答案&#xff0c;并将所选项前的字母填写在答题纸的相应位置上。) C 风格的注释&#xff0c;也称块注释或多行注释&#xff0c;以&#xff08;&#xff09;…

比亚迪刀片电池与特斯拉4680电池比较

1 电池材料 比亚迪刀片电池采用的磷酸铁锂LFP&#xff08;LiFePO4&#xff09;&#xff0c;特斯拉的4680电池采用的三元锂。 磷酸铁锂&#xff1a;循环寿命长&#xff0c;安全性能好&#xff0c;价格低廉&#xff0c;但是能量密度低&#xff0c;导电性能差&#xff0c;低温表现…

软件开发、网络空间安全、人工智能三个方向的就业和前景怎么样?哪个方向更值得学习?

软件开发、网络空间安全、人工智能这三个方向都是当前及未来的热门领域&#xff0c;每个领域都有各自的就业前景和价值&#xff0c;以下是对这三个方向的分析&#xff1a; 1、软件开发&#xff1a; 就业前景&#xff1a;随着信息化的加速&#xff0c;软件开发的需求日益增长。…

STM32外部中断(EXTI)与RTOS多任务处理的协同设计

当在STM32上使用外部中断&#xff08;EXTI&#xff09;与RTOS&#xff08;Real-Time Operating System&#xff0c;实时操作系统&#xff09;进行多任务处理时&#xff0c;需要设计合适的协同机制&#xff0c;以确保可靠的中断处理和任务调度。在下面的概述中&#xff0c;我将介…

window系统vscode 编译wvp前端代码

下载代码 wvp-GB28181-pro: WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的网络视频平台&#xff0c;负责实现核心信令与设备管理后台部分&#xff0c;支持NAT穿透&#xff0c;支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联&#xff0c;支持rtsp/rtmp等…

【SQL server】 表结构的约束和维护

表结构的约束和维护 修改表结构 (1)添加列 (2)删除列 (3)修改列alter table 表名 add 新列名 数据类型给员工表添加一列邮箱 alter table People add PeopleMail varchar(200)删除列 alter table People drop column PeopleMain修改列 alter table 表名 alter column 列名 数据…

Docker 可视化面板 ——Portainer

Portainer 是一个非常好用的 Docker 可视化面板&#xff0c;可以让你轻松地管理你的 Docker 容器。 官网&#xff1a;Portainer: Container Management Software for Kubernetes and Docker 【Docker系列】超级好用的Docker可视化工具——Portainer_哔哩哔哩_bilibili 环境 …

基于STM32的外部中断(EXTI)在嵌入式系统中的应用

外部中断&#xff08;External Interrupt&#xff0c;EXTI&#xff09;是STM32嵌入式系统中常见且重要的功能之一。它允许外部事件&#xff08;例如按键按下、传感器触发等&#xff09;通过适当的引脚触发中断&#xff0c;从而应用于各种嵌入式系统中。在STM32微控制器中&#…