JavaEE-操作系统

news2024/11/23 11:34:24

✏️作者:银河罐头
📋系列专栏:JavaEE

🌲“种一棵树最好的时间是十年前,其次是现在”

目录

  • 操作系统介绍
  • 操作系统的定位
  • 进程
  • 进程控制块
  • 内存管理
  • 进程间通信
  • 思维导图总结

操作系统介绍

操作系统是一组做计算机资源管理的软件的统称。目前常见的操作系统有:Windows系列、Unix系列、
Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等

操作系统是一个软件,搞管理的软件。

1.对下,要管理硬件设备

2.对上,要给软件提供稳定的运行环境

操作系统是软件,硬件,用户之间交互的媒介

PC端:Windows,Linux,Mac

移动端:Android,IOS

  • Windows

最熟悉的操作系统的是Windows.(使用门槛比较低)

Windows的发展:Windows98,2000,xp,vista,win7,win10,win11

  • Linux

Linux特别适合于进行开发和部署

应用范围:

1.服务器(MySQL)

2.嵌入式设备(在设备中内嵌了一个计算机)

(举例:冰箱,洗衣机,投影仪,空调…)(可编程的)

3.移动端设备(手机)

  • Mac

和Linux比较接近

  • Android

本质上也是Linux

  • 鸿蒙

本质上也是IOS

操作系统的定位

image-20221120094748879

  • 硬件设备:键盘,鼠标,内存,硬盘,风扇,电源。(电脑后盖打开看到的都是硬件设备)

  • 驱动程序:(JDBC的驱动程序就是让JDBC和各个数据库厂商的API进行适配)

硬件设备种类繁多,厂商各异。硬件厂商在开发硬件的同时会提供驱动,电脑装了驱动才能让系统正确的识别硬件设备。

  • 操作系统内核:操作系统的核心功能,管理。
  • 系统调用:操作系统给应用程序提供的API。(比如有个程序想操作一下硬件设备,就需要通过系统调用,把操作命令告诉给系统内核,内核调用驱动程序,进一步的操作硬件设备)

举例:在显示器上打印helloworld应用程序通过系统调用,通知操作系统内内核,内核通过驱动程序找到显示器或显卡这个驱动,然后通过显卡把数据渲染到界面上

  • 应用程序:举例Java程序。

进程

进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程;
同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。

如果不是正在运行的程序就不是进程。

ctrl+alt+delete=>任务管理器

image-20221120101437671

进程(process)也叫做任务(task)

句柄(handler)

系统中包括很多软件资源(进程是一种软件资源),写代码需要用到一些软件资源,软件资源在操作系统内核里。在应用程序的代码中不方便操作。

句柄相当于一个遥控器(简单的整数/编号),通过系统调用借助这个句柄就可以操作软件资源了

(指针也可以视为是句柄,不过它对应的是内存资源)

image-20221120103403618

每个进程都对应一些资源

硬盘和网络统称为IO,硬盘和网络有各自的读写带宽

衡量IO快慢就会用带宽这个词,带宽是一秒能写多少字节

MB:这里的B是Byte

Mbps:这里的b是bit

影响电脑卡的原因是进程多,而不是占用硬盘内存多

进程是操作系统资源分配的基本单位

进程是一个重要的软件资源,由操作系统内核管理。这个管理是描述(属性特征)+组织(用数据结构把多个这样的基本单位组织起来)

  • 描述

使用结构体(C语言)来描述进程属性(操作系统基本上都是C/C++写的)

用来描述进程的这个结构体叫做PCB(Process Control Block)进程控制块。

  • 组织

通过双向链表把多个PCB组织起来(并不是一个单纯的双向链表)

创建一个进程,本质上是创建一个PCB结构体对象,把它插入到链表中

销毁一个进程,本质上是把链表的PCB结点删除

任务管理器查看进程列表,就是遍历PCB链表

进程控制块

PCB里有哪些描述了进程的特征:

  • 1.pid进程的身份标识符(唯一的数字)

image-20221120110410744

  • 2.内存指针

指向了自己的内存是哪些

  • 3.文件描述符表

硬盘上的文件等其他资源

内存指针文件描述符表描述了进程持有哪些硬件资源

硬件资源,内存,硬盘,网卡都好分配,而CPU不好分配。

设备管理器=>处理器

image-20221120111206490

8核,16线程。一个CPU分为8个核心,每个核心又能一个顶俩(超线程技术),这种情况视为16核

进程有上百个,而CPU就几个,不够分配。

这些进程是希望能够"同时运行",“分时复用”

并行:微观上同一时刻,两个核心上的进程是同时执行的

并发:微观上同一时刻,一个核心上只能运行一个进程,但是它能够对进程进行快速的切换。

只要切换速度足够快(2.4GHz,每秒执行24亿条指令),宏观上人是感知不到的。看起来这几个进程好像是同时运行的。

并行和并发是内核负责处理的,但是应用程序感知不到,因此把并行和并发统称为并发。(除非显式声明,否则提到并发都是并行+并发)

操作系统中有一个重要的模块 调度器,就负责让有限的CPU资源调度执行这么多进程。

  • 4.进程调度相关的属性

1)进程的状态

就绪状态: 进程随时准备好了去CPU上执行

运行状态

阻塞状态: 短时间内无法到CPU上执行,比如进程在进行密集的IO操作,读写数据

很多操作系统不会明确区分就绪和运行状态

2)优先级

3)上下文

操作系统在进行进程切换的时候,就需要把进程执行的"中间状态"记录下来,保存好。下次这个进程再次运行的时候,就可以恢复上次的状态好继续向下执行。

“存档”,“读档”

上下文本质上就是你存档的内容,进程的上下文就是CPU中各个寄存器的值。(寄存器是CPU中内置的存储数据的模块,保存的就是程序运行过程中的中间结果)

保存上下文,就是把这些CPU寄存器的值,记录保存到内存(PCB)中。

恢复上下文,就是把内存中这些CPU寄存器的值恢复回去。

4)记账信息

操作系统统计每个进程在CPU上占用的时间和执行的指令数目,根据这个,来决定下一阶段如何调度。

内存管理

  • 虚拟地址空间:程序中所获取到的内存地址,并非是真实的物理内存的地址,而是经过了一层抽象,虚拟出的地址。

C语言里的指针提到的内存地址,就是虚拟的内存地址,并非真实的物理内存地址。

内存可以想象是一个大走廊,有很多房间,每个房间大小是1Byte,每个房间有个编号,从0开始依次累加

内存编号就是地址,这个地址是物理地址

内存有个特性:

随机访问:访问内存上任意地址的数据,速度都极快,时间上差不多

正是这个特点,造就了数组取下标操作是O(1)

image-20221120145726074

为了避免这种情况,

针对进程使用的内存空间,进行"隔离",引入了虚拟地址空间。代码里不再使用真实的物理地址,而是使用虚拟的地址。由操作系统和专门的硬件设备负责进行虚拟地址到物理地址的转换。

image-20221120152302346

MMU这个硬件设备能够让转换更快一点,很多时候集成在CPU里

CE是一个类似于"黑客"工具,功能是改另一个进程里的数据。

直接通过C里的指针操作,是无法针对另一个进程的内存进行修改的。

但是操作系统给我们提供了一些特殊的系统调用,通过这些系统调用我们就可以手动的操作另一个进程的内存数据了。

虚拟地址空间就是避免进程之间相互产生影响。

进程间通信

有时候进程之间需要进行数据的交互。需要实现一个多个进程都能访问到的"公共空间",基于这个公共空间来进行交互数据即可。

举例:外卖的"无接触配送"

外卖员把外卖放到约定好的位置,然后顾客去这个位置取外卖,两人没有接触,但是实现了外卖交接。

这里的通信方式有很多具体的体现方式

  1. 管道

  2. 共享内存

  3. 文件

  4. 网络

  5. 信号量

  6. 信号

思维导图总结

image-20221120170656837

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

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

相关文章

文献学习01_Attention Is All You Need_20221119

论文信息 Subjects: Computation and Language (cs.CL); Machine Learning (cs.LG) (1)题目:Attention Is All You Need (你需要的就是关注) (2)文章下载地址:https://doi.org/10.4…

今天给大家介绍一篇基于javaWeb的汽车订票系统的设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

牛客网之SQL非技术快速入门(3)-排序、关联关系

知识点: (1)order by colunm_name(s) ASC|DESC order by ID ASC,name ASC,sex DESC 不写就是默认升序,DESC降序 (2)3中关联关系:left join、right join、inner join/join 21、现在运营想要查…

【微信开发第四章】SpringBoot实现微信H5支付

前言 在进行微信公众号业务开发的时候,微信支付可以说是非常重要的一环。该篇文章每一步都有记录,力争理解的同时各位小伙伴也能够实现功能 文章目录前言1、公众号配置2、微信支付实现代码总结1、公众号配置 1、绑定域名 先登录微信公众平台进入“设置与开发”&…

阿里云架构实战之ALB(应用型负载均衡)介绍与搭建

ALB介绍 服务器端负载均衡SLB(Server Load Balancer)是一种对流量进行按需分发的服务,通过将流量分发到不同的后端服务来扩展应用系统的服务吞吐能力,并且可以消除系统中的单点故障,提升应用系统的可用性。 阿里云负…

代码随想录算法训练营第60天 | 一刷结束篇 84.柱状图中最大的矩形

代码随想录系列文章目录 一刷总结篇 文章目录代码随想录系列文章目录84.柱状图中最大的矩形dp 普通思路单调栈一刷总结篇84.柱状图中最大的矩形 题目链接 这道题和接雨水是两个相似的题,相辅相成的那种,双指针是过不了力扣的会超时,所以我也…

pandas提取键值对(json和非json格式)

(欢迎大家关注我的公众号“机器学习面试基地”,之后将在公众号上持续记录本人从非科班转到算法路上的学习心得、笔经面经、心得体会。未来的重点也会主要放在机器学习面试上!) 最近工作中需要解析一些有模型输入输出信息的csv日志…

SpringBoot+Mybaits搭建通用管理系统实例七:访问接口Api层功能实现

一、本章内容 系统api接口层实现,实现系统对外接口相应功能定义及实现,并通过Swagger实现接口文档的自动生成。 完整课程地址 二、开发视频 SpringBoot+Mybaits搭建通用管理系统实例二:api层实现 三、代码实现 使用基类的方式实现各方法接口的抽象实现,使用泛型的方式指定具…

linux上配置jdk和maven环境 (deepin适用)

前言 安装那些,就不说了,应该大家都下好才来配置的,下载安装的话,直接解压到一个目录就好,给个链接给你 jdk8下载链接: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 命…

Docker Buildkit(新增 --mount、--security、--network 等特性)

BuildKit是Docker官方社区推出的下一代镜像构建神器。 可以更加快速,有效,安全地构建docker 镜像,自 docker v18.06 版本起已经集成了该组件。 Buildkit 是下一代 docker 构建组件,拥有众多特性: 自动垃圾收集可扩展…

静态WEB容器镜像最小化实践

在现代的B/S架构应用中,我们会做前后端分离,某些前端Web服务会将编译完成的静态文件放到一个web服务器进行部署。例如,我的博客也是基于Hugo编译的静态文件来进行部署的。 那在容器化部署模式下,我们需要基于一个web服务的基础容…

js:什么是编译时和运行时

编译时 源代码编译为机器可执行的二进制码。 编译过程中一般会识别你代码中的语法错误等问题,这个错误就叫编译时错误,做的一些检查也叫做编译时类型检查或者静态类型检查,因为静态就意味着代码还没有放到内存里去运行,只是把代…

九.STM32F030C8T6 MCU开发之电源掉电数据保存案例

九.STM32F030C8T6 MCU开发之电源掉电数据保存案例 0.总体功能概述 使用STD库–en.stm32f0_stdperiph_lib_v1.6.0。 1.掉电数据保存背景 掉电保存数据的时间内 电源稳定。也就是数据保存时间要尽量短,电源稳定要尽量长。 第一种,采用备用电池的方法来实现,增加了电池和更…

DFS搜索和输出所有路径

文章目录1、DFS搜所有路径2、用栈记录和输出路径3、例题3.1 C代码3.2 Python代码4、真题4.1 C代码4.2 Python代码2022.12将出版蓝桥杯大赛用书《蓝桥杯大赛-程序设计竞赛专题挑战教程》,作者:蓝桥杯组委会、罗勇军。   这本书解析了蓝桥杯大赛的常见考…

PLC学习笔记(二):PLC结构(1)

目录: PLC学习笔记(一):概述 PLC学习笔记(二):PLC结构(1) PLC学习笔记(三):PLC结构(2) 🦁&…

嵌入式FreeRTOS学习十一,深入理解任务调度机制

一.任务调度机制 可抢占:高优先级的任务先运行时间片轮转:同优先级的任务轮流执行空闲任务礼让:如果有同是优先级为0的其他就绪任务,空闲任务主动放弃一次运行机会函数调用vTaskDelay( xDelay5ms )可以主动放弃任务执行&#xff…

大学物理·第8章【电磁感应、电磁场】

from now on, 以后的篇幅我都不会写太多了。因为效果也不一定有,还很浪费时间。 感应电动势 那个奥特曼变身器的符号是 磁链 看看划线公式即可 动生电动势:dξ vB dl 例 如果,到时候复习的时候觉得简单的话,就删掉好了 自感、互…

【HTML5】登录页面制作简易版

刚开始学习Java。文件的命名,讲道理应该以英文为主,但是英语又不好,所以只好用拼音,最痛苦的应该算是那些英语又不好,又想秀一下的程序员,一半英语一半拼音,如mainFangFa~~~你说看了糟心不糟心。…

山东大学线性代数-1-矩阵-1

目录 1.2 几种特殊的矩阵 1.2.1 方阵 1.2.2 零矩阵 1.2.3 对角矩阵 1.2.4 单位矩阵 1.2.5 数量矩阵 1.2.6 三角阵 1.2.7 梯形阵 1.3 矩阵的运算(一) 1.3.1 相等 1.3.2 加、减法 1.3.3 数乘 1.3.4 矩阵的乘法 1.4 矩阵的运算(二&#x…

SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.18 查询文档

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇4 数据层解决方案4.18 查询文档4.18.1 查询文档4.18.2 小结4.18.3 总…