进程概述

文章目录

  • 计算机算机组成
  • 因特尔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)

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

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

相关文章

某60区块链安全之重入漏洞实战记录

区块链安全 文章目录 区块链安全重入漏洞实战实验目的实验环境实验工具实验原理实验内容 重入漏洞实战 实验目的 学会使用python3的web3模块 学会以太坊重入漏洞分析及利用 实验环境 Ubuntu18.04操作机 实验工具 python3 实验原理 以太坊智能合约的特点之一是能够调用和…

rollout

构建 测试 代码扫描 打包 打镜像 推送镜像 部署应用 Rollout 是 Kubernetes 中用于管理部署应用的资源对象。它通过控制多个 ReplicaSets 对象的创建、缩放和更新,以实现无宕机升级和回滚应用程序版本的能力。 一般来说,在 Kubernetes 中,我…

选硬币该用动态规划

选硬币&#xff1a; 现有面值分别为1角1分&#xff0c;5分&#xff0c;1分的硬币&#xff0c;请给出找1角5分钱的最佳方案。 #include <iostream> #include <vector>std::vector<int> findChange(int amount) {std::vector<int> coins {11, 5, 1}; /…

C_12练习题

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

qt-C++笔记之treeWidget初次使用

qt-C笔记之treeWidget初次使用 code review! 文章目录 qt-C笔记之treeWidget初次使用1.运行2.文件结构3.main.cpp4.widget.h5.widget.cpp6.widget.ui7.main.qrc8.qt_widget_test.pro9.options.png 1.运行 2.文件结构 3.main.cpp 代码 #include "widget.h"#include…

神经网络反向传播的数学原理

如果能二秒内在脑袋里解出下面的问题&#xff0c;本文便结束了。 已知&#xff1a;&#xff0c;其中。 求&#xff1a;。 到这里&#xff0c;请耐心看完下面的公式推导&#xff0c;无需长久心里建设。 首先&#xff0c;反向传播的数学原理是“求导的链式法则” : 设f和g为x…

利用 Pandoc + ChatGPT 优雅地润色论文,并保持 Word 公式格式:Pandoc将Word和LaTeX文件互相转化

论文润色完美解决方案&#xff1a;Pandoc 与 ChatGPT 的强强联合 写在最前面其他说明 一、通过 Pandoc 将 Word 转换为 LaTeX 的完整指南步骤 1: 安装 PandocWindows:macOS:Linux: 步骤 2: 准备 Word 文档步骤 3: 转换文档步骤 4: 检查并调整输出步骤 5: 编译 LaTeX 文档总结 二…

分类预测 | Matlab实现基于SDAE堆叠去噪自编码器的数据分类预测

分类预测 | Matlab实现基于SDAE堆叠去噪自编码器的数据分类预测 目录 分类预测 | Matlab实现基于SDAE堆叠去噪自编码器的数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现基于SDAE堆叠去噪自编码器的数据分类预测&#xff08;完整源码和数据) 2.多…

机器学习第9天:决策树分类

文章目录 机器学习专栏 介绍 基本思想 使用代码 深度探索 优点 估计概率 训练算法 CART成本函数 实例数与不纯度 正则化 在鸢尾花数据集上训练决策树 机器学习专栏 机器学习_Nowl的博客-CSDN博客 介绍 作用&#xff1a;分类 原理&#xff1a;构建一个二叉树&#…

【信息安全】浅谈IDOR越权漏洞的原理、危害和防范:直接对象引用导致的越权行为

前言 ┌──────────────────────────────────┐ │ 正在播放《越权访问》 - Hanser │ ●━━━━━━─────── 00:00 / 03:05 │ ↻ ◁ ❚❚ ▷ ⇆ └───────────────────────────────…

Java - 位运算的基本原理和用途

Java - 位运算的基本原理和用途 前言一. Java 位运算基本操作1.1 按位与 &1.2 按位或 |1.3 按位异或 ^1.4 按位取反 ~1.5 位移运算1.5.1 左移运算符 <<1.5.2 右移运算符 >>1.5.3 无符号右移运算符 >>> 二. 位运算实际运用2.1 判断奇偶性&#xff08;&…

Vue3 插槽 v-slot

插槽 视频链接&#xff1a;尚硅谷vue-插槽章节 不使用插槽的情况下 结果&#xff1a; 1 默认插槽 在子组件中只能有一个 结果&#xff1a; 2 具名插槽 #b是v-slot:b 的缩写 顾名思义就是指着名字去插入 结果&#xff1a; 3 作用域插槽 可以传递数据的插槽&#…

【SQL server】数据库、数据表的创建

创建数据库 --如果存在就删除 --所有的数据库都存在sys.databases当中 if exists(select * from sys.databases where name DBTEST)drop database DBTEST--创建数据库 else create database DBTEST on --数据文件 (nameDBTEST,--逻辑名称 字符串用单引号filenameD:\DATA\DBT…

【c++】——类和对象(中)——实现完整的日期类(优化)万字详细解疑答惑

作者:chlorine 专栏:c专栏 赋值运算符重载()()():实现完整的日期类(上) 我走的很慢&#xff0c;但我从不后退。 【学习目标】 日期(- - --)天数重载运算符 日期-日期 返回天数 对日期类函数进行优化(不符合常理的日期&#xff0c;负数&#xff0c;const成员)c中重载输入cin和输…

C/C++数据结构之中缀表达式转换为后缀表达式,删除堆栈元素

在这篇博客中&#xff0c;我们将深入分析一个使用C编写的栈和表达式计算程序。该程序不仅实现了基本的栈操作&#xff0c;还提供了中缀表达式转后缀表达式和删除堆栈中的元素等实用功能。通过逐一讲解每个函数的功能&#xff0c;我们将更全面地理解这个程序的实现。 资源获取&a…

python算法例15 合并数字

1. 问题描述 给出n个数&#xff0c;将这n个数合并成一个数&#xff0c;每次只能选择两个数a、b合并&#xff0c;合并需要消耗的能量为ab&#xff0c;输出将n个数合并成一个数后消耗的最小能量。 2. 问题示例 给出[1&#xff0c;2&#xff0c;3&#xff0c;4]&#xff0c;返回…

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

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

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

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

【机器学习算法】机器学习:支持向量机(SVM)

转载自&#xff1a; 【精选】机器学习&#xff1a;支持向量机&#xff08;SVM&#xff09;-CSDN博客 1.概述 1.1&#xff0c;概念 支持向量机&#xff08;SVM&#xff09;是一类按监督学习方式对数据进行二元分类的广义线性分类器&#xff0c;其决策边界是对学习样本求解的最…

window系统vscode 编译wvp前端代码

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