Linux内核分析(四)
两天没有更新了,上次博文我们分析了linux的内存管理子系统,本来我不想对接下来的进程管理子系统、网络子系统、虚拟文件系统在这个阶段进行分析的,但是为了让大家对内核有个整体的把握,今天还是简单的介绍一下剩余的几个子系统,我们对这几个子系统的分析,只要了解其作用和部分内容即可,不必深究,等我们写上几个驱动,到时候按照驱动再来分析这几个子系统我们就清晰多了。
在http://www.cnblogs.com/wrjvszq/p/4257164.html一文我们提到过linux由七个部分构成,最重要的四个子系统是内存管理子系统、进程管理子系统、网络子系统、虚拟文件系统、上次我们已经对内存管理子系统进行了分析(谈不上分析,只是个简单了解)。
所以今天我们会分析到以下内容:
1. Linux进程管理子系统
2. Linux网络子系统
3. 虚拟文件系统
4. Linux设备驱动简介
l Linux进程管理子系统
在进程管理中最重要的就是进程的调度和进程的通信下面我们一一分析。
1. 进程调度
进程调度使得多个进程增长CPU中“微观串行,宏观并行”的进行执行。进程调度处于系统的中心位置,内核中其他子系统都依赖于它。
a) 进程调度意义
进程调度使得多个进程增长CPU中“微观串行,宏观并行”的进行执行。进程调度处于系统的中心位置,内核中其他子系统都依赖于它。
b) 进程的状态切换
Linux的进程在几个状态间进行切换,如下图展现了其切换关系。
c) 进程调度策略
Linux中常见的有以下
1) SCHED_OTHER 分时调度策略。
2) SCHED_FIFO实时调度策略,先到先服务
3) SCHED_RR实时调度策略,时间片轮转
2. 进程通信
Linux支持进程间的多种通信机制,可以通过这些通信机制进行多个进程、多资源的互斥访问、进程间的同步和消息传递。
a) linux进程间通信方式
1) 管道:分为有名管道(用于同一系统间的任意进程)和无名管道(用于父子进程)
2) 信号量
3) 信号
4) 消息队列
5) 共享内存
6) 套接字(socket)
l Linux网络子系统
Linux网络子系统提供了对各种网络标准的存取和各种硬件的支持。下图是其整体结构。其可以分为协议层和网络驱动程序,其中网络协议主要负责实现每一种可能的网络传输协议,而网络驱动程序负责与硬件通信。
l Linux虚拟文件系统
Linux虚拟文件系统(VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,它是对各种文件系统的一个抽象,其实使用超级块super block存放文件系统相关信息,使用索引节点inode存放文件的物理信息,使用目录项dentry存放文件的逻辑信息,其整体架构如下。
l Linux设备驱动简介
上面的介绍很简单,仅仅是对这些子系统的概念什么的进行了简介,下面我们对linux设备驱动进行简单介绍。
1. 设备驱动分类
Linux分为下面三种基本设备。
a) 字符设备
是一种按照字节来访问的设备,字符设备适用于大多数的简单硬件。常见的LED、按键等
b) 块设备
是一种以块(通常为512字节)为最小访问单位的设备,常见的硬盘、SD卡等。但在linux中对块没有大小限制,可以访问任意数目的字节。
c) 网络设备
用来负责发送和接收报文的设备,比如网卡。
今天的简单分析就先到这里,我以后会慢慢的伴随着驱动的开发去分析内核,感谢大家的关注。