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

[已解决]Arduino无法下载OpenCR库解决方法及opencr库下载失败等问题 [已解决]Arduino无法下载OpenCR库解决方法及opencr库下载失败等问题。亲测有效!!不是水文章的!!!以下方法是解决已安装Arduino的基础下!!! 阅读详情

一、操作系统简介

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

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

二、操作系统简单分类

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

5. Swap交换空间

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

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

C++线程同步——阻塞线程的方法 C头文件 <semaphore.h>中 sem_wait() 会阻塞当前线程 sem_trywait() 返回错误而不是阻塞调用 sem_timedwait() sem_timedwait的abs_timeout参数指定了调用应该阻塞的时间限制 信号量 信号量 (semaphore) 是一种轻量的同步原件,用于制约对共享资源的并发访问。在可以使用两者时,信号量能比条件变量更有效率。 定义于头文件 <semaphore> counting_semaphore 实现非负资源计数的信号 阅读详情

相关推荐

备战金九银十,java中高级核心知识全面解析,让你吊打面试官

本文限于篇幅,故而只展示目录的内容,完整的Java面试学习文档小编已经帮你整理好了,有需要的朋友点赞+关注私信我222免费领取Java、大厂面试学习资料哦!它是简单的字符串列表,你可以添加一个元素到列表的头部,或者尾部。如何设计一个高可用系统?身份认证优缺点分析以及常见问题解决方案。可用性的判断标准是啥?新的主服务器是怎样被挑选出来的?种数据类型对应的编码和数据结构。用户态切换到内核态的几种方式。有哪些提高系统可用性的方法?容器与虚拟机两者是可以共存的。使用数据库实现查找附近的人。...

uuqaz的博客 3307

多线程与线程池技术详解(图书配套)

本套视频为同名图书的配套视频,图书预计在2021.4上市

手把手教你用Zygo干涉仪分析光学元件:从原始数据到清晰面形图的完整滤波流程

本文详细介绍了使用Zygo干涉仪和MetroPro软件分析光学元件面形的完整滤波流程,从原始数据解析到清晰面形图生成。重点讲解了滤波策略选择、参数调优技巧及常见问题解决方案,帮助工程师高效处理干涉图数据,提升光学元件检测精度。

weixin_42641998的博客 410

【承】Redis 原理篇——Redis 高性能深入剖析

Redis 为什么这么快? Redis 到底有多快? https://redis.io/topics/benchmarks cd /usr/local/soft/redis-5.0.5/src redis-benchmark -t set,lpush -n 100000 -q 结果(本地虚拟机): SET: 51813.47 requests per second —— 每秒钟处理 5 万多次 set 请求 LPUSH: 51706.31 requests per second —— 每秒钟处理 5 万

weixin_42669785的博客 826

医学影像分割入门:为什么U-Net至今仍是肝脏CT肿瘤分割的‘首选’?

本文探讨了U-Net在肝脏CT肿瘤分割中的持久优势,分析了其轻量化设计、对称架构和跳跃连接如何完美适配医学影像的小样本、高精度需求。通过对比实验和实战建议,揭示了U-Net在肝脏肿瘤分割任务中超越新模型的根本原因,并提供了PyTorch实现和部署技巧。

weixin_38166931的博客 518

什么是三极管推挽电路

当没有信号输入时,电源通过PNP三极管EB间的二极管,然后通过NPN三极管BE间而二极管到地,这时这两个三极管都是导通的,三极管很容易由于电流过大而损坏。当输入信号为VCC时,上面的三极管导通,下面的三极管截止,输出信号为VCC-0.7V,这个0.7V就是上面NPN三极管BE间的导通压降。比如上面的三极管导通,那么输出电压就是输入电压减去0.7V,所以下面的PNP三极管由于基极电压大于发射极电压,是不会导通的。这是一个三极管推挽电路,上面是一个NPN的三极管,下面是一个PNP的三极管。

谢谢关注“小鱼教你模数电”,各平台同号 3373

快速掌握并发编程 --- 线程阻塞与唤醒

synchronized 结合java.lang.Object对象中的wait()、notify()、notifyAll()。 小伙伴们有兴趣想了解内容和更多相关学习资料的请点赞收藏+评论转发+关注我,后面会有很多干货。我有一些面试题、架构、设计类资料可以说是程序员面试必备! 所有资料都整理到网盘了,需要的话欢迎下载!私信我回复【111】即可免费获取 应用 线程 A publicclassThreadAextendsThread{pri...

m0_69424697的博客 473

Android音频子系统分析-car_audio_configuration.xml

先附上一个例子,再逐一解释。概括来说,该文件描述了车里有哪些区域,每个区域划分了多少组,每个组包含了哪些设备,每个设备接收哪些类型的音频流。

不定时记录分享一些有用没用的东西 989

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

如果没有,系统就根据某种算法(如:LRU)挂起一个进程,将挂起的进程交换到虚拟内存Swap中等待,并将应用程序调入内存执行。windows上的虚拟内存和Linux上的swap交换空间都是虚拟内存的一种实现技术。在cpu的所有指令中,有些指令是非常危险的,如果使用不当,将会造成系统崩溃等后果。它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。虚拟内存是被虚拟出来的,可以使用硬盘(不仅仅是硬盘)来作为虚拟内存。我们常说的Linux,其实是指基于Linux内核开发的操作系统。

2401_87034530的博客 405

YOLOv11改进 | 细节涨点篇 | DySample一种最新的轻量化动态上采样算子(效果完爆CARAFE)

本文给大家带来的最新改进机制是一种号称超轻量级且有效的动态上采样器——DySample。与传统的基于内核的动态上采样器相比,DySample采用了一种基于点采样的方法,相比于以前的基于内核的动态上采样器,DySample具有更少的参数、浮点运算次数、GPU内存和延迟。此外,DySample在包括语义分割、目标检测、实例分割、全景分割和单目深度估计在内的五个预测任务中,性能均优于其他上采样器(截至目前最有效的上采样算子),

Snu77的博客 4213

人工蜂群优化算法(ABC)详解:原理、实现与应用

人工蜂群算法(Artificial Bee Colony, ABC)是Karaboga于2005年提出的一种群体智能优化算法,其灵感来源于蜜蜂群体在自然界中高效的采蜜行为。该算法通过模拟雇佣蜂、观察蜂和侦察蜂三种角色的分工协作来寻找最优解。在ABC算法中,每个潜在的解决方案被视为一个“食物源”,其质量由适应度函数评估。雇佣蜂负责在已知优质食物源附近进行局部开采;观察蜂根据雇佣蜂分享的信息,以一定概率选择并跟进优质食物源;侦察蜂则随机探索新区域,防止种群陷入局部最优。

qq_42212808的博客 393

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

一、操作系统简介我通过以下四点介绍什么是操作系统:操作系统(Operation System,简称OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石;操作系统本质上是运行在计算机上的软件程序;为用户提供一个与系统交互的操作界面;操作系统分内核与外壳(我们可以把外壳理解成围绕着内核的应用程序,而内核就是能操作硬件的程序)。image二、操作系统简单分类Windows: 目前最流行的个人...

weixin_36125921的博客 404

YOLOv8【第一章:基础入门篇·第1节】一文搞定,核心架构深度解析与环境配置!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏,该专栏专注于分享我在YOLOv8目标检测模型中的实战经验,涵盖从入门基础到深度优化的全方位解决方案。无论你是计算机视觉的新手,还是具有多年深度学习经验的专家,本专栏都将为你提供高效、可复现的技术方案,助你掌握YOLOv8的核心技术,提升目标检测性能,突破瓶颈,优化模型,并加速项目开发🚀!

**My Coding Family** 2106

【操作系统】一篇文章带你快速搞懂用户态和内核态

用最通俗的方法讲解用户态和内核态,一篇文章带你彻底搞懂两者之间的区别。

小七的博客 8857

ROS与Qt5人机交互界面开发:添加rviz显示界面

最后,点击"完成"以创建新的Qt5应用程序项目。通过结合ROS和Qt5,您可以创建强大的人机交互界面,以实现丰富的机器人控制和数据可视化。在本教程中,我们将在主窗口中创建一个简单的按钮,用于启动rviz显示界面。在Qt Creator的槽函数编辑器中,为按钮添加一个槽函数,该函数将在单击按钮时调用。在上面的代码中,我们使用QProcess类启动了一个新的进程,并执行"rviz"命令来启动rviz显示界面。当您单击Qt5应用程序中的按钮时,将会启动一个新的rviz窗口,显示机器人数据的可视化界面。

CodeJolt的博客 2067

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

对操作系统中的用户态和内核态的理解

对操作系统中的用户态和内核态的理解

水w的博客 2555

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

在cpu的所有指令中,有些指令是非常危险的,如果使用不当,将会造成系统崩溃等后果。它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。用户态与内核态与内核态是操作系统对执行权限进行分级后的不同的运行模式。我们常说的Linux,其实是指基于Linux内核开发的操作系统。为了避免这种情况发生,cpu将指令划分为。操作系统的内核是操作系统的核心部分。unix与linux的体系架构:分为。

2401_87197132的博客 1810

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【Linux 源码】内核态到用户态

首先8259A芯片会产生一个中断标志,然后阵脚INT置为高电频,对应的中断向量位置置为高电频。或者int指令进行中断中断检测周期发现后,将CPU的INTR置为1,当CPU执行完最后一个指令(IF,ID,EXEC,MEM,WB)时,开始判断是否可以中断检查eflags的if标志位,是否是被清除的,是的话,不能中断CPU和8259A芯片连接的数据总线,解码获取到中断向量(与就是中断的程序位置)获取到后,和IDTR(baseaddr+offset)找到对应IDT。

学习学习学习学习 1516

Linux的内核态与用户态

引言:最近在看Java内置锁的实现时看到重量级锁的性能开销较大,主要因为使用重量级锁需要用到一个pthread_mutex_lock系统调用,导致Java程序需要在用户态和内核态之间切换,由于不太了解用户态和内核态到底是什么,所有今天来研究一下。 是什么? Linux体系中内核态与用户态是什么? 在Linux操作系统体系中,进程被分为2种类型,一种是操作系统自身运行的内核类进程,也被称为操作系统进程;另一种非操作系统进程运行在操作系统提供的能力之上的一种用户自定义的程序,我们将其称为用户类进程。 如上图所

张念磊的博客 1888
上一篇: Java中高级核心知识全面解析——HTTPS中的TLS(从密码学的角度理解 HTTPS【TLS 工作流程、公钥密码】、TLS 总结)
下一篇: Java中高级核心知识全面解析——Redis(集群【概述{主从复制、哨兵、集群化}、数据分区方案、节点通信机制、数据结构简析】)5
JavaCaiy
博客等级 码龄6年 1万+粉丝 95原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值