当前位置: 首页 > article >正文

Linux内核(一)——Linux内核简介

Linux内核简介

  • 1. 操作系统与内核概念
  • 2. 用户空间与内核空间
  • 3. 内核运行方式
  • 4. 单内核与微内核
  • 5. Linux内核的版本

1. 操作系统与内核概念

操作系统概念:操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分,这些部分包括内核、设备驱动程序、启动引导程序、命令行Shell或者其他种类的用户界面、基本的文件管理工具和系统工具。

内核的概念:内核(Kernel)是操作系统的核心部分,是操作系统中直接与硬件交互的部分。它是操作系统中最底层的软件,负责资源的管理和调度。

两者之间的关系如下表所示:
在这里插入图片描述

2. 用户空间与内核空间

用户空间:用户空间是普通应用程序运行的环境,它与内核通过系统调用进行交互。
内核空间:内核空间是操作系统核心运行的环境,它直接与硬件交互,控制所有系统资源。

两者之间的区别如下表所示:
在这里插入图片描述
运行在用户空间的应用程序调用内核的过程如下图所示:
在这里插入图片描述

3. 内核运行方式

内核在不同场景下如何运行代码,有两种方式——进程上下文中断上下文

进程上下文:进程上下文是指在操作系统内核中,代码以某个具体进程的身份运行。内核以进程为单位管理资源,当某个进程需要系统调用或被调度执行时,内核进入这个进程的上下文。

中断上下文:中断上下文是指当硬件或软件触发中断时,内核为快速处理中断服务例程而进入的一种特殊执行环境。它不属于任何进程,而是由中断硬件或内核主动触发。中断通常对应着一个中断号,内核通过这个中断号查找相应的中断服务程序,并调用这个程序响应和处理中断。之所以存在这样一个专门的执行环境,就是为了保证中断服务程序能够在第一时间响应和处理中断请求,然后快速地退出。

两者之间的区别如下表所示:
在这里插入图片描述
所有,处理器上所运行的东西就有下面这三种:
在这里插入图片描述

4. 单内核与微内核

单内核:单内核就是把它从整体上作为一个单独的大过程来实现,同时也运行在一个单独的地址空间上。因此,这样的内核通常以单个静态二进制文件的形式存放于磁盘中。所有内核服务都在这样的一个大内核地址空间上运行。内核之间的通信是微不足道的,因为大家都运行在内核态,并身处同一地址空间,内核可以直接调用函数,这与用户空间应用程序没有什么区别。这种模式的支持者认为单模块具有简单和性能高的特点。大多数Unix 系统都设计为单模块。

微内核:微内核的功能被划分为多个独立的过程,每个过程叫做一个服务器。理想情况下,只有强烈请求特权服务的服务器才运行在特权模式下,其他服务器都运行在用户空间。不过,所有的服务器都保持独立并运行在各自的地址空间上。因此,就不可能像单模块内核那样直接调用函数,而是通过消息传递处理微内核通信:系统采用了进程间通信(IPC)机制,因此,各个服务器之间通过IPC机制互通消息,互换“服务”。

两者的区别总结如下:
在这里插入图片描述
Linux 是一个单内核,也就是说,Linux内核运行在单独的内核地址空间上。不过,Linux汲取了微内核的精华。其引以为豪的是模块化设计、抢占式内核、支持内核线程以及动态装载内核模块的能力。不仅如此,Linux还避其微内核设计上性能损失的缺陷,让所有事情都运行在内核态,直接调用函数,无须消息传递。至今,Linux是模块化的、多线程的以及内核本身可调度的操作系统。

5. Linux内核的版本

Linux 内核有两种:稳定的和处于开发中的。稳定的内核具有工业级的强度,可以广泛地应用和部署。新推出的稳定内核大部分都只是修正了一些Bug或是加入了一些新的设备驱动程序。另一方面处于开发中的内核中许多东西变化得都很快。而且由于开发者不断试验新的解决方案,内核常常发生剧烈的变化。
在这里插入图片描述


http://www.kler.cn/a/405831.html

相关文章:

  • 基于C#和Sql Server 2008实现的(WinForm)订单生成系统
  • 入门训练营:正确洗手步骤识别图像分割
  • 京东面试题目分享
  • ARM的异常处理模式
  • 在 Ubuntu/Debian 上安装 Go
  • 最新《软件工程》选择题及答案
  • SpringCloud SaToken整合微服务 集成Redis 网关路由权限拦截 服务间内部调用鉴权
  • 自动驾驶3D目标检测综述(三)
  • Vue实训---2-路由搭建
  • STM32完全学习——使用标准库点亮LED
  • 微信小程序混合 h5 wx.miniProgram是 undefined
  • 版本控制和idea简体中文教程
  • 堆优化版本的Prim
  • 状态模式之状态机
  • Linux进阶:环境变量
  • 2024年Java面试题及答案整理(1000+面试题附答案解析)
  • 【openwrt】Openwrt系统的reboot流程
  • 解决Flink读取kafka主题数据无报错无数据打印的重大发现(问题已解决)
  • React前端框架有哪些?
  • Go语言中的条件变量:sync.NewCond