目录
计算机系统是由硬件和软件这两个主要部分组成。硬件是计算机的物理设备,软件是使得这些硬件能够正常工作的的程序集,软件分为操作系统和应用程序,应用程序使用计算机硬件解决用户的实际问题,操作系统则控制计算机系统用户对计算机硬件的访问。
操作系统在计算机中的定位
操作系统是计算机硬件和用户(程序和人)的一个接口;
是一种使得其他程序更加方便有效地运行的程序;
操作系统作为通用管理程序管理着计算机系统中每个部件的活动,并能方便地对计算机硬件和软件资源进行访问。当出现资源使用冲突时,操作系统应能够及时处理,排除冲突。
自举过程
程序运行前,需要线压入内存,这样cpu才能在内存中取指令执行。其他应用程序可以让操作系统完成这一步骤,但是操作系统本身也是程序,开机就需要装入内存并运行,这时就需要自举过程来完成。因为RAM内存断电则丢数据,所以使用ROM(只读存储器),把操作系统转入(由制造商完成)其中,CPU程序计数器可以设置为这个ROM的开始位置,当计算机开机时,cpu从ROM中读取指令,并执行,这样就能执行操作系统程序啦。
但是若把全部的操作系统都装入ROM,则需要很大一块内存,并且这块内存时只读的,不能供其他应用程序使用。为了解决这一问题,如今则采用两个过程吧操作系统装入内存。
- 很小一部分由ROM构成,这里面存有自举程序, 当计算哦开机时,cpu从ROM中读取指令,并执行自举程序。
- 这个小程序唯一的指责就是将操作系统本身(需要启动计算机的那部分)装入RAM。当装入成功后,CPU就执行RAM中的第一条指令,操作系统则能运行起来。
操作系统演化历程
批处理系统
批处理操作系统的工作方式是:用户将作业交给系统操作员,系统操作员将许多用户的作业组成一批作业,将一批作业提交给操作系统后就不再干预,由操作系统控制它们自动运行。最后由操作员将结果交给用户。系统保证计算机所有资源被从一个作业转换到下一个作业。
分时系统
分时操作系统是使一台计算机采用时间片轮转的方式同时为几个、几十个甚至几百个用户服务的一种操作系统,分时操作系统将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。分时操作系统的特点是可有效增加资源的使用率。例如UNIX系统就采用剥夺式动态优先的CPU调度,有力地支持分时操作。单核cpu的机器则是如此,虽然可能采用多进程多线程技术,但某一时刻一个共享资源只会有一个用户在访问,每个用户其实都是串行的。
并行系统
同时执行多个任务或多条指令或同时对多个数据项进行处理的系统。现代计算机均具有不同程度的并行性。在一台机器上安装多个CPU,每个CPU都能处理一个程序或事程序的一部分。意味着很多程序可以并行的处理,这样的话就会带来一个共享资源在同一时刻被多个用户反问。
分布式系统
建立在网络之上的软件系统。在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。系统中存在一个以全局的方式管理计算机资源的分布式操作系统。通常,对用户来说,分布式系统只有一个模型或范型。在操作系统之上有一层软件中间件(middleware)负责实现这个模型。一个著名的分布式系统的例子是万维网(World Wide Web),在万维网中,所有的一切看起来就好像是一个文档(Web页面)一样。
实时系统
能在特定时间限制内完成任务,重点是及时响应。
组成部分
操作系统必须能够管理系统中的不同资源,现代操作系统至少具有一些4中功能:内存管理、进程管理、设备管理、文件管理。操作系统还有一个一个用户界面或者命令解释程序,负责操作系统和外界的通信。
内存管理
现在计算机操作系统的一个重要职责是内存管理,内存分配必须进行管理以避免“内存溢出”的错误,操作系统按照内存管理可分为两大类:单道程序和多道程序。
1、单道程序
在单道程序中,大多数内存用来装载单一的程序,仅仅一小部分用来装载操作系统,在这种配置下,整个程序都装入内存,运行结束后,程序区域由其他程序取代。是一种淘汰的系统。
2、多道程序
同一时刻可以装入多个程序到内存,并能够同时被执行,CPU轮流为其服务。多道程序由4种调度模式,分别是分区、分页、请求分页、请求分段。
其中分区、分页属于非交换范畴,这意味着程序在运行期间始终驻留在内存中。
请求分页、请求分段属于交换范畴,在运行期间,程序可以在内存和硬盘之间频繁的交换数据。
分区调度
内存被分为不定长的几个分区,每个分区装入一个程序,cpu在不同分区中交替取指令执行,以交替执行每个分区上的程序。cpu先执行第一个程序的第一条指令,直到有输入/输出操作或各程序分配的时限到达为止。cpu保存最近使用的指令所分配的内存地址后转入下一个分区执行下一个程序。程序在内存中占用的内存是连续的。
分页调度
比分区调度的效率更高。在分页模式下,内存被分为大小相同的若干个部分,称为帧;程序也被分为大小相同的部分,称为页。通常帧和页的大小一样,并且与系统用于从存储设备中提取信息的块大小相等。将全部程序页装入内存帧中,同一个程序的若干页占用的内存帧不必连续。
请求分页调度
在上分页调度的基础上,使得不必一次行将程序全部装入内存,这样运行中可以占用更少的内存。程序页依次装入内存、运行,然后被另一个页再装入内存;连续的程序页没有必要装入同一个内存帧,可以随机装入任意空闲帧中。
请求分段调度
内存被均分为若干个段,程序按照程序员的角度分为若干个模块(主程序和子程序),这些块装入内存中,执行,让后被同一程序的其他模块替代。
请求分页和分段调度
结合了两者的优点以提高系统效率,内存分为若干帧,程序分为多个模块,每个模块分为很多页,依次装入内存。
虚拟内存
请求分页和分段意味着程序运行时,一部分程序驻留在内存,一部分则放在硬盘上,硬盘上这段用来存放的空间就是虚拟内存。
进程管理器
程序、作业、进程
程序:由程序员编写的一组稳定的指令,存放在硬盘上。
作业:被选中知道执行完毕。可能在被cpu执行、可能正在装入内存中、可能在等待IO设备,可能在等待CPU。
进程:作业装入内存就算进程,无论此时是否被cpu执行。
状态图
调度器
将一个作业或进程从一个状态改变为另一个状态,进程管理器使用了两个调度器:作业调度器和进程调度器。
- 作业调度器:负责从作业中常见和结束一个进程。
- 进程调度器:将一个进程从一个状态改变为另一个状态。
队列
为处理多个进程和作业,进程管理器使用队列(等待列表),在队列中存储的是与作业和进程相关的作业控制块和进程控制块。进程管理器可以用多种策略从对流中选择下一个作业或进程:可以先进先出、最短长度优先,最高优先级等。
设备管理器
负责访问输入/输出设备
不停的监视者所有的输入/输出设备,以保证能正常的运行。
为每一个输入/输出设备维护一个队列;
控制用户访问输入/输出设备的不同策略。
文件管理器
控制文件的访问,权限有关;
管理文件的存储;
管理文件的创建、删除和修改;
管理文件的命名;
归档和备份;
主流操作系统
UNIX、Linux、Windows
凡是过往,即为序章