标签:添加模块 内存 分网 完整 性能 字符设备 函数 接收 种类
驱动提供机制(what),而不是提供策略(how);
根据内核完成任务的不同,可分为如下几个部分:
1. 进程管理
负责进程的的创建和销毁,并处理它们和外部之间的连接(输入输出)。不同进程之间的通信是整个系统的基本功能,因此由内核处理。
除此之外,控制进程如何共享CPU的调度器也是进程管理的一部分。
概括来说,内核进程管理就是在单个或者多个CPU上实现了多个进程的抽象。
2. 内存管理
内存是计算机的主要资源之一,用来管理内存的策略是决定系统性能的一个关键因素。
内核在有限的可用资源上为每个进程都创建了一个虚拟地址空间。
内核的不同部分在和内存管理子系统交互时,使用一组函数调用,如malloc/free,以及其他一些复杂的函数。
3. 文件系统
unix的每个对象都可以当做文件来看待。
内核在没有结构的硬件上构造了结构化的文件系统。
linux支持多种文件系统类型,实质上是在物理介质上组织数据的不同方式。
4. 设备控制
几乎每个系统操作最终都会映射到物理设备上。除了处理器,内存以及其他很有限的几个对象外,所有设备控制操作都由与被控制设备的相关代码来完成,即驱动程序。
内核必须为系统中的每个外设嵌入相应的驱动程序。
5. 网络功能
网络功能必须由操作系统管理,因为大部分网络操作与具体进程无关:数据包的传入是异步时间。在某个进程处理这些数据包之前,必须收集,标识,分发这些数据包。系统负责在应用程序和网络接口之间传递数据包,并根据网络活动控制程序的指向。
另外,路由和地址解析也都由内核处理。
linux内核提供的特性可在运行时扩展,即在系统启动并且运行时,我们可以向内核添加或从内核移除功能。
可在运行时添加到内核中的代码叫做“模块”。
linux内核支持好几种模块类型,包括但不限于设备驱动程序。
每个模块由没有连接成一个完整可执行程序的目标代码组成。
添加模块--insmod 移除模块--rmmod
linux将设备分为三种类型:字符设备,块设备,网络设备。
1. 字符设备:
字符设备是能够像字节流一样被访问的设备,由字符设备驱动程序实现这种特性。
字符设备驱动程序通常至少需要实现open,close,read,write系统调用。
字符设备可以通过/dev目录下的文件系统节点访问。
字符设备与普通文件的唯一差别:普通文件的访问可以前后移动访问的位置,而大多数字符设备是一个只能顺序访问的数据通道。
2. 块设备:
块设备和字符设备类似,也是通过/dev目录下的文件系统节点来访问。
块设备上能过容纳文件系统。
linux可以让应用程序像字符设备一样地读写块设备,允许一次传递任意多字节的数据。
块设备和字符设备的区别:仅仅在于内核内部数据的管理方式,也就是内核以及驱动程序之间的软件接口,而这些不同对于用户来说是透明的。内核中,字符驱动和块驱动具有完全不同的接口。
3. 网络接口
网络事务都是经过网络接口形成的。
通常,接口是个硬件设备,但也可以是个纯软件设备,比如回环接口。
网络接口由内核中的网络子系统驱动,负责发送和接收数据包,但它不需要了解每项十五如何映射到实际传送的数据包。
由于不是面向流的设备,因此将网络接口映射到文件系统的节点比较困难。unix仍然给它们分配一个唯一的名字(比如eth0),但这个名字在文件系统中不存在对应的节点。
内核和网络设备驱动程序之间的通信,完全不同于内核和字符以及块设备驱动程序之间的通信,内核调用一套和数据包传输相关的函数而不是read,write等。
标签:添加模块 内存 分网 完整 性能 字符设备 函数 接收 种类
原文地址:http://www.cnblogs.com/wanpengcoder/p/7074589.html