首页 > 编程语言 >JavaEE初阶——认识操作系统

JavaEE初阶——认识操作系统

时间:2024-09-28 18:50:42浏览次数:3  
标签:初阶 操作系统 JavaEE 硬件 PCB 内存 进程 CPU

目录

一、操作系统

1、概念

2、操作系统的定位

二、什么是进程

1、什么是进程 /任务( Process/Task )

2、进程的描述与组织

3、PCB中描述进程的特征

4、进程调度的相关属性

1、进程的状态

2、优先级

3、上下文

4、记账信息

三、内存管理

1、虚拟地址空间

2、进程的内存分配

一、操作系统

1、概念

什么是操作系统呢?简单来说,操作系统就是一款管理硬件设备的软件。

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

对下:要管理相关的硬件设备。

总结:操作系统就是硬件、软件、用户之间进行交互的媒介!

常见操作系统:windows、Linux、mac、Android、iOS。

1、那么在这些操作系统中,我们最熟悉的应该是Windows系统,因为我相信大家平时使用的电脑都是装的Windows系统,也是最常用的操作系统。

2、Linux是程序猿必须掌握的一款操作系统,特别适合进行开发和部署。

3、Mac苹果电脑使用的操作系统,对新手来说不太友好,编程初学者还是建议上手Windows。

4、Android本质上来说也是Linux。

2、操作系统的定位

                                                      

1、系统调用

可以想象为->操作系统给应用程序提供的API。
比如有个程序想操作一下硬件设备,就需要先通过系统调用,把操作命令告诉给系统内核,内核调用驱动程序,进一步的操作硬件设备。

2、操作系统内核

操作系统的核心功能(管理,对上,对下)

3、驱动程序

应用厂商在开发硬件设备时会提供驱动,电脑装了相应的驱动,才能让电脑识别对应的硬件设备。

4、硬件设备

简单来说就是你撬开你的电脑后盖壳,看到的都是硬件设备。

二、什么是进程

1、什么是进程 /任务( Process/Task )

 进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程;
简单来说就是 一个跑起来的程序就是一个进程,没跑起来就不算进程!
这里我们可以同时按住键盘上的 Ctrl+alt+delete 就可以打开任务管理器查看进程。

那么在这张图里,红色箭头所指向的就是一些进程,比如wps,idea等等。那么看向右边,我们发现会有磁盘和网络两个栏,这就是我们所说的IO,那么影响IO快慢就会用到带宽这个词,每个进程都对应了一些资源,同时进程也是操作系统进行资源分配的基本单位。

2、进程的描述与组织


那么进程可以认为是“描述”+“组织”。

描述: 使用结构体(C语言的结构体) 来描述进程属性。
操作系统基本上都是 C/C++ 来写的。
用来描述进程的这个结构体这是一个结构体,不是硬件“PCB 板,这里起了个特殊的名字,叫做 PCB (进程控制块)。
组织: 通过双向链表,来把多个 PCB 给串到一起 (并不是一个单纯的双向链表)。
创建一个进程本质上就是创建一个 PCB 这样的结构体对象,把它插入到链表中销毁一个进程,本质上就是把链表上的 PCB 节点删除掉,任务管理器查看到进程列表,本质上就是遍历这个 PCB 链表。

3、PCB中描述进程的特征

1.pid 进程的身份标识符.(唯一的数字)
2.内存指针 指向了说自己的内存是哪些描述了进程持有了哪些硬件资源。

3.文件描述符表硬盘上的文件等其他资源。

这三条都是描述了进程持有哪些硬件资源。

那么相对来说,硬件资源,硬盘,网卡都好分,就是CPU资源不好分,假如进程有几百个,CPU呢?一个?答案不是,现在我们用的电脑基本都是多核CPU。

4、进程调度的相关属性

1、进程的状态

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

运行状态: 正在和我在一起的。
阻塞状态: 想象成出差了,短时间内无法到 CPU 上执行了。比如 进程 在进行密集的 IO 操作,读写数据。

注:很多操作系统不会明确区分就绪和运行。

2、优先级

意思就是先给谁发馒头,后给谁发馒头.给谁多发点, 给谁少发点。
进程也是有优先级的,操作系统进行调度并不是平均分配的。

那么这里就要谈到并行,并发的概念。

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

并发:

同一时刻,一个核心上只能运行一个进程.但是它能够对进程快速的进行切换.并发应用程序(程序猿)感知不到。只要切换速度足够快(2.4GHz, 每秒运行 24亿条指令),宏观上人感知不到。人看起来就感觉好像是这几个进程在同时运行。


比如 CPU 这个核心上,先运行一下 WPS,再运行一下 画图板, 再运行一下浏览器等。
因此往往也把并行和并发,统称为并发!!!
以后除非显式声明,否则谈到并发,就是指并行 + 并发。

3、上下文


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

比如我们以前打游戏,打到某一关,这个时候你应该去吃饭了,那么下一次你就希望继续你上次的关卡,从上次没打完的关卡继续打。
简单好理解为:存档,读档"。
上下文 本质上 就是你存档的内容。
进程的上下文,就是 CPU 中的各个寄存器的值。
CPU 内置的存储数据的模块。
保存的就是程序运行过程中的中间结果。
保存上下文,就是把这些 CPU 寄存器的值,记录保存到 内存中。

恢复上下文,就是把内存中的这些寄存器值恢复到PCB中。

4、记账信息


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

刚才谈到馒头不够吃,我们可以理解为每次分配给某个人1/100的馒头,馒头大小不均匀,那么下一次再分配给这个人的时候,我们就需要根据上次分到的馒头多少来决定这一次给他分配多少馒头。

OK,那么说到这里PCB的几个基本重要属性博主就已经介绍完毕了,要知道PCB中的属性是非常之多的,博主不可能一一介绍,上述的都是很重要的属性,希望大家可以认真体会理解!

三、内存管理

1、虚拟地址空间


对于内存,相信咋们学计算机的同学都已经很熟悉了,不能说非常精通,那也是绰绰有余丫。

那么实际上呢,我们平时所说的内存其实是虚拟内存,即虚拟地址空间。
程序中所获取到的内存地址,并非是真实的物理内存的地址.而是经过了一层抽象,虚拟出来的地址。

那么啥是内存呢?内存可以理解为内存条,上面可以存放很多的数据。

例如现在的酒店:我们在住酒店的时候,拿一层的房间来说,我们拿到对应房间的房卡,就可以住到我们对应的房间,那么房间一般是分布在一条大走廊的两侧,有很多的房间,每个房间都有自己对应的房间号,比如108,这个编号我们也称之为地址(物理地址)。那么根据每个房间号,就可以找到对应的旅客,这是不是体现出内存具有随机访问的特性!于是就有了数组取下标的时间复杂化度O(1)。

2、进程的内存分配

假如我们给进程1和进程2分配相应的内存空间:

那么这里我们可以想象一下,假如代码正常,运行不会出bug,那么进程就相安无事,但是如果如果代码不小心出 bug 了就可能导致 访问的 内存 就越界了。
不小心的指针变量,变成了 0x8000
明明是进程1 的 bug,却把进程 2 给搞坏了,很可能就会你写个程序,一运行,你的 chrome崩溃了.或者你的画图板溃了……

那么如何解决内存空间分配的问题呢?哎,正如开头所说,引入了虚拟地址空间

即代码里不再直接使用真实的物理地址了。而是使用虚拟的地址由操作系统和专门的硬件设备负责进行虚拟地址到物理地址的转换。

看下图所示:

即操作系统内核发现当前这里的地址超出进程1 的访问范围了。此时就直接会向进程反馈一个错误(具体来说是发送一个 SIGN SEGEMENT FAULT 信号,引起进程的崩溃)

简单来说就是:谁出了 bug,谁崩溃其他进程不受影响了!

那么虚拟地址空间目的就是为了避免进程之间相互产生影响!

那么有点人就会问了,有时候确实需要进程之间的交互怎么办呢?很简单,搞一个"公共空间",比如我们点外卖,外卖小哥说外卖到了,我说放在楼下桌子上,然后我再去拿,这样不就很好的解决了二者的接触。

感谢浏览!!!!

标签:初阶,操作系统,JavaEE,硬件,PCB,内存,进程,CPU
From: https://blog.csdn.net/weixin_72703349/article/details/142456351

相关文章

  • 欧拉操作系统进行分区挂载/data
    要有一个/data目录虚拟机上面的硬盘使用情况lsblkvdb,一块新的独立的硬盘空间这里先使用命令vgdisplay看下是不存在卷组的如果不存在pvdisplay命令则安装下yuminstall-ylvm2--releasever=7新建磁盘分区:fdisk/dev/vdbm接着输入p选择主分区,默认也可......
  • VMware安装Ubuntu操作系统 2024.9.27
    1.安装Ubuntu的官方网站是:https://www.ubuntu.com/download点进去可以直接下载文件下载会比较慢,我这点用了约5分钟然后就可以打开vmware,选择:就可以注册和使用了。笔记本电脑是这样的。。如果使用台式机,没有相应的硬件环境的话,就不要创建空的盘符了,就可以创建和导入镜像文......
  • 操作系统学习路线图
    基础阶段目标:了解操作系统的基本概念、功能、主要特性以及不同类型操作系统的特点,熟悉操作系统的发展历程。学习内容:操作系统的定义、作用、基本组成部分;进程、线程、内存管理、文件系统等基础概念;常见操作系统(如Windows、Linux、Unix等)的简单介绍与对比。推荐网站:StudyToni......
  • X86超云服务器安装麒麟操作系统踩坑记
    在项目现场用U盘安装X86架构超云服务器麒麟操作系统进行了两天才装好,就是之前的资料一个挂载方式需要从RW修改为RO一、复现步骤操作系统版本:银河麒麟高级服务器操作系统Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso(x86_64)使用Rufus工具制作U盘启动盘;修改启动项,选择从U盘......
  • 备战软考06——操作系统概述
    操作系统概述文老师软考教育◆操作系统定义:能有效地组织和管理系统中的各种软/硬件资源,合理地组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。◆操作系统有两个重要的作用:第一,通过资源管理提高计算机系统的效率;第二,改善人机界面向用户......
  • linux 操作系统下dig命令的使用和介绍
    linux操作系统下dig命令的使用和介绍dig(DomainInformationGroper)是一个强大的命令行工具,用于查询DNS(域名系统)服务器,获取有关域名及其相关记录的信息。它广泛用于网络管理和故障排除dig命令的基本功能查询DNS信息:dig可以查询各种类型的DNS记录,包括A记录(IP地址)、MX记......
  • 龙芯3A6000+loongnix20.6操作系统安装idea社区版2024和docker
    龙芯3A6000+loongnix20.6操作系统安装idea社区版和docker1.搭建目标:安装jdk8安装idea社区版-2024(需要jdk17)安装docker(可选)配置docker自动补全(可选)如何使用docker拉取镜像(可选)2.配置说明主机:中科云3A6000NUC操作系统:loonignix-20.63.安装jdk3.1安装jdk8打开桌......
  • 腾讯通RTX手机版解决方案:兼容Linux内核信创国产操作系统
    一、腾讯通RTX继续使用的核心痛点自从腾讯通RTX停止更新和官网下架以来,用户面临了一系列无法忽视的关键问题,这些问题严重影响了正常的工作流程:国产系统与移动端不可用:腾讯通RTX目前仅支持Windows和Mac系统,导致用户在国产操作系统及移动设备上无法使用,这不仅影响工作效率,还未能符合......
  • 腾讯通RTX手机版解决方案:兼容Linux内核信创国产操作系统
    一、腾讯通RTX继续使用的核心痛点自从腾讯通RTX停止更新和官网下架以来,用户面临了一系列无法忽视的关键问题,这些问题严重影响了正常的工作流程:国产系统与移动端不可用:腾讯通RTX目前仅支持Windows和Mac系统,导致用户在国产操作系统及移动设备上无法使用,这不仅影响工作效率,还未能符......
  • 建投数据自主研发相关系统获得欧拉操作系统及华为鲲鹏技术认证书
    近日,经欧拉生态创新中心和华为技术有限公司测评,建投数据自主研发的投资项目管理系统、全面风险管理信息系统、商业不动产业务系统,完成了基于欧拉操作系统openEuler22.03、华为鲲鹏Kunpeng920(Taisha200)的兼容性测试。测试结果显示,产品兼容性良好、整体运行流畅、性能表现优异,成功......