Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1618764
  • 博文数量: 197
  • 博客积分: 10046
  • 博客等级: 上将
  • 技术积分: 1983
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-07 12:36
个人简介

在外企做服务器开发, 目前是项目经理, 管理两个server开发的项目。不做嵌入式好久了。

文章分类
文章存档

2011年(2)

2010年(6)

2009年(18)

2008年(30)

2007年(100)

2006年(41)

分类: LINUX

2007-10-17 12:58:24

文件: cycle_buffer.rar
大小: 3KB
下载: 下载
文件: cycle_buffer_simple.tar.gz
大小: 4KB
下载: 下载
 
回想自己刚接触kernel的时候, 真是可怜, 身边连个指导的人 , 公司旁边的那个家伙老是问一句答一句, 这也正常, 因为大家是同事关系吗 , 他凭什么培训我呢?
 
经过4年, 自己对kernel还算是有了一些了解, 也要带新人入门kernel , 感觉自己真的是世界上最好心的leader , 每天挖空心思的写适合新人循序渐进和提高的例子, 锻炼他们, 让入门。
 
假如我刚毕业的时候 ,别人给我一个特好的例子, 并像我这样像老师批改作业似的, 我真就俄弥陀佛了 。
 
现在的年轻人太不知道珍惜了。 !~
 
 
 
cycle_buffer.rar 是先实现了一个简单的环形队列, 然后利用唤醒+等待队列 反复操作缓冲区, 确保写的时候 ,可以写最多, 读的时候一次多最多。
 
 
cycle_buffer_simple.tar.gz 是直接就利用 读写锚 来做的, 相当于把 唤醒功能什么的, 和唤醒队列混到 一起了, 代码实现起来比杂 , 有点乱。  不过功能比上面强, 上面的最大可写 MAXSIZE-1个字节, 下面这个可以写MAXSIZE 个字节。
 
 
 
实现复杂的环形buffer的功能

/*
* Author:
* Copyright (C) 2007  Bob Zhang
*
* 作业名称:
*        实现一个环形的缓冲区|外加一个pipe的功能
*
* 功能要求:
*         buffer的空间是有限的,但是又必须满足大于buffer空间的写入要求
*         实现一个类似管道的功能, 当数据被read以后, 数据就不存在了
*         无数据可读,读进程要睡眠,等待写进程唤醒
*         buffer满了,写进程要阻塞,直至被read进程读完以后唤醒(但是read进程不一定一次性读走所有的数据,这就要求writer进程不能
*         覆盖刚才还没有读完的数据
*
*
* 实现提示:
*         可以用一个数组,模拟cycle buffer
*         用两个锚来标记读和写的位置,看下图
*         读和写的时候,注意读锚和写锚的位置
*         |______R______W___________________| 和
*         |______W______R___________________|
*
* 性能:
*        要写满所有的剩余空间(不要覆盖未读的数据)
阅读(3697) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~