本篇目录
接上)
十三、操作系统
1.由来
2.操作系统OS
3.批处理
4.设备驱动程序
5.多任务处理
6.动态内存分配
7.分时操作系统
8.Unix系统
9.MS-DOS系统
10.windows系统
十四、内存&存储介质
1.内存与存储器
2.打孔纸卡&纸带
3.延迟线存储器
4.磁芯存储器
5.磁带
6.磁鼓存储器
7.硬盘
8.内存分级
9.软盘
10.光盘
总结
接上一篇 学习笔记(八)
最初的计算机需要人工将写有程序的纸卡放入计算机,每次放入一个程序的纸卡,运行完后再换另一个程序的纸卡。但随着计算机的速度逐渐提高,换纸卡的时间比程序运行的时间还长,这时人们希望计算机能够自动读取多个程序,于是操作系统(这种软件)应运而生。
操作系统,简称OS,也是一种软件,但是有操作硬件的权限,可以运行和管理其它程序。它一般是开机后第一个启动的程序,之后操作系统来启动其它应用程序。操作系统开始于1950年代。
以前的计算机一次只能运行一个程序,而有了操作系统之后,就可以管理需要运行的程序,让计算机运行完一个程序后自动读取下一个,这就是批处理。
随着计算机的普及,程序员不仅要关心如何写程序,还要关心如何使程序与各种不同型号的CPU以及各种外设(打印机、显示器等)做适配。与早期的外部设备的交互是非常底层的,程序员需要了解硬件底层细节,但在写程序时很少能拿到所有型号来测试。为了解决这一问题,操作系统就充当了软件与硬件之间的媒介。操作系统隐藏了硬件底层细节的复杂性,向外提供API来抽象硬件,这叫“设备驱动程序”,而程序员只需要用标准输入与输出机制与外部设备交互即可。
随着处理器速度越来越快,处理器经常处于等待外设的状态(阻塞状态)。英国曼彻斯特大学研发了世界上第一台超级计算机Atlas,为了尽可能发挥计算机的作用,开发人员写了一个操作系统程序Atlas Supervisor。这个操作系统不仅像早期的批处理系统那样能自动加载程序,还能在单个CPU上同时运行几个程序。这就是多任务处理。它通过调度来实现这一功能。
假设程序A需要与外设交互时,CPU就将程序A休眠,等待程序A与外设交互任务的完成。在程序A休眠期间,CPU会将运行权分配给其它程序。等到外设交互任务完成,程序A会向CPU报告,CPU会将程序A重新设置为可执行状态,然后在之后某一个时间继续运行程序A。
同时运行多个程序会出现一个问题,就是内存的分配问题。解决方法是为每个程序块分配专属的内存空间。而一个程序在运行期间有可能临时申请新的内存空间,操作系统可以决定是否允许这种申请。这样做能够灵活使用内存空间,但会导致一个程序可能会分配到非连续的内存块。于是,为了方便程序员编程,操作系统向外提供一个虚拟地址,即程序员会看到每个程序都有一个从0开始的连续内存空间(这就是虚拟内存),操作系统内部隐藏了虚拟地址与物理地址的映射关系。
这种机制使得程序的内存大小可以灵活地增减,这叫“动态内存分配”。同时,这种机制给每个程序分配单独的内存空间,这样即便一个程序出错,也不会影响其它程序的运行。这就是“内存保护”。这种机制对于防恶意软件也很有用。
Atlas既有“虚拟内存”也有“内存保护”,是世界上第一台支持这些功能的计算机和操作系统。
随着电脑的普及,高校开始买计算机供学生使用。这时的计算机不仅能同时运行多个程序,还能让多用户同时访问。每个学生通过一个终端(屏幕和键盘)来访问主机。为了避免一个用户占满计算机资源,“分时操作系统”应运而生。每个用户只能用一小部分处理器、内存等资源。
早期分时操作系统中,最有影响力的是1969年发布的Multics。这是第一个从设计时就考虑到多用户访问安全的操作系统。这导致Multics的复杂度超过当时的平均水平,操作系统(占1MB)占了内存的一半,因而没有获得大的商业成功。
Multics的两位开发人员在1971年联手打造了新的操作系统,Unix。他们把Unix分为两部分,一部分是核心功能,即内核,包含了如内存管理、多任务、输入/输出处理等;另一部分是一堆有用的工具,比如程序和运行库。
Unix内核如果崩溃,没法恢复,就调用一个“panic”函数,开始无限循环地打印“panic”。这就是内核恐慌。这种设计使得开发人员不用写大量的错误恢复代码,也使得Unix可以在更多更便宜的硬件上运行,因而大受欢迎。不久就有人写了不同编程语言的编译器,甚至文字处理器。
1980年代早期,计算机开始在普通家庭普及,操作系统也很简单,比如微软的MS-DOS系统。发布于1981年,成为早期家用电脑最受欢迎的操作系统。MS-DOS没有“多任务”和“内存保护”这样的功能,这意味着一次只能运行一个程序,并且程序经常会使系统崩溃,但用户可以重启,因而还可以接受。
微软在1985年发布的早期windows系统,在90年代很流行,也同样缺乏“内存保护”。如果程序崩溃导致系统也跟着崩溃了,系统就会蓝屏。如今windows系统有更好的保护机制,不会那么容易蓝屏。
虽然如今的智能设备一般都只有一个用户,但是操作系统依然有多任务处理、虚拟内存、内存保护等功能。
内存是易失性存储,即断电会丢失数据,但是访存速度快。另一种是存储器,非易失性存储,但速度慢。不过近年来随着技术发展,两者速度差异变小。
最早期的存储介质就是打孔纸卡和打孔纸带。到1940年,纸卡标准是80列*12行,一张卡能存960bit数据。已知的最大纸卡程序,美国军方SAGE(半自动地面防空系统,于1958年投入使用)主程序存储在62500张纸卡上,大小相当于5MB。纸卡不用电,便宜耐用,一直用了十几年。缺点就是读取慢,且只能写入一次,打的孔无法轻易补上。这使得纸卡/纸带不适用于存储临时数据。
Eckert在1944奶奶建造ENIAC时发明了延迟线存储器的存储方法,原理是 ① 用一根管子装满液体(如水银),② 管子的一端放扬声器,另一端放麦克风,③ 扬声器发出脉冲时,会产生压力波,压力波经过一定时间传播到管子另一端,被麦克风捕获并转换回电信号。正因为压力波有传播延迟,因此这个装置可以被用来存储数据。有压力波代表1,没有压力波则代表0。扬声器将0和1的电信号转化为压力波的有无,通过管子进行传播,当一串压力波信号传播到麦克风端时,麦克风可以根据压力波的有无来将信号转换回1和0 。
如果在麦克风端加一个信号放大器来弥补信号衰弱,并且将麦克风端与扬声器端用导线连接起来(电信号沿导线传播几乎是瞬时的),那么这个装置就可以存储一段数据,这段数据在管子中不断循环,任意时间点只显示1bit的数据。因此,管子中可以存储多个bit的数据,但读取时需要等到正确的时机才能读取到想要的数据。
之后在EDVAC计算机中,开发人员也使用了延迟线存储器。这使得EDVAC成为最早的“存储程序计算机”之一。
不过延迟线存储器也有缺点,每一个时刻只能读取1bit的数据,因此也叫“顺序存储器”或“循环存储器”。开发人员希望能有“随机存取存储器”,可以随时访问任何位置。同时,增加内存密度,意味着压力波变得更加紧密,这会导致信号更容易混在一起。因此出现了其它类型的延迟线存储器,比如“磁致伸缩延迟存储器”。这种存储器利用金属线的振动来表示数据,通过将导线卷成线圈来增加存储密度。
总的来说,延迟线存储器在1950年代中期就基本过时了,因为出现了更好用的“磁芯存储器”。
每一个存储单元是一个小的圆环形磁圈(像一个甜甜圈),能存储1bit。如果给磁芯绕上导线并施加电流,就可以将磁芯磁化,电流方向决定了磁化方向,两种不同的磁化方向用于表示1和0 。如果关闭电流,磁芯仍会保持磁化状态,这就存储了数据。为了存储更多bit的数据,通常磁芯会被排列成网络,然后利用行列选择电线来选择某个特定的磁芯,进行数据读写。
磁芯存储的第一次大规模运用是1953年麻省理工学院的Whirlwind 1 计算机。磁芯存储器能随时访问任何一个bit的数据,流行了二十多年,而且一般还是手工编制的。
1951年,UNIVAC计算机(最早进行商业销售的电脑之一)推出了一种新的存储介质:磁带。磁带是卷在轴上的一长条纤薄柔软的磁性带子,它可以在磁带驱动器内前后移动。一个“写头”上绕有电线,并通过电流产生磁场,这个写头可以导致磁带的一小部分被磁化,写头上通入的电流方向决定了磁化方向,用以表示1 和 0 。另外还有一个“读头”,可以非破坏性地检测磁带某一部分的磁性,从而转化为信号1 或0 。
虽然磁带驱动器很贵,但磁带又小又便宜。因此至今磁带仍用于存档。磁带存储稳定可靠,主要缺点是访问速度。因为磁带是连续的,因此比如倒带或快进到特定位置才能访问特定数据。
磁鼓与磁带类似。磁鼓存储器有金属圆筒,表面盖满了磁性材料以记录数据。滚筒会持续旋转,周围有数十个读写头,等滚筒转到正确位置,读写头会读写1bit数据。为了尽可能减小延迟,鼓轮每分钟上千转。1950年代磁鼓存储器发展旺盛,但到了1970年代磁鼓存储器不再生产。
磁鼓导致了硬盘的发展。硬盘与磁鼓很像,原理是一样的,只不过硬盘用的是盘,而磁鼓用的是圆柱体。硬盘表面有磁性,读写头可以处理1和0信号。硬盘的优点是薄,因而可以叠在一起。IBM就是将磁盘叠在一起来制造第一台磁盘计算机IBM RAMAC 305 的。要读写数据时,一个读写头会上下移动来找到正确的磁盘,磁盘像磁鼓一样,也要高速旋转,等到磁盘转到正确位置,读写磁头会滑进磁盘之间,然后读写数据。RAMAC访问任意数据只需要六分之一秒的时间,这叫寻道时间。
RAMAC计算机在使用先进的(当时是如此)磁盘存储器外,同时还有磁鼓存储器和磁芯存储器,因为磁盘的速度还不够快。计算机中的存储结构是分级的,在成本和时间中取得平衡。速度越快的存储器价格也越高。现代磁盘的速度已经提高许多,平均寻道时间低于百分之一秒。如今存储技术朝着固态前进,存储器内部没有机械活动部件,现在的U盘、硬盘内部都是集成电路。固态硬盘SSD(逐渐取代机械硬盘)内部没有机械部件,磁头不用等磁盘转,因而访问时间低于千分之一秒。但这仍然比内存慢很多。因此存储结构仍然是分级的。
与集成电路发展的摩尔定律类似,存储器也在飞速发展,价格逐渐降低。
软盘(Floppy Disk)是软的磁盘,其它基本与硬盘相同。软盘很便携,在1970-1990年代十分流行,但现在已经过时了,可以用来当杯垫,哈哈^_^ 。另外还有密度更高的软盘,如Zip Disks,在90年代中期流行起来,但十年内就消失了。
光学存储器于1972年出现,当时是激光盘。后来有了光盘CD,以及DVD。光盘的功能与硬盘、软盘一样,都是存数据。光盘表面有很多小坑,会造成光的不同反射,这种差异会被光学传感器捕获并解码为1和0 。
本篇内容:
1.操作系统
2.内存&存储介质