主要子系统

系统调用接口
SCI 层提供了某些机制执行从用户空间到内核的函数调用。正如前面讨论的一样,这个接口依赖于体系结构,甚至在相同的处理器家族内也是如此。SCI 实际上是一个非常有用的函数调用多路复用和多路分解服务。在 ./linux/kernel 中您可以找到 SCI 的实现,并在 ./linux/arch 中找到依赖于体系结构的部分。

进程管理
进程管理的重点是进程的执行。在内核中,这些进程称为线程,代表了单独的处理器虚拟化(线程代码、数据、堆栈和 CPU寄存器)。在用户空间,通常使用进程 这个术语,不过 Linux 实现并没有区分这两个概念(进程和线程)。内核通过 SCI 提供了一个应用程序编程接口(API)来创建一个新进程(fork、exec 或 Portable Operating System Interface [POSⅨ] 函数),停止进程(kill、exit),并在它们之间进行通信和同步(signal 或者 POSⅨ 机制)。
进程管理还包括处理活动进程之间共享 CPU 的需求。内核实现了一种新型的调度算法,不管有多少个线程在竞争 CPU,这种算法都可以在固定时间内进行操作。这种算法就称为 O⑴ 调度程序,这个名字就表示它调度多个线程所使用的时间和调度一个线程所使用的时间是相同的。O⑴ 调度程序也可以支持多处理器(称为对称多处理器或 SMP)。您可以在 ./linux/kernel 中找到进程管理的源代码,在 ./linux/arch 中可以找到依赖于体系结构的源代码。

内存管理
内核所管理的另外一个重要资源是内存。为了提高效率,如果由硬
VFS 在用户和文件系统之间提供了一个交换层管理虚拟内存,内存是按照所谓的内存页 方式进行管理的(对于大部分体系结构来说都是 4KB)。Linux 包括了管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。
不过内存管理要管理的可不止 4KB缓冲区。Linux 提供了对 4KB缓冲区的抽象,例如 slab 分配器。这种内存管理模式使用 4KB缓冲区为基数,然后从中分配结构,并跟踪内存页使用情况,比如哪些内存页是满的,哪些页面没有完全使用,哪些页面为空。这样就允许该模式根据系统需要来动态调整内存使用。
为了支持多个用户使用内存,有时会出现可用内存被消耗光的情况。由于这个原因,页面可以移出内存并放入磁盘中。这个过程称为交换,因为页面会被从内存交换到硬盘上。内存管理的源代码可以在 ./linux/mm 中找到。

虚拟文件系统
虚拟文件系统(VFS)是 Linux 内核中非常有用的一个方面,因为它为文件系统提供了一个通用的接口抽象。VFS 在 SCI 和内核所支持的文件系统之间提供了一个交换层。
VFS 在用户和文件系统之间提供了一个交换层
在 VFS 上面,是对诸如 open、close、read 和 write 之类的函数的一个通用 API 抽象。在 VFS 下面是文件系统抽象,它定义了上层函数的实现方式。它们是给定文件系统(超过 50 个)的插件。文件系统的源代码可以在 ./linux/fs 中找到。
文件系统层之下是缓冲区缓存,它为文件系统层提供了一个通用函数集(与具体文件系统无关)。这个缓存层通过将数据保留一段时间(或者随即预先读取数据以便在需要是就可用)优化了对物理设备的访问。缓冲区缓存之下是设备驱动程序,它实现了特定物理设备的接口。

Linux内核(2)——子系统相关推荐

  1. Linux如何禁用rc4加密算法,使用arc4算法的linux内核加密子系统

    我试图用"arc4"算法来加密来自模块的任意数据流 流.但我很担心我应该如何 接近后援实现一点点无知是使用arc4算法的linux内核加密子系统 $find . -type f - ...

  2. Linux内核crypto子系统的调用逻辑

    testmgr.c - crypto/testmgr.c - Linux source code (v5.15.11) - Bootlin 上述代码是内核内部即crypto子系统对外提供密码服务的测试 ...

  3. Linux内核--五大子系统

    linux内核的子系统有5个:1. 进程调度控制系统(SCHED):2.内存管理系统(MM),主要作用是控制多个进程安全地共享主内存区域:3.虚拟文件系统(VFS):4.网络接口(NET):5.进程间 ...

  4. Linux内核邻接子系统(arp协议)的工作原理

    主要参考了<深入linux内核架构>和<精通Linux内核网络>相关章节 文章目录 Linux内核邻接子系统(二层到三层) 邻接子系统的核心 struct neighbour ...

  5. linux内核网络子系统初探---概述

    linux内核网络子系统初探-概述 一.网络模型 简单介绍 学习网络时,必定能在各种教材资料里见到以下三种网络模型: 三种模型间的差异: OSI七层模型是理论上的网络模型,从功能方面分成了相对独立的7 ...

  6. linux内核分为子系统,Linux内核内存管理子系统分析【转】

    还是那张熟悉的老图:Linux内核子系统简介(由七个部分组成) Linux内存管理模型: 1. 内存管子系统职能: 1>  管理虚拟地址与物理地址的映射 2>  管理物理内存的分配 2. ...

  7. CVE-2021-20226:详解 Linux 内核 IO_URING 子系统中的引用计数漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士 趋势科技 ZDI 发布文章,详细描述了2020年6月收到的最近引入的 io_uring 子系统的引用计数漏洞情况.该漏洞导致在任意 fil ...

  8. linux启用dcb步骤,Linux内核DCB子系统

    q1. 网络设备是怎么利用linux内核的DCB子系统,来达到融合网络流量的各种各样的QoS需求的? q2.融合网卡或者存储流量是否也可以使用到DCB子系统,他们是怎样工作的? 本文将对上面这两个问题 ...

  9. linux内核DCB子系统

    q1. 网络设备是怎么利用linux内核的DCB子系统,来达到融合网络流量的各种各样的QoS需求的? q2.融合网卡或者存储流量是否也可以使用到DCB子系统,他们是怎样工作的? 本文将对上面这两个问题 ...

  10. linux内核驱动子系统,Linux 驱动开发 / IIO子系统入门1

    1. 什么是 IIO 子系统? 1.1 IIO 概述 Industrial I/O 子系统旨在为某种意义上是模数或数模转换器 (ADC,DAC) 的设备提供支持,于2009年由 Huawei 的 Jo ...

最新文章

  1. LabVIEW OCR 实现车牌识别(实战篇—3)
  2. silverlight之How To:设置ComboBox控件的数据源当ComboBox用来作为DataGrid的某列的编辑控件时...
  3. linux中cp:overwrite提示的问题
  4. python 用户输入_Python中如何让用户输入内容
  5. zoj3806Incircle and Circumcircle
  6. 【自适应盲均衡8】基于分数间隔的复数改进常模算法(FSE-MMA)的瑞利衰落信道盲均衡MATLAB仿真
  7. 回滚机制_【巨杉数据库SequoiaDB】巨杉 Tech | 并发性与锁机制解析与实践
  8. Redis整合Springboot实现数据共享
  9. 亚马逊出的平板电脑_亚马逊Fire HD 8 Plus评测:适合看视频和轻度游戏的廉价平板...
  10. 使用ArrayList对大小写字母的随机打印
  11. Linux系统好用吗
  12. [转载] Python水平自测!100道经典练习题.pdf(附答案)
  13. 《Java深入解析》阅读笔记二(运算符与表达式)
  14. unity图片变成马赛克如何取像素并改变颜色_Unity3D-2.5D像素游戏随机地形构造tilemap(rule tile)...
  15. 面向对象编程的四大特性
  16. 服装企业IT管理 应该这样当
  17. 【写博客常用】美赛成绩如何快速查询!
  18. 微信群消息自动转发另一群
  19. Java基础1-环境篇:JDK安装与环境变量配置
  20. c语言自动插桩,01 - LLVM Pass 实现 C函数 插桩

热门文章

  1. 剑指offer--反转链表
  2. 【接口篇 / Wan】(7.0) ❀ 05. 将 4G 作为备用宽带使用 ❀ FortiGate 防火墙
  3. Go语言读取文件的常用方式
  4. c++数独游戏3.2
  5. 毕业后成为大厂职业游戏建模师?门槛高不高,一看就知道
  6. JDK原生网络编程-NIO基础入门
  7. ubuntu下通过FreeTDS访问SqlServer(c++示例)
  8. JAVA:实现BloomFilter二进制向量数据结构算法(附完整源码)
  9. 正信光电新三板挂牌上市
  10. 【计算机组成与设计:软件、硬件接口(1)】计算机概要与技术