简介
许多类型的驱动程序编程都需要了解一些虚拟内存子系统如何工作的知识当遇到更为复杂、性能要求更为苛刻的子系统时,本章所讨论的内容迟早都要用到本章的内容分成三个部分
讲述mmap系统调用的实现过程讲述如何跨越边界直接访问用户空间的内存页讲述了直接内存访问(DMA)I/O操作,它使得外设具有直接访问系统内存的能力
Linux的内存管理
地址类型
Linux是一个虚拟内存...
分类:
系统相关 时间:
2014-10-09 17:12:38
阅读次数:
279
我们经常会在C程序中调用malloc()函数动态分配一块连续的内存空间并使用它们。那么,这些用户空间发生的事会引发内核空间什么样的反应呢?
malloc()是一个API,这个函数在库中封装了系统调用brk。因此如果调用malloc,那么首先会引发brk系统调用执行的过程。brk()在内核中对应的系统调用服务例程为SYSCALL_DEFINE1(brk, unsigned long, brk),参数brk用来指定heap段新的结束地址,也就是重新指定mm_struct结构中的brk字段。
br...
分类:
其他好文 时间:
2014-10-09 02:09:57
阅读次数:
279
类 dpif_class 抽象的是OVS交换机用户空间和内核层datapath的通信接口(通过netlink),分层是出于性能和生产效率的考虑,通过接口dpif_class,用户层ovs-vswitchd会把发送各种port,流表,查询等动作到内核层进行实际的运行,比方说我们添加一个port到o.....
分类:
其他好文 时间:
2014-10-05 20:14:58
阅读次数:
303
MogileFS:是一个开源的分布式存储,适用于存储海量的小文件。由LiveJournal旗下的DangaInteractive。这个公司还有memcache,MogileFS,Perlbal(http代理)等产品。其特点如下:1,工用于应用层(用户空间):无须特殊的核心组件,因为基于http或都nfs,一般客户端都支持。2,无..
分类:
其他好文 时间:
2014-10-05 03:52:18
阅读次数:
379
摘要:本文主要讲述进程的终止方式,以及如何使用exit()函数来终止进程,回收进程用户空间资源;分析了exit()函数与_exit()函数,return关键字的差异.同时详细解读了如何使用atexit()和on_exit()函数来注册终止处理程序....
分类:
其他好文 时间:
2014-10-03 13:40:44
阅读次数:
358
首先说一下keepalived:
Keepalived大致分两层结构:用户空间userspace和内核空间kernelspace
在
这个结构图里,处于下端的是内核空间,它包括ipvs和NETLINK两个部分。Ipvs的作用在前面的章节已经做过描述,不再重复叙述;netlink
提供高级路由及其他相关的网络功能,如果我们..
分类:
其他好文 时间:
2014-09-29 17:33:31
阅读次数:
231
When a process running in user mode requests additional memory, pages are allocated from the list of free page frames maintained by the kernel. This l...
分类:
系统相关 时间:
2014-09-28 22:27:25
阅读次数:
419
不带缓冲IO是指read(),write()等函数标准(带缓冲)IO是指fread(),fwrite()等函数实际上缓冲有两种,是用户空间上的缓冲(流缓冲区)和内核缓冲区。无论是不带缓冲IO还是标准IO都要通过系统调用将数据输入到内核缓冲区。所谓的带缓冲是指带流缓冲区。可以参考文章http://bl...
分类:
其他好文 时间:
2014-09-28 21:15:55
阅读次数:
211
kmalloc函数的内幕
不对所获取的内存空间清零分配的区域在物理内存中也是连续的flags参数
GFP_KERNEL
在空闲内存较少时把当前进程转入休眠以等待一个页面分配内存的函数必须是可重入的
GFP_ATOMIC
用于在中断处理例程或其他运行于进程上下文之外的代码中分配内存,不会休眠
GFP_USER
用于为用户空间页分配内存,可能会休眠
GFP_...
分类:
系统相关 时间:
2014-09-28 12:14:31
阅读次数:
291
ioctl
支持的操作,例如
简单数据传输控制动作,例如用户空间发起弹出介质动作反馈硬件的状态,例如报告错误信息参数配置,例如改变波特率执行自破坏
用户空间的ioctl方法原型:int ioctl(int fd, unsigned long cmd, …);每个ioctl命令就是一个独立的系统调用,而且是非公开的驱动程序的ioctl方法原型:int (*ioctl) (struct ...
分类:
系统相关 时间:
2014-09-27 23:37:30
阅读次数:
332