【JavaEE初阶】枫叶经霜艳,梅花透雪香-计算机是如何运行的?

在这里插入图片描述

本篇博客给大家带来的是与计算机相关的知识点, 包括:计算机的组成, 指令, 进程(重点).
文章专栏: JavaEE初阶
若有问题 评论区见
欢迎大家点赞 评论 收藏 分享
如果你不知道分享给谁,那就分享给薯条.
你们的支持是我不断创作的动力 .

1. 计算机的组成

1.1 计算机的发展史

计算的需求在⼈类的历史中是⼴泛存在的,发展⼤体经历了从⼀般计算⼯具到机械计算机到⽬前的电
⼦计算机的发展历程。
⼈类对计算的需求,驱动我们不断的发明、改善计算机。⽬前这个时代是“电⼦计算机”的时代,发
展的潮流是:更快速、更稳定、更微型。计算机的以后将如何发展,期待⼤家的努⼒。
推荐书籍: 《计算机简史》: https://book.douban.com/subject/35043034/

1.2 冯诺伊曼体系

现代的计算机, ⼤多遵守 冯诺依曼体系结构
在这里插入图片描述
• CPU 中央处理器: 进⾏算术运算和逻辑判断.
• 存储器: 分为外存和内存, ⽤于存储数据(使⽤⼆进制⽅式存储). 如: 硬盘,U盘
• 输⼊设备: ⽤⼾给计算机发号施令的设备. 如: 键盘, 鼠标, 麦克风
• 输出设备: 计算机个⽤⼾汇报结果的设备. 如: 显示器, 打印机

2. 指令

CPU是计算机的中央处理单元,而指令是CPU执行任务的最小单元.
一个 CPU 设计的时候, 就会提供一些可以进行的操作(支持哪些指令)
比如,加法指令,读取内存指令,写入内存指令,条件判定/跳转指令,函数调用指令,堆栈操作指令…
cpu 是一个铁憨憨~~
你给它发布一个任务,就需要你把任务拆分成非常细致的每个部分,才能让它执行.

比如: 小陈爸爸让CPU小陈去楼下买一瓶酱油.
CPU小陈就需要向前走10步到楼梯口, 按下电梯开关, 进电梯…

这些最小单元,都是由 二进制 的方式来表示的(机器语言).
不同的 cpu 支持的指令/机器语言是不相同的.

3. 操作系统

操作系统是⼀组做计算机资源管理的软件的统称。目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。
在这里插入图片描述

3.1 操作系统的作用

操作系统本质上都是用来搞管理的软件

3.1.1 对下管理所有的硬件设备

对下管理所有的硬件设备,但是操作系统不可能认识所有的硬件设备.但是,操作系统知道,市面的硬件设备就这么几个大的类别,每个大类别下面的硬件设备大概都有哪些功能~~
硬件厂商就需要在开发硬件的时候,同时开发一个驱动程序(软件),专属于这个硬件设备,让操作系统通过这个驱动程序完成对硬件设备的控制.

3.1.2 对上要给软件提供稳定的运行环境

一个计算机上可以运行多个程序, 这些程序相互独立,互不干扰.
这个作用涉及到了进程的隔离性.

3.2 操作系统的内核与应用程序

内核中有着操作系统最核心的功能,硬件的驱动程序都是在系统内核执行的.
内核需要给很多应用程序提供支持, 利用API 管理应用程序, 不同的系统提供的API不同,这对Java程序员不是很友好, 好在JVM将系统API 封装好了, 只需利用系统API, 便可实现跨平台.

4. 进程/任务(process/task)

操作系统内核中涉及到很多的关键性的概念, 进程只是其中一个, 由于进程和Java程序员写代码密切相关, 故此重点介绍进程.

4.1 进程的概念

1. 已经跑起来的程序就叫进程.

在这里插入图片描述
上图是一个应用程序,但不是一个进程,因为它当前并没有运行.

2. 每个进程都是系统分配资源的基本单位, 每个进程想要执行都需要消耗一定的系统资源(硬件资源).

4.2 进程的管理

从两个角度来看
1.描述: 使用类/结构体, 将被管理对象的各个属性都表示出来.
2.组织: 使用数据结构,把这些对象串起来,为了后续的增删查改.

系统中有一个专门的结构体PCB(系统内核由C/C++写的)来描述进程的属性. 这个结构体统称为"进程控制块"PCB.
进程可以用一个或者多个PCB来表示.

系统中会使用类似于双向链表这样的数据结构来组织多个PCB
创建新的进程,就是创建 PCB 并且把 PCB 插入到链表中
销毁进程,就是把 PCB 从链表上删除并释放
展示进程列表,就相当于是遍历链表的每个节点~~

4.2.1 PCB中的属性

想要进一步了解进程的详细特性, 还需讨论一下PCB中的属性.
PCB是一个非常庞大的结构体. 包含很多属性. (去翻Linux操作系统源码就能看到,Linux中的PCB以task_struct命名.)

1. pid, 进程身份标识. 每个进程都会有一个pid, 同一时刻,不同之间的pid是不同的.

2. 内存指针(一组属性):
每个进程在运行的时候,都会分配一定的内存空间,
这个进程的内存空间,具体是在哪里,以及分配的内存空间中有哪些部分,每个部分的有什么功能. 由这么一组指针来进行区分.

最典型的,进程的内存空间,需要有专门的区域存储要执行的指令,以及指令依赖的数据,同时还需要存储一些运行时产生的临时数据~~
C语言的程序,一些代码/函数
例如: .exe程序就包含了一些二进制指令. 双击 exe,系统就会读取可执行文件的内容
加载到内存中, cpu 才能从内存中取走指令并 进行指令的执行.

3. 文件描述符表, 它类似于数据结构中的顺序表, 存储了很多元素. 文件描述符表和文件(硬盘)有关,描述了进程关联了哪些文件,都能操作哪些文件.

文件描述符表描述了进程持有的"硬盘资源"是什么样的 , 一个进程涉及到硬盘操作, 就需要按照文件的方式来操作.

4.3 进程的分时复用/并发执行

4.3.1 单核CPU

早期的操作系统是一个"单任务操作系统",同一时刻只有一个进程能运行,运行下一个进程,就会退出上一个. 例如早期手机: 诺基亚,摩托罗拉(不需要考虑调度).
一个进程要执行,就是需要 cpu 来执行这上面的指令. 早期的电脑,还是单核 cpu, 一个 cpu 核心同一时刻,只能执行一个进程的指令.
如果把cpu比作舞台, 那进程就是演员,指令就是剧本. 分时复用就是多个进程轮流到cpu舞台演出, 一个进程演员演一会下来,另一个进程就上台接着演. 由于进程演员之间轮转调度太快了,所以肉眼看起来进程演员就像在同时表演,这就是并发执行.
如果两个进程同时在两个cpu核心上,微观上也是"同时执行",这个情况称为“并行”.
在一个cpu核心上,通过快速轮转调度的方式,执行多个进程,宏观上是"同时执行”,微观上有先有后,这个情况称为"并发". 从编程角度来说,底层是并发还是并行,对代码没啥影响… 平时也就会统一使用"并发"来代指 并行 和 并发.并把这样得编程称为并发编程

5. PCB对进程调度的支持

PCB 中引入了一些属性,用来支持操作系统实现 进程调度 的效果

5.1. 进程的状态

1. 就绪状态: 有两种情况,第一种: 进程随时准备着, 随时可以去cpu上执行. 第二种: 正在cpu上执行了.
2. 阻塞状态: 某个进程不具备某种执行条件导致这个进程暂时无法参与cpu的调度执行.
进程还存在很多种状态,在此只介绍上述两种.

5.2 进程的优先级

操作系统在调度多个进程的时候并非是一视同仁,有些进程会给更高的优先级.
比如: 我的电脑上同时运行 LOL(优先级更髙)和 QQ(优先级更低), 这样才能更好地调配系统资源

5.3 进程的上下文

进程从 cpu 离开之前,需要保存现场,把当前 cpu 中各种寄存器的状态,都记录到内存中.等到下次进程回到 cpu 上执行的时候,此时就可以把保存的这些寄存器的值,恢复回去. 进程就会沿着上次执行到的位置,继续往后执行! 其实就是我的世界里的存档和读档.

5.4 进程的记账信息

通过优先级机制,对不同的进程分配了不同权重的资源.有可能会出现极端的情况,所有的资源都给某个进程,其他进程一点都没捞着. 为了避免这种情况,记账信息,会记录当前进程持有 cpu 的情况
可以作为操作系统调度进程的参考依据.

本篇博客写的内容偏基础, 重点掌握进程和指令.
博客到这里也就结束啦, 感谢各位宝子的观看, 如果觉得对你有用,别忘了点赞+收藏哦, 嘻嘻嘻.
期待与你的下一次相遇!

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

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

相关文章

SuperMap Objects组件式GIS开发技术浅析

引言 随着GIS应用领域的扩展,GIS开发工作日显重要。一般地,从平台和模式上划分,GIS二次开发主要有三种实现方式:独立开发、单纯二次开发和集成二次开发。上述的GIS应用开发方式各有利弊,其中集成二次开发既可以充分利…

Linux网络——NAT/代理服务器

一.NAT技术 1.NAT IP转换 之前我们讨论了, IPv4 协议中, IP 地址数量不充足的问题,NAT 技术就是当前解决 IP 地址不够用的主要手段, 是路由器的一个重要功能。 NAT 能够将私有 IP 对外通信时转为全局 IP. 也就是一种将私有 IP 和全局IP 相互转化的技术方法: 很…

使用八爪鱼爬虫抓取汽车网站数据,分析舆情数据

我是做汽车行业的,可以用八爪鱼爬虫抓取汽车之家和微博上的汽车文章内容,分析各种电动汽车口碑数据。 之前,我写过很多Python网络爬虫的案例,使用requests、selenium等技术采集数据,这次尝试去采集小米SU7在微博、汽车…

C语言笔记(自定义类型:结构体、枚举、联合体 )

前言 本文对自定义类型的结构体创建、使用、结构体的存储方式和对齐方式,枚举的定义、使用方式以及联合体的定义、使用和存储方式展开叙述,如有错误,请各位指正。 目录 前言 1 结构体 1.1 结构体的声明 1.2 结构体的自引用 1.3 结构体变…

【消息序列】详解(6):深入探讨缓冲区管理与流量控制机制

目录 一、概述 1.1. 缓冲区管理的重要性 1.2. 实现方式 1.2.1. HCI_Read_Buffer_Size 命令 1.2.2. HCI_Number_Of_Completed_Packets 事件 1.2.3. HCI_Set_Controller_To_Host_Flow_Control 命令 1.2.4. HCI_Host_Buffer_Size 命令 1.2.5. HCI_Host_Number_Of_Complete…

Element Plus的快速入门

一、什么是Element Plus Element : 是饿了么团队研发的,基于Vue3,面向设计师和开发者的组件库。 组件:组成网页的部分,例如超链接,按钮,图片,表格,表单,分页条等等。 …

健身房小程序服务渠道开展

健身不单单是锻炼身体、保持身材,也是一种社交方式,城市里门店不少,每家都有一定流量和老客,但仅靠传统线下拉客/自然流量前往和线上朋友圈、短视频发硬广等方式还不够。 商家需要找到更多潜在目标客户,而消费者也对门…

Docker--通过Docker容器创建一个Web服务器

Web服务器 Web服务器,一般指网站服务器,是驻留于因特网上某种类型计算机的程序。 Web服务器可以向浏览器等Web客户端提供文档,也可以放置网站文件以供全世界浏览,或放置数据文件以供全世界下载。 Web服务器的主要功能是提供网上…

HTMLCSS:3D金字塔加载动画

效果演示 这段代码通过CSS3的3D变换和动画功能&#xff0c;创建了一个旋转的金字塔加载动画&#xff0c;每个侧面都有不同的颜色渐变&#xff0c;底部还有一个模糊的阴影效果&#xff0c;增加了视觉的立体感。 HTML <div class"pyramid-loader"><div cl…

selinux及防火墙

selinux说明 SELinux 是 Security-Enhanced Linux 的缩写&#xff0c;意思是安全强化的 linux 。 SELinux 主要由美国国家安全局&#xff08; NSA &#xff09;开发&#xff0c;当初开发的目的是为了避免资源的误用。 httpd进程标签&#xff08;/usr/share/nginx/html &#…

vue 富文本图片如何拖拽

在Vue项目中实现富文本编辑器&#xff08;如vue-quill-editor&#xff09;的图片拖拽功能&#xff0c;需要结合Quill.js及其相关插件进行配置 安装必要的依赖包&#xff1a; 你需要安装vue-quill-editor作为富文本编辑器的基础组件。为了支持图片拖拽功能&#xff0c;你还需要…

秋招面试基础总结,Java八股文基础(串联知识),四万字大全

目录 值传递和引用传递 静态变量和静态代码块的执行顺序 Java​​​​​​​集合的框架&#xff0c;Set,HashSet,LinkedHashSet这三个底层是什么 多线程篇 Java实现多线程的方式 假设一个线程池&#xff0c;核心线程数是2&#xff0c;最大线程数是3&#xff0c;阻塞队列是4…

MySQL原理简介—12.MySQL主从同步

大纲 1.异步复制为MySQL搭建一套主从复制架构 2.半同步复制为MySQL搭建一套主从复制架构 3.GTID为MySQL搭建一套主从复制架构 4.并行复制降低主从同步延迟或强制读主库 1.异步复制为MySQL搭建一套主从复制架构 (1)MySQL主从复制的原理 (2)搭建主从复制架构的配置 (1)MySQ…

一文了解Spring提供的几种扩展能力

基于 spring bean 的扩展 1. BeanPostProcessor spring 提供的针对 bean 的初始化过程时提供的扩展能力&#xff0c;从方法名也很容易看出&#xff0c;提供的两个方法分别是为 bean 对象提供了初始化之前以及初始化之后的扩展能力。 package com.wyl.conf;import org.spring…

【隐私计算大模型】联邦深度学习之拆分学习Split learning原理及安全风险、应对措施以及在大模型联合训练中的应用案例

Tips&#xff1a;在两方场景下&#xff0c;设计的安全算法&#xff0c;如果存在信息不对等性&#xff0c;那么信息获得更多的一方可以有概率对另一方实施安全性攻击。 1. 拆分学习原理 本文介绍了一种适用于隐私计算场景的深度学习实现方案——拆分学习&#xff0c;又称分割…

Linux 下进程基本概念与状态

文章目录 一、进程的定义二、 描述进程-PCBtask_ struct内容分类 三、 进程状态 一、进程的定义 狭义定义&#xff1a;进程是正在运行的程序的实例&#xff08;an instance of a computer program that is being executed&#xff09;。广义定义&#xff1a;进程是一个具有一定…

k8s1.31版本最新版本集群使用容器镜像仓库Harbor

虚拟机 rocky9.4 linux master node01 node02 已部署k8s集群版本 1.31 方法 一 使用容器部署harbor (1) wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce systemctl enable docker…

数据库MYSQL——表的设计

文章目录 前言三大范式&#xff1a;几种实体间的关系&#xff1a;一对一关系&#xff1a;一对多关系&#xff1a;多对多关系&#xff1a; 前言 之前的博客中我们讲解的是关于数据库的增删改查与约束的基本操作&#xff0c; 是在已经创建数据库&#xff0c;表之上的操作。 在实…

自然语言处理: RAG优化之Embedding模型选型重要依据:mteb/leaderboard榜

本人项目地址大全&#xff1a;Victor94-king/NLP__ManVictor: CSDN of ManVictor git地址&#xff1a;https://github.com/opendatalab/MinerU 写在前面: 笔者更新不易&#xff0c;希望走过路过点个关注和赞&#xff0c;笔芯!!! 写在前面: 笔者更新不易&#xff0c;希望走过路…

《生成式 AI》课程 作业6 大语言模型(LLM)的训练微调 Fine Tuning -- part1

资料来自李宏毅老师《生成式 AI》课程&#xff0c;如有侵权请通知下线 Introduction to Generative AI 2024 Spring 该文档主要介绍了国立台湾大学&#xff08;NTU&#xff09;2024 年春季 “生成式人工智能&#xff08;GenAI&#xff09;” 课程的作业 5&#xff08;GenAI HW…