三、操作系统的内核
操作系统的内核是操作系统的核心部分。
它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。
我们常说的Linux,其实是指基于Linux内核开发的操作系统。
常见的Linux系统发行版有:Debian
,RedHat
,Ubuntu
,Suse
,Centeos
等等。
四、操作系统的用户态与内核态
unix与linux的体系架构:分为用户态与内核态。
用户态与内核态与内核态是操作系统对执行权限进行分级后的不同的运行模式。
1. 为什么要有用户态与内核态?
在cpu的所有指令中,有些指令是非常危险的,如果使用不当,将会造成系统崩溃等后果。
为了避免这种情况发生,cpu将指令划分为特权级(内核态)指令和非特权级(用户态)指令。
对于那些危险的指令只允许内核及其相关模块调用,对于那些不会造成危险的指令,就允许用户应用程序调用。
- 内核态(核心态,特权态加粗样式): 内核态是操作系统内核运行的模式。
内核态控制计算机的硬件资源,如硬件设备,文件系统等等,并为上层应用程序提供执行环境。 - 用户态: 用户态是用户应用程序运行的状态。
应用程序必须依托于内核态运行,因此用户态的态的操作权限比内核态是要低的,
如磁盘,文件等,访问操作都是受限的。 - 系统调用: 系统调用是操作系统为应用程序提供能够访问到内核态的资源的接口。
2.用户态切换到内核态的几种方式
- 系统调用: 系统调用是用户态主动要求切换到内核态的一种方式,
用户应用程序通过操作系统调用内核为上层应用程序开放的接口来执行程序 - 异常: 当cpu在执行用户态的应用程序时,发生了某些不可知的异常。
于是当前用户态的应用进程切换到处理此异常的内核的程序中去。 - 硬件设备的中断: 当硬件设备完成用户请求后,会向cpu发出相应的中断信号,这时cpu会暂停执行下一条即将要执行的指令,转而去执行与中断信号对应的应用程序,如果先前执行的指令是用户态下程序的指令,那么这个转换过程也是用户态到内核台的转换。
3.物理内存RAM(Random Access Memory 随机存储器)
物理内存是计算机的实际内存大小,它直接与CPU交换数据,也被称为主存。
4.虚拟内存(Virtual Memory)
虚拟内存是操作系统为了更高效率使用物理内存的一种概念,它是对物理内存的抽象。
windows上的虚拟内存和Linux上的swap交换空间都是虚拟内存的一种实现技术。
5. Swap交换空间
简单理解: 当某个应用程序所需的内存空间不够了,那么系统会判断当前物理内存是否还有足够的空闲可以分配给应用程序。
如果有,则应用程序直接进入内存运行;如果没有,系统就根据某种算法(如:LRU)挂起一个进程,将挂起的进程交换到虚拟内存Swap中等待,并将应用程序调入内存执行。
虚拟内存是被虚拟出来的,可以使用硬盘(不仅仅是硬盘)来作为虚拟内存。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/75263910ba2f20b7e0286849dcf80f3f.jpeg)
读者福利
更多笔记分享
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
实战项目源码》,点击传送门即可获取!**