Chinaunix首页 | 论坛 | 博客
  • 博客访问: 266999
  • 博文数量: 41
  • 博客积分: 397
  • 博客等级: 二等列兵
  • 技术积分: 325
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-24 23:10
文章分类
文章存档

2014年(3)

2013年(20)

2012年(14)

2011年(4)

分类: LINUX

2012-12-22 15:53:32

申明:本文根据笔者对于""理解而来,由于笔者英文水平及对于内核的理解都非常有限,文中不准确之处,望各位看官不吝赐教!

内核结构概览

  • linux内核主要由五个子系统组成:
1.进程调度器(Process Scheduler: SCHED),该子系统负责控制CPU资源在各进程间的分配。调度器必须能够确保系统中的各个进程都能较为公平的访问的CPU资源,并保证必要的硬件动作能够及时的得到内核的响应。

2.内存管理子系统(Memory Manager:MM), 该子系统运行系统上的多个进程安全的共享机器上的主存系统。此外还支持虚拟内存技术,该技术可以让系统中的进程访问比系统上有效的物理内存大得多的内存空间。未使用的内存会被换出到持久性存储设备中,当需要使用的时候再被换入到主存中来,当然这一切需要文件系统的帮助。

3.虚拟文件系统(Virtual File System: VFS),该子系统通过对提供一套统一的文件接口以屏蔽掉对各种各样的硬件设备的差异。此外,虚拟文件系统还支持各种能与其他各种操作系统兼容的文件系统格式。

4.网络接口(Network Interface: NET),该子系统支持对各种网络标准和网络设备的访问。

5.进程间通信(Inter-Process Communication: IPC),该子系统提供了几种机制以支持linux系统上进程与进程间的通信。

  • 各系统子模块的关系视图:
(1).上图首先着重强调了进程调度器是内核子系统中最核心的子系统:其他所有的子系统都会依赖于进程调度器,因为其他子系统都会需要去挂起和唤醒进程的。一般情况下,如果一个进程需要通过某个子系统去实施某个硬件操作,当该硬件操作无法马上完成需要进程进行等待时,则该子系统会挂起该进程的执行,直到硬件操作完成后才会去唤醒该进程。举个例子,如果一个进程希望借助网络发送一条消息,则网络接口子系统有可能会挂起该进程直到硬件正在的将消息发送出去了。在消息被发送出去后(或者是硬件返回一个错误),网络接口子系统会唤醒进程,并通过一个返回码表示发送消息的操作成功与否。其他子系统也因为同样的理由,对调度器有着依赖。

(2).当进程调度器需要唤醒某个进程时,需要内存管理子系统去调整该进程的内存映射。

(3).进程间通信子系统,需要借助内存管理子系统的帮助实现一种称为共享内存的通信机制,该机制支持系统中的进程除了访问各自私有的内存空间外,还可以访问一块共享的内存区域。

(4).虚拟文件子系统,需要通过网络接口实现NFS文件系统,此外还依赖于内存管理子系统去实现ramdisk的设备。

(5).内存管理子系统需要借助虚拟文件系统的帮助以实现内存页的换入换出操作。这也是内存管理系统对于进程调度器存在依赖的唯一原因。当某个进程访问了某块已经被换出的内存页时,内存管理系统会向虚拟文件系统发出换入该内存页的请求,并且向进程调度器发出挂起该进程的请求。
阅读(1434) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~