SunBo

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 32 下一页

2011年3月4日

摘要: printf("/033[字背景颜色;字体颜色m字符串/033[0m" ); printf("/033[41;32m字体背景是红色,字是绿色/033[0m/n"); 41是字背景颜色, 32是字体的颜色, 字体背景是红色,字是绿色是字符串. 后面的/033[0m是控制码. 颜色代码: QUOTE: 字背景颜色范围: 40--49 字颜色: 30--39 40: 黑 30: 黑 41: 红... 阅读全文
posted @ 2011-03-04 08:48 SunBo 阅读(1868) 评论(0) 推荐(0) 编辑

2011年2月25日

摘要: 原文地址:http://joelonsoftware.com/articles/fog0000000069.html [感想] 工程师总是喜欢另起一套东西,一套自己熟悉的东西。对于过往的代码,往往会因为可读性差而决定放弃使用他们,更宁愿重头再来重写一份代码。 其实很能理解。代码在长久的维护过程中,慢慢腐坏变得越来越丑陋是司空见惯的事,对于这样的代码,团队的老成员都会头皮发麻,团队新手进来就更难以溶入了。非常多的工程师在代码维护成本高达至不堪忍受时,都会想要放弃原代码从头再来。 还真是。我在接手站长天下代码,要将其改成淘宝外店时,也是觉得“非重构不可... 阅读全文
posted @ 2011-02-25 02:27 SunBo 阅读(281) 评论(0) 推荐(0) 编辑

2011年2月22日

摘要: 开篇: 有两种方式构建软件设计:一种是把软件做得很简单以至于明显找不到缺陷,另一种是把它做得很复杂以至于找不到明显的缺陷。 ——C. AR. Hoare 厚的人生中的成功需要的专注于坚持不懈多过天才和机会。 ——C. W. Wendte 1. 简介 Python语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序。计算机内部,Python解释器把源代码转成成为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。 2. 安装Python 略… 3. 最初的步骤 a. 简介 有两种使用Python方式运行你的... 阅读全文
posted @ 2011-02-22 03:36 SunBo 阅读(602) 评论(0) 推荐(0) 编辑

2011年2月9日

摘要: AFC(或AFT)是“自动频率控制”(或“自动频率调整”)的英文缩写。AFC电路在电子设备中被广泛用作重要稳频或锁相的电路中。这个电路功能有二:一是对接收信号频率的跟踪与锁定;二是相位的跟踪与锁定。彩电中高频调谐器的本振电路就利用了AFC的频率跟踪特性,电路结构见图l。 外来的高频电视信号与高频头本振电路送出的振荡信号.在混频器中差频,得到38MHz的图像中频信号,再送入中放电路。若混频器输出的图像中频信号频率偏离38MHz,鉴频器将能检测其变化,并转换成对应的直流电压Uafc去微调本振频率。这个直流电压就是AFC电压,用以保证混频器输出的中频信号频率始终为38MHz。 值得一提的是:现在.. 阅读全文
posted @ 2011-02-09 10:37 SunBo 阅读(3506) 评论(0) 推荐(0) 编辑

2011年1月14日

摘要: 本文详细的介绍了Linux内核中的同步机制:原子操作、信号量、读写信号量和自旋锁的API,使用要求以及一些典型示例 一、引言 在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。 在主流的Linux内核中包含了几乎所有现代的操作系统具有的同步机制,这些同步机制包括:原子操作、信号量(semaphore)、读写信号量(rw_semaphore)、spinlock、BKL(Big Kernel Lock)、rw... 阅读全文
posted @ 2011-01-14 05:20 SunBo 阅读(269) 评论(0) 推荐(0) 编辑

摘要: 1 Linux进程的睡眠和唤醒 在Linux中,仅等待CPU时间的进程称为就绪进程,它们被放置在一个运行队列中,一个就绪进程的状态标志位为TASK_RUNNING。一旦一个运行中的进程时间片用完, Linux内核的调度器会剥夺这个进程对CPU的控制权,并且从运行队列中选择一个合适的进程投入运行。 当然,一个进程也可以主动释放CPU的控制权。函数schedule()是一个调度函数,它可以被一个进程主动调用,从而调度其它进程占用CPU。一旦这个主动放弃CPU的进程被重新调度占用CPU,那么它将从上次停止执行的位置开始执行,也就是说它将从调用schedule()的下一行代码处开始执行。 ... 阅读全文
posted @ 2011-01-14 03:27 SunBo 阅读(4185) 评论(0) 推荐(0) 编辑

2011年1月6日

摘要: 转自:http://blog.chinaunix.net/u3/112940/showart_2450064.html 由于前两天在看netconsole的源码实现中,发现其跟printk的实现机制相关,加之之前一直是很普通的使用printk,从不清楚printk到底是怎样工作的,因此就趁这个机会把printk的实现代码也给大致看了一下,代码流程并不复杂,下面就简要说明一下。 printk在内核中的实现代码如下。 asmlinkage int printk(const char *fmt, ...) { va_list args; int r; /*将fmt后的参数信息保存到args中*/ v 阅读全文
posted @ 2011-01-06 09:35 SunBo 阅读(4020) 评论(0) 推荐(0) 编辑

摘要: 内核通过 printk() 输出的信息具有日志级别,日志级别是通过在 printk() 输出的字符串前加一个带尖括号的整数来控制的,如 printk("<6>Hello, world!/n");。内核中共提供了八种不同的日志级别,在 linux/kernel.h 中有相应的宏对应。#define KERN_EMERG "<0>" /* system is unusable */#define KERN_ALERT "<1>" /* action must be taken immediately * 阅读全文
posted @ 2011-01-06 09:34 SunBo 阅读(849) 评论(0) 推荐(0) 编辑

2010年12月24日

摘要: 1. I/O模型 Unix下共有五种I/O模型 a. 阻塞I/O b. 非阻塞I/O c. I/O复用(select和poll) d. 信号驱动I/O(SIGIO) e. 异步I/O(Posix.1的aio_系列函数) 1). 阻塞I/O模型 应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。 如果数据没有准备好,一直等待。。。。 数据准备好了,从内核拷贝到用户空间 I/O函数返回成功指示2). 非阻塞I/O模型 我们把一个套接口设置为非阻塞就是告诉内核,当所请求的I/O操作无法完成时,不要将进程睡眠,而是返回一个错误。这样我们的I/O操作函数将不断的测试 数据是否已经准备好,如果没 阅读全文
posted @ 2010-12-24 09:11 SunBo 阅读(1357) 评论(0) 推荐(0) 编辑

2010年12月22日

摘要: 结构体file_operations在头文件 linux/fs.h中定义,用来存储驱动内核模块提供的对设备进行各种操作的函数的指针。该结构体的每个域都对应着驱动内核模块用来处理某个被请求的 事务的函数的地址。举个例子,每个字符设备需要定义一个用来读取设备数据的函数。结构体 file_operations中存储着内核模块中执行这项操作的函数的地址。一下是该结构体 在内核2.6.5中看起来的样子:struct file_operations {struct module *owner; loff_t(*llseek) (struct file *, loff_t, int); ssize_t(*r 阅读全文
posted @ 2010-12-22 15:21 SunBo 阅读(13474) 评论(1) 推荐(3) 编辑

上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 32 下一页