操作系统设计与实现 读笔(3)

  第三章:I/O。

  软件必须处理的问题:I/O硬件,I/O设备和I/O控制器的关系。

  I/O软件的四个层次:中断例程,设备驱动程序,设备无关I/O软件,以及在用户空间运行的I/O库和假脱机(?)。

  死锁概念:发生在一组进程都拥有对某些资源的互斥存取权,并且每个进程还要求仍属于该组中另一个进程的资源时。

  MINIX中的设备驱动程序是作为嵌入在内核中的进程来实现的。

  同步闹钟任务与任务系统不是设备驱动程序但在结构上非常相似。都有一个主循环取出请求并进行处理,逐渐送回回答消息报告发生的事件。所有的任务都位于相同的地址空间中。

  RAM磁盘,硬盘,软磁盘驱动器任务都是用一个相同的主循环拷贝,并共享相同的函数。不过,每个任务仍然是独立的进程。几种不同的使用系统控制台,串行线和网络连接的终端都由一个单一的终端任务支持。

  设备驱动程序和中断系统有许多不同的关系。

  1.能很快完成工作的设备如RAM磁盘和内存映像显示器根本不使用中断。

  2.硬盘驱动器任务在任务代码本身中完成了大部分工作,中断处理程序只返回状态信息。

  3.时钟中断处理程序本身执行了许多登记操作,只有在处理程序不能处理某项工作时才向时钟任务发送一条消息。

  4.键盘中断处理程序缓冲输入并且从不向它对应的任务发送消息,而是改变一个由时钟中断处理程序检测的变量,时钟中断处理程序将向终端任务发送一条消息。

  -----------------以上内容是课本小结!just copy......------------

  MINIX的源代码以及设备驱动程序的实现部分实在不好理解,太多的信号量,太多的进程关系的牵扯,太多的中断处理手段。真正的代码实现阶段非常之复杂,不单单是理论,更多的是实践经验和调试的最优结果的积累。

  (第二章读得比较仓促,带来了一些不好的影响,如果看完完全记不住的内容,还是早早跳过的好,硬着头皮读下去,也没有什么意义。maybe someday I can read this part again.who knows?)

  迈向第四章......(好心虚,呵呵呵呵。)

时间: 2024-11-08 14:34:55

操作系统设计与实现 读笔(3)的相关文章

操作系统设计与实现 读笔(2)

当开始阅读第二章后半部分关于MINIX的源码分析,如头文件的继承关系,C语言的使用技巧,#define #undef #endif ,很多汇编代码,kernel文件夹下的mpx386.s,start.c,main,c文件,以及后面关于中断处理,等等内容,实在难以在前后产生系统的,完整的联系与思路,难以继续推进. 遂,开始第3章. 注意点:认真读示例部分给出的伪代码,尽量理解原理,关于MINIX的具体实践,显然需要更深入的硬件理解能力,以及阅读工程性代码的能力,需要单独花时间,分模块地思考,仅仅根

操作系统设计与实现 读笔(5)

第五章,文件系统: 从外部来看,文件系统是一组文件和目录. 在内部看,文件系统却迥然不同.文件系统的设计者必须考虑到存储区如何分配以及系统如何记录文件使用了哪些块.不同的文件系统具有不同的目录结构.文件系统的可靠性和性能也是一个重要问题. 文件系统的安全和保护对用户和设计者都至关重要.我们讨论了早期系统中的一些安全缺陷以及大多数系统的共同问题.还讨论了身份确认.存取控制表.权限以及矩阵模型等. 详细研究了MINIX文件系统.MINIX文件系统很大,但并不复杂.它从用户进程接收任务请求,索引过程指

操作系统设计与实现 读笔(4)

第四章,存储器管理,小结: 交换:系统可以处理比内存所能容纳的更多的进程,得不到空间的进程将被换出到磁盘上.内存和磁盘上的空闲空间可以用位图或空洞表跟踪. 虚拟存储器:每个进程的地址空间都被划分为同样大小的称为页的块,可以被放到内存中任何可用的页框中去.有许多页面替换算法,最著名的两个是第二次机会和老化算法.为了使分页系统很好的工作,仅仅选择一个好的算法是不够的,还需注意确定工作集.内存分配策略.页面大小等等. 分段:有助于处理在运行中要改变大小的数据结构.简化链接和共享,为不同的段提供不同的保

物联网技术上面临的基本问题和操作系统设计

时下,在操作系统界,有一个热得发紫的名词"物联网操作系统",但物联网和操作系统究竟是什么关系,物联网将面临什么问题,操作系统又能为其解决什么问题呢? 操作系统和其他电子产品一样,是个不断迭代.与时俱进的一个东西,由用户需求.软件积累.硬件成本等共同推动发展,反过来又激发需求.定义硬件.在物联网时代,大家都在谈论物联网操作系统,我们要分析物联网的核心问题是什么,操作系统对于物联网,能做什么,不能做什么,它如何影响操作系统设计.最后,我们会发现,物联网的核心问题中,大多数问题,操作系统会表

【转】一种新的操作系统设计

我一直在试图利用程序语言的设计原理,设计一种超越"Unix 哲学"的操作系统.这里是我的设想: 这种系统里面的程序间通信不使用无结构的字符串,而是使用带有类型和结构的数据.在这样的系统里面,Unix 和其它类似操作系统(比如 Windows)里的所谓"应用程序"的概念基本上完全消失.系统由一个个很小的"函数"组成,每个函数都可以调用另外一个函数,通过参数传递数据.每个函数都可以手动或者自动并发执行.用现在的系统术语打个比方,这就像是所有代码都是&

Linux程序设计 读笔3 文件操作

一 linux文件结构 二 系统调用和设备驱动程序 三 库函数 四 底层文件访问 五 标准IO库 六 格式化输入输出 七 文件和目录的维护 八 扫描目录 九 错误处理 十

Python核心编程读笔 6: 条件和循环

第八章 条件和循环 一.if python中的条件表达式:很奇葩!!! smaller = (x < y and [x] or [y])[0] 或者: smaller = x if x < y else y 二.while 三.for 1 通过序列项迭代: for eachName in nameList:2 通过索引迭代: >>>for nameIndex in range(len(nameList)): ... print "Liu,", nameLi

dive into python 读笔(3)

chapter 6 异常和文件处理: # 使用 try...except 来捕捉异常 # 使用 try...finally 来保护额外的资源 # 读取文件 # 在一个 for循环中一次赋多个值 # 使用 os 模块来满足你的跨平台文件操作的需要 # 通过将类看成对象并传入参数,动态地实例化未知类型的类 chapter 7 正则表达式: ^ 匹配字符串的开始 $ 匹配字符串的结尾 \b 一个单词的边界 \d 任意数字 \D 任意非数字字符 x? 一个可选的x字符 x* 0次或者多次x字符 x+ 1

操作系统:设计与实现 读笔(1)

第一章,引言,草草略过,大致了解了,概要如下: 对操作系统有两种观点:资源管理器观点和扩展的计算机观点.从资源管理器观点看,操作系统的任务是高效地管理整个系统的各个部分:从扩展的计算机观点看,其任务是为用户提供一台比物理计算机更易于使用的虚拟计算机.操作系统的历史很长,从早期的代替操作员手工操作的系统,到现在的多道程序系统.任何操作系统的核心都是一套系统调用,系统调用界定了操作系统能完成的功能.对于MINIX,其系统调用分为六大类,第一类与进程创建和终止有关.第二类处理信号.第三类针对文件读写.