计算机是如何工作的

目录

一、冯诺依曼体系:

二、操作系统

三、进程

3.1 PCB(进程控制块)— 描述进程属性的结构体

3.2 CPU分配 — 进程调度

3.3 内存分配 — 虚拟地址

3.4 进程间通信


一、冯诺依曼体系:

  1. CPU中央处理器(运算器+控制器):CPU是计算机最核心的部分,进行算数运算和逻辑判断。CPU最重要的指标是“主频”,如:2.5Ghz,描述了CPU的运算速度,可以近似认为,每秒执行25亿条指令。
  2. 存储器(内存+外存):内存,就是我们平时说的内存,比如我的电脑是16GB内存。外存,就是硬盘,软盘(现在已经没了),U盘,光盘
  3. 输入设备
  4. 输出设备

内存和外存的区别:

1、内存上读写数据的速度快,外存的读写数据的速度慢(速度能差3-4个数量级,也就是几千倍,甚至上万倍)

2、内存空间比较小,外存空间比较大

3、内存比外存贵

4、内存的数据是“易失”,断电之后,数据就会丢失;外存的数据是“持久”的,断电之后,数据还在。

另外,

显卡(GPU),和CPU类似,CPU是通用计算芯片,GPU是专用计算芯片。

二、操作系统

操作系统是个搞管理的软件。对下,要管理硬件设备;对上,要给软件提供稳定的运行环境。是软件、硬件和用户之间交互的媒介。

应用程序不能直接操作硬件设备,要通过层层调用最终才可以达到目的。

java虚拟机是操作系统中的一个应用程序,在java虚拟机上运行的java代码很多都要通过系统调用,进一步和内核交互,在通过驱动程序操作硬件设备。

三、进程

一个跑起来的应用程序,就是一个进程。如果不在运行中,只能叫程序,不能叫进程。

进程也叫作任务。通过任务管理器可以查看到当前电脑上所有的进程。

进程是操作系统资源分配的基本单位。

3.1 PCB(进程控制块)— 描述进程属性的结构体

进程是一个重要的“软件资源”,是由操作系统内核负责管理的。

那么,操作系统内核是如何管理进程的呢?

进程有许多属性,使用PCB来描述进程属性。(PCB是一个C语言的结构体,叫做进程控制块。)然后通过双向链表,把多个PCB给串到一起。

创建一个进程,本质上就是创建一个PCB这样的结构体对象,把它插入到链表中;销毁一个进程,本质上就是把链表上的PCB结点删除掉;任务资源管理器查看到进程列表,本质上就是遍历这个PCB链表。

那么,PCB描述了进程的哪些核心属性呢?

1、pid:进程的身份标识符(唯一的数字)

2、内存指针:指向了自己的内存是哪些。

3、文件描述符表:硬盘上的文件等其他资源的分配

内存指针和文件描述符表这两个属性,描述了进程持有了哪些硬件资源(硬件资源是指内存,硬盘,网卡,CPU等)

4、进程调度相关的属性

(1)进程的状态:

  • 就绪状态:随叫随到,进程随时准备好了去CPU上执行
  • 运行状态:正在CPU上执行
  • 阻塞状态:如进程在进行密集的IO操作,在读写数据,短时间无法到CPU上执行。

(2)进程的优先级:决定了分配CPU资源的先后顺序和多少的问题。

(3)上下文:即存档读档,CPU的寄存器上存储了程序运行过程中的中间结果,即一些值。

保存上下文,把这些CPU寄存器的值记录到PCB中,

恢复上下文,就是把PCB中的这些寄存器值恢复回去,使进程可以在CPU上接着上次的状态继续运行。

(4)记账信息:操作系统会统计每个进程在CPU上占用的时间和执行的指令数目,根据这个来决定下一阶段如何调度。

3.2 CPU分配 — 进程调度

进程调度是用来解决CPU分配的问题的。CPU很少,进程很多,想要让有限的CPU调度执行很多的进程,就需要进程调度。

首先,操作系统里有个调度器。其次,PCB里有进程调度相关的属性。通过调度器,再加上PCB里的进程调度相关属性的支持,通过并行和并发的方式,最终完成CPU的分配。

3.3 内存分配 — 虚拟地址

程序中获取到的内存地址,并不是真是的物理内存的地址,而是抽象出来的虚拟地址。

物理地址,内存条上的真实地址,给进程分配内存时,如果一个进程出现bug,访问内存越界,就会导致其他原本正常运行的进程出现问题。所以,

引入虚拟地址空间,由操作系统和专门的硬件设备负责进行虚拟地址到物理地址的转换。这样就可以对进程使用的内存空间进行“隔离”,避免进程之间相互影响。具体过程如下:

MMU硬件设备会将分配给进程的虚拟地址映射到物理内存上,MMU只能识别分配给进程的那一段虚拟地址,当进程出现访问内存越界,MMU识别不了此虚拟地址,就会直接向进程发送一个 SIGN SEGEMENT FAULT 信号,引起该进程崩溃,不会影响到其他正常运行的进程。

3.4 进程间通信

搞一个多个进程都能访问到的“公共空间”,基于这个公共空间进行交互数据。如基于文件,基于网络等形式。

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

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

相关文章

算法记录 | Day45 动态规划

70.爬楼梯 (进阶) 改为:一步一个台阶,两个台阶,三个台阶,…,直到 m个台阶。问有多少种不同的方法可以爬到楼顶呢? 1阶,2阶,… m阶就是物品,楼顶…

什么是VLAN?为什么要划分VLAN?

VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。每个VLAN是一个广播域,VLAN内的主机间可以直接通信,而VLAN间则不能直接互通。这样,广播报文就被限制在一个VLAN内。 一、为…

搭建electron-vue上

electron-vue 准备工作修改package.jsonappveyor.yml.travis.yml.gitignore.eslintrc.js.eslintignore.babelrcsrc/renderer/main.jssrc/renderer/App.vuesrc/renderer/store/index.jssrc/renderer/store/modules/Counter.jssrc/renderer/store/modules/Counter.jssrc/renderer…

定时任务方案实现与对比

定时任务分类 定时任务分为分布式定时任务和单机定时任务两个大的方向,他们的适用场景不同。 单机定时任务在单台计算机上运行,其执行结果和单台机器上的数据有关,如对本地机器的缓存做核对、清理日志等。它的 优点 是简单易用,无…

【STM32】基础知识 第十课 CubeMx

【STM32】基础知识 第十课 CubeMx STM32 CubeMX 简介安装 JAVACubeMX 安装新建 STM32 CubeMX 工程步骤新建工程时钟模块配置GPIO 配置生成源码 main.c STM32 CubeMX 简介 CubeMX (全称 STM32CubeMX) 是 ST 公司推出的一款用于 STM32 微控制器配置的图形化工具. 它能帮助开发者…

云原生Istio基本介绍

目录 1 什么是Istio2 Istio特征2.1 连接2.2 安全2.3 策略2.4 观察 3 Istio与服务治理3.1服务治理的三种形态 4 Istio与Kubernetes4.1 Kubernetes介绍4.2 Istio是Kubernetes的好帮手4.3 Kubernetes是Istio的好基座 5 Istio与服务网格5.1 时代选择服务网格5.2 服务网格选择Istio …

JAVA医院管理云HIS统计报表子系统、系统管理字系统功能实现

一、统计报表子系统 统计报表子系统功能模块:包括门诊收入汇总、住院收入汇总、收费统计报表、收费明细报表、 缴款日报、门诊收费汇总、住院科室日志、住院结算汇总、医疗项目统计、检查项目统计、 检验项目统计、月末收支汇总、药品进销存统计。 (1…

Matlab实现多个窗口间的数据传递(不用GUIDE)

在用多个matlab的figure进行数据交互时,数据传入是较为简单的,可以直接用function的形参实现,但如何把数据传回,是个比较麻烦的问题。 在GUIDE下,系统自动生成了output_fcn函数,可以用它来实现从子窗口到主…

Javaweb | 状态管理:Session、Cookie

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 状态管理 问题引入 HTTP协议是无转态的,不能保存提交的信息如果用户发来一个新的请求,服务器无法知道它是否与上次的请求联系对于那些需要多次…

springmvc

title: 3 springmvc date: ‘2023-3-29’ Author:glls Version:9.0.2 文章目录 一、SpringMVC1.1 引言1.2 MVC架构1.2.1 概念1.2.2 好处 二、开发流程2.1 导入依赖2.2 配置核心(前端)控制器2.3 后端控制器2.4 配置文件2.5 访问 三、接收请求参数3.1 基本…

时序预测 | Matlab实现SSA-GRU、GRU麻雀算法优化门控循环单元时间序列预测(含优化前后对比)

时序预测 | Matlab实现SSA-GRU、GRU麻雀算法优化门控循环单元时间序列预测(含优化前后对比) 目录 时序预测 | Matlab实现SSA-GRU、GRU麻雀算法优化门控循环单元时间序列预测(含优化前后对比)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现SSA-GRU、GRU麻雀算法…

Oracle删除列操作:逻辑删除和物理删除

概念 逻辑删除:逻辑删除并不是真正的删除,而是将表中列所对应的状态字段(status)做修改操作,实际上并未删除目标列数据或恢复这些列占用的磁盘空间。比如0是未删除,1是删除。在逻辑上数据是被删除了&#…

数据结构与算法(小议递归)

文章目录 前言一、递归是什么?二、在什么时候适用递归1.测试一下 总结 前言 递归是一种常用的算法设计,递归就是一种循环推理。简单来说就是调用原算法本身的算法。 这里主要探讨递归的使用, 一、递归是什么? 用一个简单的例子来…

js逆向之rpc远程调用(你强任你强,我无视一切)

一、找到加密函数位置 二、在其下面注入ws服务 (1)注入准备 资源>>替换>>随便选一个空文件夹 (2)进行注入 进行(1)操作后可直接编辑js代码了,做以下修改 (function() {var ws new WebSocket(…

【Java笔试强训 20】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥字符串反…

让GPT成为护理专家 - 护士的工作如此简单

引子    书接上文《GPT接入企微应用 - 让工作快乐起来》,我把GPT接入了企微应用,不少同事都开始尝试起来了。有的浅尝辄止,有的刨根问底,五花八门,无所不有。这里摘抄几份: “帮我写一份表白信&#xff…

04 KVM虚拟化网络概述

文章目录 04 KVM虚拟化网络概述4.1 Linux Bridge4.2 Open vSwitch 04 KVM虚拟化网络概述 为了使虚拟机可以与外部进行网络通信,需要为虚拟机配置网络环境。KVM虚拟化支持Linux Bridge、Open vSwitch网桥等多种类型的网桥。如图1所示,数据传输路径为“虚…

Java中提升接口性能的一些方法

目录 1.使用线程池并行执行2.数据库优化2.1 小表关联大表2.2 反三大范式操作2.3 增加索引2.4 减小事务粒度2.5 读写分离、分库分表 3.拥抱缓存3.1 Redis3.2 内存缓存 4.锁和异步4.1 减小锁的粒度4.2 分布式锁 1.使用线程池并行执行 假如有一个接口的逻辑如下: 接口…

针对近日ChatGPT账号大批量封禁的理性分析

文 / 高扬 这两天不太平。 3月31号,不少技术圈的朋友和我闲聊说,ChatGPT账号不能注册了。 我不以为然,自己有一个号足够了,并不关注账号注册的事情。 后面又有不少朋友和我说ChatGPT账号全部不能注册了,因为老美要封锁…