newlist

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

随笔分类 -  linux

摘要:1.5 内存资源内存分配管理是实现高性能网络协议栈的关键因素,操作系统中的网络协议栈需要连续高可靠地运行,因此它需要频繁的为接收到的数据包分配缓冲区,同时也需要拼房释放处理完的数据缓冲区。1.5.1 高速缓冲区内核使用函数kmalloc和kfree来分配和释放内存块。这两根函数的使用语法是用户空间C库函数的malloc和free类似。在内核的各种组件中,经常需要为同一类型数据结构分配多个实例,如存放网络数据包的Socket Buffer。当分配内存空间和释放内存的操作发生的非常频繁时,内核组件的初始化函数通常为自己初始化一个特殊的高速缓冲区来为其数据结构分配内存空间,在数据对象使用结束释放内存 阅读全文
posted @ 2012-10-01 15:14 一枚程序 阅读(334) 评论(0) 推荐(0)

摘要:模块功能的注册和取消应用程序的作用通常是运行后完成一定的功能,模块的主要任务是为当前内核中的其他组件提供服务。某个时候内核以模块的方式增加新功能,运行一段时间后,当不再需要这种功能时,可能将其移走。在系统启动阶段我们无从知道将会有什么功能以模块的形式加入到系统中,所以我们需要为模块提供接口来注册。内核中各个组件都有相应的模块注册的接口(如注册和取消网络驱动程序、文件系统、协议等)这些接口很容易从其函数名识别出来,一般是以register_...和unregister_...开始的函数。 阅读全文
posted @ 2012-10-01 11:05 一枚程序 阅读(285) 评论(0) 推荐(0)

摘要:自动装载模块除了使用以上命令工具外,内核模块可以在需要的时候自动装载到内核中。使用我们的签名介绍的工具装载模块和卸载模块需要用户的干预,而且处于安全原因只有根用户能使用insmod和rmmod来加载和卸载模块。虽然这样保证了安全,但却带来了不便。例如,当一个用户程序在运行过程中需要使用一个功能,但该功能的模块还没有加载到内核中,这就需要内核有能力自动调度模块到内核地址空间。 通常,在程序运行过程中如果需要的资源或某个设备驱动程序没有注册,内核会报错。你可以事先用内核函数request_模块申请需要的组件模块。为了使用这个函数,在配置内核时需要激活项Kernel Module Loaderre. 阅读全文
posted @ 2012-10-01 10:45 一枚程序 阅读(357) 评论(0) 推荐(0)

摘要:管理内核模块内核模块由目标代码组成,它在运行时装载到内核地址空间并运行。在系统启动时,内核事先并不知道会有什么功能的模块会装载到系统中,所以模块必须自己通知内核,让相应的组件知道模块加载与否。当模块移走时,它也需要移走所有在内核地址空间对它的引用,释放占用的系统资源。这里有两个方法是用来完成以上任务的。init_模块:向内核注册由模块提供的所有功能cleanup_模块:撤销任何有init_模块所作的功能。这两根方法每个模块都需要实现,在进一步深入理解模块的工作原理之前,我们首先给出一些常规的命令,以便了解如何从内核外来管理模块,用户可以用以下工具来手动插入和卸载模块1.插入模块insmod模块 阅读全文
posted @ 2012-10-01 10:10 一枚程序 阅读(650) 评论(0) 推荐(0)

摘要:Linux内核中的活动linux是支持多任务的操作系统,即多个应用程序可以在系统中同时运行。在多处理器环境下,执行多个应用程序的进程可以被并行处理,但进程并不是内核中能执行的唯一活动。内核中还存在几种其他形式的活动,在系统的运行股构成中起着重要作用。进程和系统调用什么是进程?进程(process)是一个正在执行的程序实例,各进程拥有自己独立的地址空间。进程通常在执行某个应用程序时启动,应用程序执行完成后结束。创建,空值和结束进程是操作系统内核的一项重要任务。在用户地址空间执行的进程是互斥的,他们只能访问系统分配给他们的存储空间。用户地址空间的进程也不能直接访问内核功能。当用户进程需要访问设备或 阅读全文
posted @ 2012-09-30 20:55 一枚程序 阅读(437) 评论(0) 推荐(0)

摘要:各组件的主要功能介绍如下:1.进程管理负责创建,结束进程,管理内核的活动,如软件中断、tasklet等,管理进程通信,如消息(message)、管道(pipe)等,实现进程调度(schedule)。进程调度是进程管理的重要任务,它处理所有活动的、等待被执行的和被阻塞(blocking)的进程调度,使所有应用和进程合理的共享处理器的运行时间。2.内存管理内存是系统最主要的资源之一,计算机的性能在很大程度上与其所配备的内存有关。linux内核内存管理的主要功能就是给进程分配地址空间,该地址指允许本进程自己访问。3.文件系统在linux操作系统中,文件系统是整个系统的中枢。linux与其他操作系统不 阅读全文
posted @ 2012-09-30 11:20 一枚程序 阅读(3600) 评论(0) 推荐(0)

摘要:内存管理 内核分别使用kmalloc和kfree函数分配和释放一个内存块。这两个函数的用法,类似于另外两个来自于libc用户空间库的姊妹函数malloc和free的调用。内核组建为同一种数据结构类型分配几个实例(instance)是很常见的事。当分配和回收经常发生时,相关联内核组件初始化函数(例如,路由表的fib_hash_init)通常会分配一块特殊的内存缓存,以作分配之用。当一个内存块被释放时,实际上是返回到当初被分配的同一个缓冲区中。内核维护的其专属内存缓存的一些网络数据结构的例子包括:套接字缓冲区描述符 这个缓存是由net/core/sk_buff.c的skb_init分配的,用于.. 阅读全文
posted @ 2012-09-28 19:31 一枚程序 阅读(207) 评论(0) 推荐(0)