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

devtools/2024/11/26 5:42:08/

在这里插入图片描述

本篇博客给大家带来的是与计算机相关的知识点, 包括:计算机的组成, 指令, 进程(重点).
文章专栏: 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.ppmy.cn/devtools/137038.html

相关文章

CTF之密码学(键盘加密)

在CTF(Capture The Flag,夺旗赛)中,键盘加密是一种独特而有趣的加密方式,它巧妙地利用了键盘的布局和坐标进行信息的加密和解密。以下是关于CTF中键盘加密的详细解释: 一、键盘加密的定义 键盘加密是通过…

ISUP协议视频平台EasyCVR萤石设备视频接入平台银行营业网点安全防范系统解决方案

在金融行业,银行营业厅的安全保卫工作至关重要,它不仅关系到客户资金的安全,也关系到整个银行的信誉和运营效率。随着科技的发展,传统的安全防护措施已经无法满足现代银行对于高效、智能化安全管理的需求。 EasyCVR视频汇聚平台以…

最新智能AI问答运营系统(SparkAi)一站式AIGC系统,GPT-4.0/GPT-4o多模态模型+联网搜索提问+AI绘画+管理后台,用户会员套餐

目录 一、文章前言 系统介绍文档 二、功能模块介绍 系统快速体验 三、系统功能模块 3.1 AI全模型支持/插件系统 AI大模型 多模态模型文档分析 多模态识图理解能力 联网搜索回复 3.2 AI智能体应用 3.2.1 AI智能体/GPTs商店 3.2.2 AI智能体/GPTs工作台 3.2.3 自定义…

android-sdk 安装脚本

android-sdk 安装脚本 androidSdk_install.sh #!/bin/bash #[描述] android-sdk 安装# set -eu shopt -s expand_aliasesAndroid_SDK_D/app5/android-sdk-home/JAVA17_D/app/zulu17.48.15-ca-jdk17.0.10-linux_x64/#jdk17下载、解压 #https://www.azul.com/downloads/?version…

并发和并行的基础知识

1. 并发(Concurrency)的例子 场景:单核计算机同时运行多个应用程序 假设你正在使用一台单核 CPU 的计算机,你同时打开了以下任务: 任务 A:听音乐(音乐播放器)。任务 B&#xff1a…

ImportError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29‘ not found

3.一、编译安装make 以make4.2 2.2.1为例 1.下载make wget https://ftp.gnu.org/gnu/make/make-4.2.tar.gz 2.解压make4.2安装包 tar -zxvf make-4.2.tar.gz && cd make-4.2 3.编译安装make-4.2 ./configure --prefix/usr/local/make4.2 make && make …

Flutter:AnimatedContainer实现导航侧边栏

导航侧边栏 import package:flutter/material.dart;void main() {runApp(const MyApp()); }class MyApp extends StatelessWidget {const MyApp({Key? key}):super(key: key);overrideWidget build(BuildContext context) {return const MaterialApp(title: Flutter Demo,home…

提升工作效率的好用的IDEA插件

主题/外观 Dracula Theme:主题 Vuesion Theme:主题 Atom Material ICons:ICON主题 Rainbow Brackets:括号着色,提升可读性 Nyan progress bar:把你的加载进度条全都变成彩虹和猫咪 Activate-power-mod…