曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 7261|回复: 0
打印 上一主题 下一主题

内核的组成部分

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2009-7-31 19:37:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Linux内核主要有 5个子系统组成:进程调度 (SCHED) ,内存管理 (MM) ,虚拟文件系统 (VFS) ,网络接口 (NET)和进程间通信 ( IPC )。

1、进程调度
进程在进程调度子系统中微观串行,宏观并行。其余 4 个子系统都依赖于进程调度系统,因为每个子系统也需要挂起或恢复进程,当它们需要做这些工作时,都得和进程调度子系统打交道。

进程的睡眠有两种情况,一种是因为得不到请求的资源而进入“深度睡眠” (TASK_UNINTERRUPTIBLE),深度睡眠直到得到请求的资源后才会醒来,其间不可被打断;另外一种是由于时间片用完,而进入的“浅度睡眠”(TASK_INTERRUPTIBLE),在浅度睡眠时,如果给进程发一个信号,它就会醒过来。

在设备驱动编程中,当请求的资源不能得到满足时,驱动一般会调度其他进程执行,其对应的进程进入睡眠状态,直到它请求的资源被释放,才会被唤醒而进入到就绪状态。

设备驱动中,如果需要几个并发执行的任务,可以启动内核线程,启动内核线程的函数为:
int kernel_thread (int (*fn) (void *), void *arg, unsigned long flags);

2、内存管理
内存管理的主要作用是控制多个进程安全地共享主内存区域。当 CPU 带有内存管理单元 (MMU)时,Linux 内存管理完成为每个进程进行虚拟内存到物理内存的转换。Linux 2.6 内核可以支持无 MMU 的 CPU .

一般而言,Linux 的每个进程享有 4GB 的内存空间,0~3GB 属于用户空间,3~4GB 属于内核空间,内核空间对常规内存,I/O 设备内存以及高端内存有着不同的处理方式。

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


4、网络接口
网络接口提供了对各种网络的标准存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序,网络协议部分负责实现每一种可能的网络传输协议,网络设备驱动程序负责硬件设备进行通信,没一种可能的网络硬件设备都有相应的设备驱动程序。Linux 网络体系结构如下图示:


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


这 5 个子系统之间的相互关系为

进程调度和内存管理之间的关系
这两个子系统互相依赖,创建进程的第一件事情就是将程序装入内存。

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

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

内存管理与虚拟文件系统之间的关系
内存管理利用虚拟文件系统支持交换,交换进程 (swapd) 定期由调度程序调度,这也就是内存管理依赖于进程调度的唯一原因。当一个进程存取的内存映射被换出时,内存管理向文件系统发出请求,同时,挂起当前正在运行的进程。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-3 13:13 , Processed in 0.065485 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表