Java EE|软件视角下的操作系统

news2024/10/6 8:39:55

前言

虽然,本文我们主要讨论的是软件视角下的操作系统,但是我们还是对操作系统做一个整体概述即软件+硬件角度说明。因为细节很多,所以整篇文章会比较长,请屏幕前的你做好准备嗷~

文章最后附本文的思维导图

操作系统的概念及常见的OS举例

定义:操作系统就是一组做计算机资源管理的软件统称,英文名字叫做operating system,简称OS。

简而言之,它就是一类用来做管理的、分配资源的软件。如果把整个电脑比成一个公司,那么操作系统就相当于是董事长或者总经理。

常见OS举例

  1. windows系列,我们常用的基本上就是这个windows系列。
  2. Linux系统,是我们程序猿必须要掌握的系统。为什么呢?因为它特别适合开发和部署,比如服务器、嵌入式设备以及移动端设备基本上都是使用的linux系统,并且目前公司中绝大多数使用的都是这个系统,而非我们更为熟知的Windows。
  3. Mac系统,也就是苹果电脑中用的系统。
  4. Android系列,是手机端的操作系统,在谷歌旗下,本质上也是linux
  5. ios系列,也就是苹果手机中的OS,与mac系列是同根同源的。
  6. 鸿蒙……

操作系统的定位以及它的功能/职责/作用

定位:

1.是设备中软硬资源的管理者

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vZmQ35UP-1668925514459)(F:\typora插图\image-20221120114054969.png)]

2.是程序跑起来的必备条件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CupnvFKS-1668925514461)(F:\typora插图\image-20221120120658256.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nxuSdtwK-1668925514462)(F:\typora插图\image-20221120114758206.png)]

补充知识

电脑能直接识别的只有机器语言(机器码、0、1组成的字符串序列),前辈们为了方便使用,设计了汇编语言(指令集,由一些单词组成的字符集),通过汇编语言操作电脑。但是这还不够方便,所以后来又发展出来了高级语言,我们可以通过高级语言来操作。例如java,编译后生成字节码文件(高级语言----》汇编语言),运行时,字节码变成机器码,被电脑识别(汇编语言—》机器语言)。

操作系统因为对硬件和软件方向都需要是绿灯,所以,需要提供一套指令集方便使用者编写、同时方便电脑硬件识别,以便于驱动硬件,完成程序的执行。但是不同的OS厂商设计的指令集会有所不同,所以,他们提供的驱动程序也不尽相同。

功能

操作系统(OS)是硬件、软件、用户之间交互的媒介。对上(一般的app),起着给软件提供稳定的运行环境的作用;对下,起着硬件设备管理的作用。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-icziZ09K-1668925514463)(F:\typora插图\image-20221120121003108.png)]

全程高能!!!敲黑板警告!!!

一、进程概念(感性认知)

我们已经知道了,OS为软件提供了操作环境。那么具体是怎么操作的呢?OS对软件通过进程来管理。那么什么是进程呢?

概念:一个跑起来的程序,就叫做进程/任务。进程英文名字叫做process,任务名字叫做task。

例如,我们windows系统就可以通过ctrl+alt+delete调出我们的任务管理器,其实也就是我们这里的进程管理器。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mZhijhwA-1668925514463)(F:\typora插图\image-20221120121526833.png)]

这里我们需要区分两个概念

进程&程序

1.从概念角度而言

程序:是一套数据处理的步骤,是静态的,表现为一个或一组文件。

进程:进程是程序的一次执行过程。

2.从用户角度而言

一个程序可以多次执行即有多个进程,甚至可以多次同时执行(宏观角度)。进程是程序在运行时的视觉主体。

3.从OS角度而言

进程是OS进行资源分配的基本单位/最小实体。

进程是一个非常重要的软件资源,是由操作系统内核负责管理(描述和组织)的。

那么OS究竟是怎么进行描述和组织的呢?我们接下来详细讨论讨论这个问题。

二、进程的描述和组织!!!

描述

进程的描述一般并不是单个数据能够描述清楚的,往往是一组数据。

在java中,我们可以用类/对象来描述这一组数据,C/C++中用的是结构体来描述的。他们都有一个共同的名字叫做进程控制块****,英文名字叫做process control block简称PCB。

而不管是结构体表示还是类/对象表示,它们的组成都是不变的,都必须包含以下四部分/具有以下四部分特征:

①进程的唯一标识——pid

②内存指针。注意这里的指针不是C/C++的指针,而是一个形象比喻,毕竟我们还有说java呢–它描述了进程关联的程序信息,例如那个程序加载到那个内存里去了。主要解决的就是内存分配的问题,比较重要!。

**③文件描述赋表。**也就是分配给这个资源使用的其他资源的信息。

④进程调度信息。主要解决的就是cpu资源的分配。非常重要!!因此,我们在下边专门开了一个小节讨论这部分内容。

PCB的这四个特性解决了OS操作中/资源分配中的进程标识、内存分配、CPU分配这三个主要问题。


我们在idea或者vs上边打印地址其实并不是真正的地址,有人说哈希出来的虚拟地址,这种说法对吗?我们在后边专门开了一个小节讨论这个问题。


组织

通过一定的数据结构来组织。这里采用的就是一个双向链表来把多个PCB给串到了一起。

大体认知

在基本了解了进程描述和组织之后,我们不难有这样的结论:

  • 创建一个进程,本质上就是创建一个PCB这样的(结构体)对象,把它给插入链表中。

  • 销毁一个进程,本质上就是把链表中的一个PCB对象给删除

  • 任务管理器查看到进程列表,本质上就是遍历这个PCB链表。

三、进程描述之进程调度/CPU分配详解!!!

首先说结论,OS对CPU资源的分配,采用的是时间模式,即不同进程在不同时间段去使用CPU资源。

既然要讨论CPU分配,我们首先需要对它有一个基本的了解吧。

1.什么是CPU?

CPU是一块超大规模热集成电路,是一台计算机的运算核心和控制中心。

2.CPU的分类

决定一棵CPU战斗力的要参数包括“三大两小”。三大:核心数/线程数、频率、架构;两小:缓存、工艺。

这里我们主要关注的是核心数/线程数。

我们经常看到类似于这样的术语“8核16线程”,它的含义就是一个CPU分成8个核心,每个核心又能一个顶俩(超线程技术)。我们可以把每个核心都视为一个独立的CPU。

这里我们注意要区分进程和线程的概念,由于篇幅原因,这里我将会在第6个小节中对它进行说明。这里我们只需要简单知道进程和线程是一对多的关系即可。

了解完cpu,我们现在再来思考一个问题,cpu的核心/线程数是有限的,而我们需要处理的数据是海量的,这样就无可避免的会造成一个问题,那就是进程/线程并发。而谈到并发我们又往往会联想到并行,所以,我们再来讨论一下cpu资源分配过程中的并发和并行问题。

先来说结论,我们是希望同时进行的,为的是效率更高一些,为此,前辈们提出了一个概念——分时并发,同时涉及到并行和并发。

并行,微观上来讲,就是同一时刻,两个核心上的进程时可以同时执行的,宏观上也是同时执行的。【可以理解为平行关系,互不干扰完全没问题】

并发,微观上来讲,就是同一时刻,一个核心的多个线程是不可以同时执行的。一个核心一次只能执行一个线程,但是他能对进程进行快速的切换。宏观上,好像是同时执行的。

可以暂时这样理解:并行的讨论的基本单位是cpu的核心,并发讨论的基本单位是进程。

因此,分时并发就可以解决数据量比较大的时候程序的运行问题,服务于很多的进程。另外,宏观而言,并行和并发我们并不能区分,因此很多时候我们把并行和并发统称为并发,如果不显式声明的话。

讨论完cpu和并行并发这些背景知识,我们来看进程到底是怎么调度的?

进程的调度通常是通过调度器完成的调度器有以下几种核心属性

  1. 进程的状态

    • 就绪状态:随叫随到,就成随时准备好了去cpu上执行
    • 运行状态:正在执行
    • 阻塞状态:短时间内无法响应……
    • ……(其他的了解/用到再查也可以,先掌握这些重要的)
  2. 优先级

    进程之间也是有优先级的,联想优先级队列

  3. 上下文

    情景:加到一半断电了。此时就需要有人/部件记录这个状态,在cpu中当一下子加载不完也是需要上下文这个功能。

    上下文本质上就是我们存档的内容。

    进程的上下文就是cpu中各个寄存器的值。(联想cpu的功能)

    保存这些上下文,就是把这些cpu寄存器的值,保存到内存中去。恢复上下文就是把这些cpu的值加载回去。

  4. 记账信息

    操作系统中,统计每个进程再cpu上占用的时间和指令的舒木木,根据这个决定来决定下一阶段如何调度。

    相当于一个会议记录,方便复盘。

四、进程描述之内存管理/内存分配!

首先说结论,OS对内存资源的分配,采用的是空间模式,即不同进程使用内存中的不同区域,互相不会干扰。

既然要讨论内存,我们首先需要对它有一个基本的了解吧。

1.什么是内存?

内存是内存器,一般表现形式有内存条等等。

2.内存功能

暂时存放 CPU 中的运算数据, 以及与硬盘等外部存储器 交换数据。

3.内存条简单介绍

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TZ3X63eW-1668925514464)(F:\typora插图\image-20221120131248114.png)]

虚拟地址与物理地址:

物理地址:真实的内存地址

虚拟地址:物理地址被操作系统转换后的地址

这么做的原因是:同一个进程不一定会被放在内存的同一个位置,而且不同的进程因为地址的不同,而且可能不连续,编写程序会变得很复杂。

虚拟地址是暂时承诺给你,等你需要(访问这段内存)的时候才会给你分配内存

五、进程之间通信

进程一多,无可避免的会带来一些问题,比如进程相互影响的问题。我们可以把它们全部隔离吗?不可靠,如果这些进程之间有相互依赖/配合的关系呢?需要他们进行相互配合。

这个时候我们就需要在隔离性的基础上“开个口子”,搞一个多个进程都能访问到的“公共空间”,基于这个公共空间来交互数据。

通信方式/公共空间有很多具体的体现形式,我们重点掌握两种**,基于文件和基于网络**即可。

六、相关拓展知识(了解即可)

进程和线程的区别

  1. 线程是依赖于进程存在的
  2. 进程和线程是一对多的关系
  3. 进程是os资源分配的基本单位,线程是cpu调度的基本单位

内存管理主要研究的问题

  1. 那些内存已经被分出去,那些还没有
  2. 已经分配出去的内存什么时候回收,怎么进行回收
  3. 物理地址到线性地址的转换。。。
  4. 内存碎片问题。。。

在这里插入图片描述

参考

CPU
OS

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

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

相关文章

步进电机实验

一、实验目的: 掌握步进电机的控制方法 二、实验内容与要求: 编写实验程序,利用8255的B口来控制步进电机的运转。 三、实验环境: PC机一台,TD-PITE实验装置一套。 四、实验步骤: 1、参考下图连接实验…

Linux下如何操作寄存器

本期主题: linux下操作寄存器 往期链接: linux设备驱动中的并发linux设备驱动中的编译乱序和执行乱序linux设备驱动之内核模块linux字符驱动linux字符驱动之ioctl部分linux字符驱动之read、write部分linux驱动调试之Debugfs 文章目录1.为什么有这个问题…

内网信息收集(基于红日靶场1)

net view # 查看局域网内其他主机名 net config Workstation # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域 net user # 查看本机用户列表 net user /domain # 查看域用户 net localgroup administrators # 查看本地…

合宙esp32 环境搭建和使用方法

文章目录1.环境搭建2.问题2-1:exec: "cmd": executable file not found in %PATH%3.合宙esp32 使用3-1引脚定义3-1-1:板载LED3-2下载程序:3-3测试程序4.ESP32-C3开发板相关资料1.环境搭建 1-1:下载esp32 安装包 链接&a…

[一篇读懂]C语言八讲:数据结构概述

[一篇读懂]C语言八讲:数据结构概述1. 与408关联解析及本节内容介绍1 与408关联解析2 本节内容介绍2. 逻辑结构与存储结构1 逻辑结构2 存储结构顺序存储链式存储3 顺序存储与链式存储分析顺序存储优缺点链式存储优缺点3. 时间复杂度与空间复杂度1 算法定义2 时间复杂…

攻防世界1-misc

1-misc 题目描述:无 题目环境:https://download.csdn.net/download/m0_59188912/87094807 打开压缩包,提示密码是出题人生日。 使用archpr爆破压缩包。 得到密码:20001228 解压压缩包,得到两个文件,一个图片…

[附源码]java毕业设计网吧购物系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【CSDN|每日一练】代写匿名信

目录 运行结果题目描述输入描述:输出描述:示例代码结语运行结果 题目描述 小Q想要匿名举报XX领导不务正业! 小Q害怕别人认出他的字迹。 他选择从报纸上剪裁下来英文字母组成自己的举报信。 现在小Q找来了报纸,和自己的举报信的Txt, 你能帮他确定一下是否能够完成匿名信…

6242. 二叉搜索树最近节点查询

目录题目关键词代码题目 给你一个 二叉搜索树 的根节点 root ,和一个由正整数组成、长度为 n 的数组 queries 。 请你找出一个长度为 n 的 二维 答案数组 answer ,其中 answer[i] [mini, maxi] : mini 是树中小于等于 queries[i] 的 最大值…

Vue-Router学习记录

目录 一.使用路由 1.1配置路由 1.2采用路由 二.路由懒加载 三.路由重定向 四.嵌套路由 五.路由跳转 1.1标签式 1.2编程式 1.3路由的query参数 1.4命名路由 前言: vue 属于单页面应用,所谓的路由,就是根据浏览器路径不同,用不同的…

常见Lidar点云数据处理及可视化软件汇总

常见的点云处理及可视化软件有: CloudCompare、Globalmapper、Pix4d、ArcGIS(Pro)、Lidar 360、PCL等等。 文章目录1. CloudCompare2. Globalmapper3. Pix4d4. ArcGIS(Pro)5. Lidar 3606. PCL1. CloudCompare CloudCo…

2022年11月20日 15点 纳指正在走到一个黄金分割点附近,是否会真的按照自然规则做调整,可以看看数据的威力。

行情核心源头: 纳斯达克指数, 是否会符合大数据规则,走黄金分割线规则 [数据说话] 第一波下跌3820, 反弹2299点,反弹了60%,接近61.8%第二波下跌4159,反弹2612,反弹了62.8%,接近61.…

借助第三方工具网站完成消息自动推送

文章目录前言pushplus是什么pushplus测试使用代码发送注意的问题总结前言 寻找消息推送的起因是之前买过一台云服务器,用于开发环境搭建和学习,最近想用它进行一些数据分析,而数据分析的结果如果每次都需要登录服务器来看就有点“太老土”了…

今天解决了一个主从延迟导致超发的问题

主从同步过程 MySQL主从同步由主节点dump线程、从节点 I/O 线程、从节点SQL线程三个线程配合完成。 1、从节点上的 I/O 进程主从去连接主节点,并带上同步的开始位置即指定日志文件的位置之后的日志内容 2、主节点接收到来自从节点的 I/O 请求后,通过主…

c风格字符串,数组,string ,vector

c风格字符串,数组,string ,vector 数组 数组下标 数组下标通常定义为 size_t type arrayName [ arraySize ][arraySize1]; arraySize必须是一个大于等于零的整数常量。 1因为sizeof的计算值是个常量,所以sizeof的计算值和字…

深度学习基础-2

文章目录0 前言1 全连接神经网络2 激活函数2.1 Sigmoid2.2 Tanh2.3 ReLU2.4 Leaky ReLU3 交叉熵损失4 计算图与反向传播4.1 计算图4.2 梯度消失与梯度爆炸4.3 动量法5 权重初始化5.1 全零初始化5.2 标准随机初始化5.3 Xavier初始化5.4 Kaming初始化6 批归一化7 参考资料0 前言 …

腾讯云轻量应用服务器内网连接互通有什么限制?

腾讯云轻量应用服务器内网连接互通有什么限制?腾讯云轻量应用服务器可以通过内网访问同地域下的云数据库、云服务器CVM或负载均衡等实例吗?不可以,只能通过公网连接互通,主机教程网来详细说下腾讯云轻量应用服务器内网互通限制说明…

快速MOCK数据并插入数据表中(MySQL)

问题描述:在学习使用SQL语句操作数据库的时候,添加十几二十条数据总感觉不够直观,如何快速批量制造相对真实的假数据,以供测试使用? 一、操作步骤 1.准备一张表 CREATE TABLE IF NOT EXISTS products (id INT PRIMA…

关于qt中label挡住了dockwidget的窗体边缘

关于qt中label挡住了dockwidget的窗体标题 1.问题描述: dock_Image new QDockWidget(tr("图像"), this);setCentralWidget(dock_Image);imgLabel new QLabel(dock_Image);imgLabel->setScaledContents(true); // 设置QLabel自动适应图像大小//dock…

win下载安装不同java版本教程

不同版本jdk下载与安装 1. 下载 最全java版本官方下载地址https://www.oracle.com/java/technologies/downloads 下载.exe安装文件即可 2.安装 下载后双击exe程序即可安装,在第二布时要特别注意:安装路径不要有中文或含有空格 3.检查java是否安装成…