存档

文章标签 ‘明朝历史’

操作系统阅读笔记002

2011年3月10日 没有评论

操作系统执行两个相对独立的任务:1)扩展机器 2)管理资源。一般程序员并不想涉足硬件编程的具体细节,程序员需要的是一种简单的,高度抽象的处理。在磁盘的情况下,典型的朝向是包括一组已经命名文件的一个磁盘。每个文件可以被打开或读写,然后读写完毕,最后被关闭。诸如记录是否应该使用修整的调频记录方式,以及当前电机的状态等细节,不应该不出现在提供给用户的抽象描述中。于是,操作系统为程序员隐藏硬件的实际细节,并提供一个可读写的,简洁的命名文件视图。它屏蔽了磁盘硬件,并提供了一个简单的,面向文件的接口,操作系统还隐藏了大量与中断,定时器,存储管理以及其它与低层特征有关的细节。无论在哪种情况下,操作系统索提供的抽象都比底层硬件所能提供的更简单和更易于使用。从上述角度看,操作系统的作用是为用户提供一台等价的扩展机器(extend machine)或称为虚拟机(virtual machine),它比底层硬件更容易编程。概括来说,操作系统提供各种类型的服务,程序可以通过使用称为系统调用的特殊指令来得到这些服务。

上面把操作系统作看作向用户提供基本方便接口的概念,是一种从上而下的观点。按照另一种从下而上的观点,操作系统则用来管理一个复杂系统的各个部分。现代计算机包括诸多硬件设备,操作系统的任务就是在相互竞争的程序之间有序的控地控制对处理器,存储器以及其他I/O设备的分配。当一个计算机(或网络)有多个用户时,管理和保护存储器,I/O设备以及其他资源的需求变得强烈起来,因为用户可能互相干扰。另外,用户通常不仅共享硬件,还要共享信息(文件/数据库)。简而言之,操作系统的这一种观点认为,其主要任务是1)记录使用资源的情况,2)对资源请求进行授权,3)计算使用费用,4)为不同的程序和用户协调互相冲突的资源请求。

资源管理包括以下两种方式实现复用(共享)资源: 在时间上复用或在空间上复用。当一种资源在时间上复用时,不同的程序或用户轮流使用它。先是第一个获得资源的使用,然后下一个,以此类推。这方面的典型例子是处理器和打印机。当一种资源在空间上复用时,每个顾客都得到资源的一个小部分,从而取代了顾客排队。例如,通常在若干运行程序之间分割主存,这样每一个运行程序都可以同时驻留在内存。假设有足够的内存可以存放多个程序,那么在内存中同时存放多个程序的效率,比把所有的内存分配给一个程序的效率要高很多,尤其是一个程序只需要内存中一小部分的时候。当然,如此的做法会引起公平,保护等问题,这都有赖于操作系统去解决。

写到这里,我想起前些天看的《大明王朝1566》中的明朝内阁。如果把嘉靖皇帝看做是用户,百官臣民看做是底层各类硬件,那么内阁就有类似操作系统的作用。首先从用户态,就是从嘉靖的观点来看,管理内阁的几位大臣,远远比直接管理明朝两京一十三省的官民要容易。这些大臣就如同系统中的各项服务,皇帝可以用圣旨(系统调用)的方式来要求各项服务。对付皇帝而言,内阁就是所有资源的缩影(虚拟机),是方便统治的工具。那么从硬件态,即从普通官民的观点来看,内阁必须要处理好各个地方的资源计划及调配,解决各类争抢的冲突。为了达到这样的目的,在资源分配方面(用人)就因人而异: 比如海瑞这样清廉正直的官员,哪个地方问题比较严重,就派到哪里。问题解决后,再去其他的地方,这是时间上的复用;又比如有一个总督,他的工作就是处理各地的公文。这些公文由各地先呈报给总督的文书,然后文书再转交给总督。假设总督是处理器,那么文书类似于内存的作用。如果文书规定每天只收一个县或一个州的公文,那么就要乱套了;文书只能尽可能多的收集起来,请总督批阅,当然,如果这个文书做的好,他甚至可以帮助总督排好事情的优先级再送呈。总督不一定能在当天批阅完所有的公文,但是比起每天只批阅一个县的公文,(处理器)效率何止提高了百倍。这就是文书的空间复用。看来,历史知道多了,对于再次深入了解计算机系统也是颇有好处的。