- 博客(6)
- 收藏
- 关注
原创 进(线)程同步原语
<!--p {margin-bottom:0.08in}--> 现代操作系统的核心任务之一就是实现进线程的并发,因此必须采用一定的方法来消除进线程间的“竞态条件”(racecondition),
2012-09-26 11:50:22 4703
原创 (莱昂氏unix源代码分析导读-32) RK磁盘驱动
by cszhao1980别紧张,RK磁盘是一种非常简单设备——这一点从其代码量中也可以看出。首先,它由一个控制器外加 1~8个devices组成,这8个devices编号为0~7,缓冲头的b_dev的minor号记录的就是该device编号,为简单起见,我们不考虑多于8个device的情况——对RK磁盘来说,b_dev的minor部分就是0~7,而major部分为0。
2012-09-24 11:48:34 2918
原创 Linux线程模型概述
By cszhao19801. 轻量进程(LWP)我们知道进程拥有大量资源,如:(1)寄存器信息,如pc等;(2)Data段(3)Stack;(4)正文段(可与其他进程共享);(5)open 的file;(6)信号;(7)etc。 在进行context switch时,os必须妥善的保存进程的各种资源,开销较大,故进程有也被称为重量进程(HWP)。传统的
2012-09-21 11:07:59 5164
原创 (莱昂氏unix源代码分析导读-31) “缓存头”初探
By cszhao1980struct buf结构,又被称为“缓存头”结构,而buf[NBUF]数组被称为“缓存头”数组。顾名思义,“缓存头”结构应该是用于缓存处理的,事实上,它确实有这个功能——“缓存头”数组的每个entry可与系统的一个缓存区域对应,用于操控一个缓存区域。 4520: struct buf4521: {4522: int b_flags;
2012-09-17 15:05:59 2531
原创 (莱昂氏unix源代码分析导读-30) device
By cszhao1980我们现在必须放下身段看一看低层的IO操作了,复杂繁琐的外设。 PDP-11/40拥有两种外设:(1) Block device (2) Character device 简单说来,Block device以block来单位操作数据,而character device则以character为单位操作数据。我
2012-09-10 12:23:25 2658
原创 (莱昂氏unix源代码分析导读-29) swap in/out (下)
by cszhao1980最后,看一下我们的老朋友sched(),上次看到它还是在系统初启时,#0进程在sched()函数中调用sleep(&runout ,…)睡眠,从而让出cpu,切换至#1进程。 sched()函数是个黑洞,它内部是个死循环,永远也不会退出(除非出错)。也就是说#0进程将陷入在sched()中,而sched()用来进行调度,自此#0进程就蜕变为调度
2012-09-03 11:48:42 4027
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人