Linux内核中的P,V操作之V

V操作:也在文件:kernel/semaphore.c中。

void up(struct semaphore *sem)
{
unsigned long flags;

spin_lock_irqsave(&sem->lock, flags);
if (likely(list_empty(&sem->wait_list))) //在这里用list_empty判断sem的等待队列是否为空。
sem->count++; //如果为空则只是信号量的计数加1
else
__up(sem); //否则在这里去唤醒信号量的等待队列上的进程。
spin_unlock_irqrestore(&sem->lock, flags);
}
[……]

Read more

Linux内核中的P,V操作之P

最近作辅导讲到了P,V操作,我就在内核中看了一下Linux中的P,V操作的实现。很真是,理解比本科学习的时候深多了。操作系统中的P操作在Linux内核中对应的是down函数,V操作对用up函数。

void down(struct semaphore *sem)
{
unsigned long flags;
UTF8_EXCERP[……]

Read more

源代码中的中断分析(一)

(代码版本2.6.26)

中断描述符数组:irq_desc[]。include/linux/irq.h
extern struct irq_desc irq_desc[NR_IRQS];
由结构体struct irq_desc来构成中断描述符数组。
NR_IRQS:
#define NR_VECTORS 256
#define NR_IRQS (NR_VECTORS + (32 * NR_CPUS))
NR_CPUS:cpu数量。这个值是在编译内核时指定的。
[……]

Read more

Linux下UML工具和截图工具的使用

花了大半天的时间终于把HttpServer的需求文档写完了,其中还用到了UML工具和截图工具,作为一般使用这两个工具我个人认为还是很优秀的。现在就介绍一下。
UML工具:在百度摆了一下,出现了一个小工具gaphor。可是我安装了后发现,这家伙还的确有点不太好用,我问了小组的同学他们告诉我说可以使用[……]

Read more

使用drivel来写blog了

昨天看了王聪的blog才知道,原来blog也可以这样写阿--使用客户端软件来写。
这是我用一个客户端软件写的第一篇文章了,以后也就不用登录网站再写blog了,我们现在的网站是用wordpress搭建起来的,是用xmrpc.php这个文件来和客户端联系的。
不过也发现了这个客户端并不是很好,因为我的文章是使用了more标签的,
[……]

Read more

也配置了mutt+msmtp+getmail收发邮件

看了小组有人在用这样的组合来收发邮件,确实也很不错,对文本邮件的处理确实很快很方便。所以我也试了一下,先用了一个帐号来体验和磨合,等差不多来在把gmail的帐号转过去。下面是我的配置脚本,一部分是参考小组同学的,一部分是来自于网络。

mutt:
[……]

Read more