linux内核主要由进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)、和进程间通信(IPC)等5个子系统组成

他们的关系如下图 所示:

1.进程间调度:

精度调度控制系统中的多个进程对CPU的访问使得对个进程在CPU中微观串行,宏观并行的工作。进程调度处于子系统的中心位置,内核中的其他的子系统都依赖它,因为每个子系统都需要挂起或回复进程。

各个进程间的转化图如下:

2.内存管理:

控制多个进程安全地共享主内存区域,当CPU提供内存管理单元(MMU)时Linux 内存管理完成为每个进程进行虚拟内存到物理内存的转换。

地址空间如图所示:

3.虚拟文件系统:

Linux虚拟文件系统(VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的结接口。而且它独立于各个具体的文件系统,是对各种文件系统的一个抽象,它用超级块 super block 存放文件系统的相关信息,使用索引节点inode 存放文件的物理信息,使用目录项dentry存放文件的逻辑信息。

4.网络接口:

网络接口提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可以分为网络协议和网络驱动程序,网络协议部分负责实现一种可能的网络传输协议,网络设备驱动程序负责与硬件设备进行通信,每一种可能的硬件设备都有相应的设备驱动程序。

5.进程通信

Linux 支持进程间通信的多种通信机制,包含信号量、共享内存、管道等,这些机制可以协助多个进程、多资源的互斥访问、进程间的同步和消息传递。

linux内核的5个组成部分之间的依赖关系如下:

进程调度与内存管理之间的关系:

这两个子系统相互依赖,在多道程序环境下,必须为程序创建进程,而创建进程的第一件事情就是将进程和数据装入内存。

进程间通信与内存管理的关系:

进程间通信子系统要依赖内存管理支持共享内存通信机制,这个机制、允许两个进程除了拥有自己的私有空间,还可以存取共同的内存区域。

虚拟文件系统与网络接口之间的关系:

虚拟文件系统利用网络接口支持网络文件系统(NFS),也利用内存管理支持RAMDISK设备。

内存管理与虚拟文件系统之间的关系:

内存管理利用虚拟文件系统支持交换,交换进程间(swapd)定期由调度程序调度,这也是内存管理依赖于进程调度的唯一原因。当 一个进程存取的内存映射被换出时,内存管理向文件系统发出请求,同时挂起当前正在运行的进程。

除了这些依赖关系外,内核中的所有子系统还要依赖于一些共同的资源。这些资源包括所有子系统都用到的历程,如分配和释放内存空间额函数、打印警告信息的函数及系统提供的调试例程等。

阅读(1031) | 评论(1) | 转发(0) |

Linux内核的各个组成部分,Linux 内核的组成部分相关推荐

  1. linux内核烧制,学会分析Linux内核需要多久?8分钟

    Linux的最大的好处之一就是它的源码公开.同时,公开的核心源码也吸引着无数的电脑爱好者和程序员:他们把解读和分析Linux的核心源码作为自己的最大兴趣,把修改Linux源码和改造Linux系统作为自 ...

  2. 宏内核与微内核、Linux内核与Unix内核的区别

    宏内核:简单来说,就是把很多东西都集成进内核,例如linux内核,除了最基本的进程.线程管理.内存管理外,文件系统,驱动,网络协议等等都在内核里面.优点是效率高.缺点是稳定性差,开发过程中的bug经常 ...

  3. linux内核功能有,好消息!LINUX内核2.6.18终于支持实时功能了

    LINUX内核2.6.18终于支持实时功能了,这是个好消息.当LINUX实时功能加强后,它在嵌入式系统的应用就会更广泛了.在这一版发布前,为了使嵌入式系统的LINUX具有实时特性,需要给标准和LINU ...

  4. linux内核分两种,Linux内核版本

    Linux内核版本有两种:稳定版和开发版 ,Linux内核版本号由3个数字组成:r.x.y r:目前发布的内核主版本. x:偶数表示稳定版本:奇数表示开发中版本. y:错误修补的次数. 内核版本号每位 ...

  5. linux 3.5.0-23-generic内核版本系统调用数目,Linux操作系统分析(三)- 更新内核与添加系统调用...

    环境:Ubuntu 12.10     学号:SA****199 1.更新内核: 直接安装的系统内核版本一般不是最新,用 uname -a 查看一下 自己的版本,OK,我的是: Linux chenh ...

  6. linux c内核开发,嵌入式uClinux的内核结构和开发环境

    1 引言 嵌入式操作系统是嵌入式系统的灵魂,而且在同一个硬件平台上可以嵌入不同的嵌入式操作系统.比如ARM7TDMI内核,可以嵌入Nucleus.VxWorks.uClinux等操作系统.在此主要对u ...

  7. linux内核dma内存分配,Linux 4.x 内核空间 DMA 虚拟内存地址

    Architecture: i386 32bit Machine Ubuntu 16.04 Linux version: 4.15.0-39-generic 目录 DMA 虚拟内存区 在 IA32 体 ...

  8. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #6 使用localmodconfig缩短编译时间...

    HACK #6 使用localmodconfig缩短编译时间 本节介绍使用make localmodconfig生成精简的.config文件,缩短内核编译时间的方法. 为了能够应对各种各样的环境,发布 ...

  9. Linux内核源码分析--内核启动之(2)Image内核启动(汇编部分)(Linux-3.0 ARMv7) 【转】...

    转自:http://blog.chinaunix.net/uid-25909619-id-4938389.html 在完成了zImage自解压之后,就跳转到了解压后的内核(也就是vmlinux的bin ...

  10. linux内核分析 网络九,“Linux内核分析”实验报告(九)

    一 Linux内核分析博客简介及其索引 本次实验简单的分析了计算机如何进行工作,并通过简单的汇编实例进行解释分析 在本次实验中 通过听老师的视频分析,和自己的学习,初步了解了进程切换的原理.操作系统通 ...

最新文章

  1. 就在今晚 | 港科大李世玮教授问诊未来,开辟大湾区新航路
  2. COM和ATL学习方法
  3. java做条形图_使用Jfree实现吧条形图,java代码
  4. c语言代码表白_用微信表情翻译表白,程序员的小浪漫,赶紧Get起来
  5. js实现拖拽+碰撞+重力
  6. 学过物理的人才能看懂的笑话,你能看明白几个?
  7. HH SaaS电商系统的商品类目设计
  8. 前端学习(1272):Vue前端路由
  9. 看完后,别再说自己不懂用户画像了
  10. mysql innodb 写锁_MySQL-InnoDB-锁
  11. KVM Tracing, perf_events
  12. 涨姿势系列之——内核环境下花式获得CSRSS进程id
  13. 关于zlog库的快速使用教程
  14. 如何手动备份win10驱动和强制安装驱动
  15. u盘修复计算机系统,详细教你如何用u盘修复电脑系统
  16. 9、二极管的伏安特性
  17. 学习Struts2框架笔记-第1天
  18. 华为H3CNE认证题库、教材-热门下载帖汇总!
  19. ARP 项添加失败: 请求的操作需要提升
  20. vip地址能ping不通_ping不通地址

热门文章

  1. 009_JavaScript语句、表达式和代码块
  2. 063_object标签
  3. .net core3.0上传文件出现404_使用FTP代理功能连接空间上传文件(解决改善用户上传慢的问题)...
  4. 环形队列PHP,环形队列 - Go语言中文网 - Golang中文社区
  5. Android Studio 将项目转变成library(model)引入到另一个项目中使用
  6. python宏替换_#和##在宏替换中的作用
  7. shiro密码正确也会匹配错误_Shiro安全框架
  8. comsol如何设置距离梯度_如何在 COMSOL 软件中设置“优质的”CFD 网格
  9. php的框架目录,Laravel 框架目录结构
  10. securecrt是什么工具_网络总出故障,这几款工具你掌握了没?!!