Java程序员应该掌握的底层知识】 03 操作系统

鸿蒙

在这里插入图片描述

操作系统

在这里插入图片描述
操作系统其实也是一个软件,既管理着硬件,又开放一些软件接口提供给用户。
在这里插入图片描述
操作系统基本分为内核kernel和外围, 内核主要和硬件打交道,外围就是和用户打交道。
在这里插入图片描述

内核的分类

在这里插入图片描述
就是将所有的功能都放在一块内存空间中,想要哪块功能就直接在内部找就行。
使用对象:PC phone

在这里插入图片描述
内核主要只负责进程调度一块,其他每一块都是分开的, 当请求某一块功能时如果没有,内核会通过定位寻找(可能通过网络)来找到对应的位置。微服务的设计理念,万物互联。 好处:可插拔,弹性部署。 缺点:相比宏内核,速度可能会稍慢一些,因为会有一个外部寻找的过程。
使用对象:弹性部署 5G IoT 智能家居

在这里插入图片描述
在内核已经功能的基础上,针对某一块功能进行扩展出额外的功能来,比如想支持office,就直接把操作系统整个变成使用office非常方便的系统。也就是说以某种应用来定制自身的内核
使用对象:科研 实验中 为应用定制操作系统 (类比于阿里的JVM定制多租户 request-based GC JVM)

VMM虚拟机监视器(Virtual Machine Monitor)

在这里插入图片描述
现代计算机硬件资源过剩,因此在操作系统和硬件之间虚拟出一层来,使得硬件的上方搭载若干个不同的操作系统来瓜分硬件资源,从而合理利用硬件资源。

流行的操作系统

现在市面上比较主流的三大操作系统:LINUX、MAC、WINDOWS

在这里插入图片描述

操作系统的分层

DOS
在最早的时候,操作系统是DOS,它非常的原始原生,它仅支持一个程序的运行,并且它自身需要完成整个工作,这包括需要手动和硬件系统打交道(这意味着你需要了解硬件的一些型号等等),当然,这样所有操作的暴露也自然是不安全的,因此想要通过一个命令直接删除一块硬盘是轻而易举的,因此DOS系统是病毒的天堂丝毫不夸张

现代操作系统

随着后续操作系统的发展,人们意识到了不行,觉得有必要将操作进行分层,将一些比较危险权重高的操作放在不是那么容易触碰的地方。并将操作系统分为了用户态和内核态
随后,硬件也开始根据不同的指令进行分层,以intel的cpu为例,分为4个级别:0,1,2,3,一般称之为ring0,ring1,ring2,ring3,越内层说明操作的资源越受保护, ring0存放着受保护的资源,而ring3则存放着不受保护的资源。

就linux系统而言,它使用了ring0和ring3。
内核态而言,可以访问ring0级别的指令,
用户态(应用程序)只能访问ring3级别的指令。

对于系统的关键访问,需要经过kernel的同意,从而保证系统健壮性。在内存空间中又分为了用户空间和内核空间,在DOS时代,因为可以自由操作,所以可以轻松的把操作系统干掉,但在现在,属于内核态的空间是不会被用户态破坏的,什么敏感操作都需要经过内核态审核。

因此,假如你仅仅想完成一个计算的话,在用户态就可以完成,但假如你想进行读取硬盘,写入网卡的等类似的敏感操作,此时都需要通过从用户态切换到内核态来完成。而读取完成后,又将切换回用户态,因此一个程序的运行过程,可能意味着两态切来切去。

如何调起内核态的操作
内核执行的操作都是通过函数的形式进行暴露的,想要进行内核调用都需要通过函数调用,LINUX大概有200多个系统调用:例如 sendfile read write pthread fork ,这些操作都需要交由内核态来完成,甚至于我们写的例如java的程序新起一个线程,写入文件等,都是使用的底层暴露的的内核函数调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值