JAVAEE---计算机是如何组成的

news2024/11/18 1:42:00

计算机=软件+硬件

硬件是冯诺依曼体系结构,这个结构的精髓在于将存储和执行分开。

这里存储器=内存+外存(硬盘,u盘,光碟等)

cpu是计算机的大脑,是计算机最核心的地方。

cpu中央处理:进行算术运算和逻辑判断。

存储空间

硬盘>内存>>cpu

访问速度与之相反。

cpu的基本架构

x86架构 inter amd

arm架构 苹果 高通(性能比较低,但待机时间长)

不同架构的cpu的指令集是不同的(指令集写死在cpu中)

cpu是通过门电路构成的。

多核cpu

cpu的核心:一个核心相当于一个完整的cpu,将这些核心放到一起组成一个大的cpu。

这里多个核心都要使用需要软件的配合,将一个大任务分成多个小任务来执行。

一个cpu当两个用(超线程技术)

比如我这个电脑内核就是物理核心,是真实存在的。

逻辑处理器就叫做逻辑核心,我们使用可以认为有16个核心。

你可能会发现自己的电脑,物理核心和逻辑核心不是二倍的关系,这是因为大小核技术,大核代表两个逻辑核心,小核就是一个。

频率:描述cpu性能除了核心数还有频率

我们关注这里的速度和基准速度就行

基准速度就是基础频率,速度就是当前的频率也叫睿频

3.20GHz代表一秒钟可以执行32亿次的指令

基准速度是单核每秒最少执行次数,是下限

睿频是动态变化的,它取决于当前任务的多少。是上限

指令

首先指令是在内存中的,cpu从内存中不断获取指令,解析,执行。

获取指令相比其他两个来说比较耗时,所以就使用缓存,流水线这样的操作来进行处理

解析就要用到我们上面说的指令集。

操作系统

上面说cpu是硬件的核心,那操作系统就是软件的核心

对下将硬件进行管理

对上给软件提供一个稳定的运行环境

这两条都是通过抽象,封装进行完成的,比如我们现在的一个个的问价就是对硬盘进行的抽象封装。

常见的操作系统有Windows,Linux(程序猿必备),Mac,iOS,Android。

进程

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

操作系统对进程描述(pcb),管理(链式结构,不是一条,一组,比较复杂)

pcb中的一些属性

pid:身份标识

内存指针(一组):用来描述申请到的是哪些空间,来进行使用。

文件描述符表:当我们打开文件的时候要进行一个描述,记录

cpu:进程使用占cpu时间的比例

        并发:其中包含并发和并行,并发是分时复用,描述一个核心上的变化,并行是多个核心同时执行,不过我们一般统称并发。

状态:就绪状态,阻塞状态

就绪状态就是随时可以调用,阻塞状态不应该被调用,例如,等待用户输入

优先级:进程调用的时间顺序都不是均匀的。

记账信息:用来对下一下调度的一个更改。

上下文:如果进程执行中被切换,应该将寄存器中一些值保存起来,下次调用的时候,在还给寄存器。

这里的保存就是存档,还给寄存器就是读档

当进程未执行的时候其实并不是都在内存中,而是在硬盘的swap区域,再次调用时直接从硬盘加载到内存中。防止内存不够。 

进程之间独立运行,互补干扰,但有时我们需要它们的数据进行交互,这就谈到了进程间通信,例如:文件,网络

多线程---解决进程频繁创建销毁带来的开销

系统调度执行的基本单位

进程包含线程,每个线程是一条独立的执行流,可以单独对cpu进行调度所以状态,上下文,等都是每个线程由自己的一份。而它们的内存和文件描述符表,共用一份,就是进程的一份。多个进程之间互不影响,但一个进程中的多个线程会相互影响。一个线程挂掉,或者将数据弄坏了,会影响其他线程的进行。线程不易过多,过多让然会使调度开销过大。

多线程编程

好像和之间输入结果没有什么区别但其实区别很大,我们后面再来讨论。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】-进程间通信-匿名管道通信(以及模拟一个进程池)

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

16.live555mediaserver-保活机制

live555工程代码路径 live555工程在我的gitee下(doc下有思维导图、drawio图): live555 https://gitee.com/lure_ai/live555/tree/master 章节目录链接 0.前言——章节目录链接与为何要写这个? https://blog.csdn.net/yhb1206/art…

.Net中Redis的基本使用

前言 Redis可以用来存储、缓存和消息传递。它具有高性能、持久化、高可用性、扩展性和灵活性等特点,尤其适用于处理高并发业务和大量数据量的系统,它支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等。 Redis的使用 安装包Ser…

Windows网络「SSL错误问题」及解决方案

文章目录 问题方案 问题 当我们使用了神秘力量加持网络后,可能会和国内的镜像源网站的之间发生冲突,典型的有 Python 从网络中安装包,如执行 pip install pingouin 时,受网络影响导致无法完成安装的情况: pip config…

【小沐学GIS】电子海图OpenCPN源代码编译和运行(VS2017 + Win10)

1、简介 免费的开源海图仪和船用GPS导航软件 https://opencpn.org/ 1.1 OpenCPN概述 OpenCPN是一款自由软件(GPLv2),用于创建简洁的海图绘图仪和导航软件,可以在航行过程中使用或者作为计划工具。OpenCPN提供大量免费海图下载&a…

一文总结MySQL的指令是如何工作的

当你输入一条MySQL指令时候有没有想过会发生什么? 建立连接 首先你得先连到数据库上才行,这又分为长连接和短链接,短链接就是你查询一次就断开连接,长连接是你可以多次查询直到主动断开连接(也可能被杀死进程&#x…

飞鼠异地组网工具实战之访问k8s集群内部服务

飞鼠异地组网工具实战之访问k8s集群内部服务 一、飞鼠异地组网工具介绍1.1 飞鼠工具简介1.2 飞鼠工具官网 二、本次实践介绍2.1 本次实践场景描述2.2 本次实践前提2.3 本次实践环境规划 三、检查本地k8s集群环境3.1 检查k8s各节点状态3.2 检查k8s版本3.3 检查k8s系统pod状态 四…

局域网内Ubuntu上搭建Git服务器

1.在局域网内选定一台Ubuntu电脑作为Git服务端: (1).新建用户如为fbc,执行如下命令:需设置密码,此为fbc sudo adduser fbc (2).切换到fbc用户:需密码,此前设置为fbc su fbc (3).建一个空目录作为仓…

消息通讯-MQTT WebHookSpringBoot案例

一、EMQX WebHook介绍 1、EMQX WebHook 是由 emqx_web_hook (opens new window)插件提供的将EMQX中的钩子事件通知到某个Web服务的功能。 2、WebHook 的内部实现是基于钩子,借助 Webhook 可以完成设备在线、上下线记录,订阅与消息存储、消息送达确认等诸…

【Spring Boot 源码学习】Banner 信息打印流程

Spring Boot 源码学习系列 Banner 信息打印流程 引言往期内容主要内容1. printBanner 方法2. 关闭 Banner 信息打印3. SpringApplicationBannerPrinter 类3.1 LOG 模式打印3.1.1 getBanner 方法3.1.1.1 新建 Banners3.1.1.2 添加 ImageBanner3.1.1.3 添加 ResourceBanner3.1.1.…

Flume的安装部署及常见问题解决

1.安装地址 (1) Flume官网地址:http://flume.apache.org/ (2)文档查看地址:http://flume.apache.org/FlumeUserGuide.html (3)下载地址:http://archive.apache.org/dist…

RVC从入门到......

RVC变声器官方教程:10分钟克隆你的声音!一键训练,低配显卡用户福音!_哔哩哔哩_bilibili配音:AI逍遥散人(已授权)关注UP主并私信"RVC"(三个字母)自动获取一键训…

PS 颜色取样器标尺工具 基本使用讲解

上文 PS 吸管工具基本使用方法 我们讲完了 吸管工具 那么 我们继续 打开ps先 接着 我们选择这个 颜色取样器工具 选择之后 我们鼠标在图像上随便点一下 就会出现一个标记 然后 我们可以点多几个地方 边上的信息面板就会输出 点1 和 点2 甚至 多个 点3 点4 的 颜色 RGB代码 …

Python 如何实现备忘录设计模式?什么是备忘录设计模式?Python 备忘录设计模式示例代码

什么是备忘录(Memento)设计模式? 备忘录(Memento)设计模式是一种行为型设计模式,用于捕获一个对象的内部状态,并在对象之外保存这个状态,以便在需要时恢复对象到先前的状态。这种模…

[qemu逃逸] DefconQuals2018-EC3

前言 一道简单的套壳堆题.原本题目环境为 ubu16, 我这里使用的是 ubu18 设备逆向 qemu-system-x86_64 只开了 Canary 和 NX 保护. 比较简单, 主要逻辑在 mmio_write 里面, 其实现了一个菜单堆, 具有增删改的功能: 但是在释放堆块时并没有置空, 所以这里存在 UAF. 而程序还直…

三、程序员指南:数据平面开发套件

定时器库 定时器库为DPDK执行单元提供了定时器服务,以便异步执行回调函数。该库的特点包括: 定时器可以是周期性的(多次触发)或单次的(一次性触发)。定时器可以从一个核加载并在另一个核上执行。这必须在…

IntelliJ IDEA 2023 v2023.2.5

IntelliJ IDEA 2023是一款功能强大的集成开发环境(IDE),为开发人员提供了许多特色功能,以下是其特色介绍: 新增语言支持:IntelliJ IDEA 2023新增对多种编程语言的支持,包括Kotlin、TypeScript、…

介绍交换空间概念以及如何设置交换空间

文章目录 什么交换空间新增交换空间 什么交换空间 交换空间(Swap space)是计算机内存的一种补充,位于硬盘驱动器上。当物理内存不足时,系统会将不活跃的页面移到交换空间中。 交换空间可以帮助系统在以下情况下运行&#xff1a…

mysql 实现去重

个人网站 首发于公众号小肖学数据分析 1、试题描述 数据表user_test如下,请你查询所有投递用户user_id并且进行去重展示,查询结果和返回顺序如下 查询结果和返回顺序如下所示 解题思路: (1) 对user_id列直接去重: &#xff…

Kotlin学习(一)

Kotlin学习&#xff08;一&#xff09; 1.使用IDEA构建Kotlin项目 新建工程即可 我这里选择的Build System是IntelliJ&#xff0c;虽然我没用过但是这是Kotlin基础学习应该不会用到其他依赖 2.Hello World package com.simonfun main(args:Array<String>){println(&q…