Java中高级核心知识全面解析——从认识Linux操作系统开始(什么是操作系统?分类、内核、用户态与内核态)

一、操作系统简介

我通过以下四点介绍什么是操作系统:

  1. 操作系统(Operation System,简称OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石
  2. 操作系统本质上是运行在计算机上的软件程序
  3. 为用户提供一个与系统交互的操作界面
  4. 操作系统分内核与外壳(我们可以把外壳理解成围绕着内核的应用程序,而内核就是能操作硬件的程序)。


参考资料:《Java中高级核心知识全面解析》
有想要获取这份学习资料的同学可以点击这里免费获取

二、操作系统简单分类

  1. Windows: 目前最流行的个人桌面操作系统 ,不做多的介绍,大家都清楚。
  2. Unix: 最早的多用户、多任务操作系统 .按照操作系统的分类,属于分时操作系统。Unix 大多被用在服务器、工作站,现在也有用在个人计算机上。它在创建互联网、计算机网络或客户端/服务器模型方面发挥着非常重要的作用。
  3. Linux: Linux是一套免费使用和自由传播的类Unix操作系统.Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。

三、操作系统的内核

操作系统的内核是操作系统的核心部分。
它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。

我们常说的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交换空间都是虚拟内存的一种实现技术。

扫描二维码关注公众号,回复: 12121126 查看本文章

5. Swap交换空间

简单理解: 当某个应用程序所需的内存空间不够了,那么系统会判断当前物理内存是否还有足够的空闲可以分配给应用程序
如果有,则应用程序直接进入内存运行;如果没有,系统就根据某种算法(如:LRU)挂起一个进程,将挂起的进程交换到虚拟内存Swap中等待,并将应用程序调入内存执行。
虚拟内存是被虚拟出来的,可以使用硬盘(不仅仅是硬盘)来作为虚拟内存。

这就是为什么当我们运行一个所需内存比我们计算机内存还大的程序时,仍然可以正常运行,并感受不到内存的限制的原因。

参考资料:《Java中高级核心知识全面解析》
有想要获取这份学习资料的同学可以点击这里免费获取

猜你喜欢

转载自blog.csdn.net/Java_Caiyo/article/details/111331373