第二章 操作系统概述
第二章 操作系统概述
一、 概述:
操作系统是控制应用程序执行的的程序,并充当应用程序与硬件交互的接口。
主要功能是为运行中的程序动态的分配可共享的系统资源。
操作系统是控制应用程序执行的程序,并充当应用程序和计算机硬件之间的接口。
目标:方便、有效、扩展能力。
1、作为用户/计算机接口
操作系统为程序员屏蔽了硬件细节,并为程序员使用系统提供了方便的接口。它可以作为中介,使程序员和应用程序更容易的访问和使用这些功能与服务。
2、作为资源管理器
一台计算机就是一组资源,这些资源用于对数据的移动、存储和处理,以及对这些功能的控制。而操作系统负责管理这些资源。
操作系统实际上不过是一组计算机程序,与其他计算机程序类似,他们都给处理器提供指令,主要区别在于程序的意图。操作系统控制处理器使用其他系统资源,并控制其他程序的执行时机。
但是,处理器要做任何意见这类事情,都必须停止执行操作系统程序,而去执行其他程序。因此,这是操作系统释放对处理器的控制,让处理器去做其他一些有用的工作,然后用足够长的时间恢复控制权,让处理器准备好做下一件工作。
操作系统有一部分在内存中,其中包括内核程序和当前正在使用的其他操作系统程序,内核程序包含操作系统中最常使用的功能。内存中的其余部分包含用户程序和数据,他的分配由操作系统和处理器中的存储管理硬件联合控制完成。
3、操作系统提供的服务
程序开发、程序运行、I/O设备访问、文件访问控制、系统访问、错误检测和响应、记账等
4、计算机系统三种接口
指令系统体系结构(ISA)、应用程序二进制接口(ABI)、应用程序编程接口(API)
二、操作系统的发展:
1、串行处理
反应了用户必须顺序访问计算机的事实。
2、简单批处理系统
简单批处理方案的中心思想是使用一个称为“监控程序”的软件,通过使用这类操作系统,用户不再直接访问机器,相反,用户把卡片或磁带中的作业提交给计算机操作员,由他把这些作业按顺序组织成一批,并将整个批作业放在输入设备上,供监控程序使用。每个程序完成处理后返回到监控程序,同时,监控程序自动加载下一个程序。
监控程序角度:监控程序每次从输入设备中读取一个作业。读入后,当前作业呗防止在用户程序区域,并且把控制权交给这个作业。当作业完成后,它将控制权返回给监控程序,监控程序立即读取下一个作业。每个作业的结果被发送到输出设备(如打印机),交付给用户。
处理器角度:“控制权交给作业”仅仅意味着处理器当前去和执行的都是用户程序中的指令,而“控制权返回给监控程序”的意思是处理器当前从监控程序中取指令并执行指令。
监控程序完成调度功能:一批作业排队等候,处理器尽可能迅速的执行作业,没有任何空闲时间。监控程序还改善了作业的准备时间。
监控程序或者说批处理操作系统,只是一个简单的计算机程序。它依赖于处理器可以从内测的不同部分去指令的能力,以交替的获取或释放控制权。
程序执行状态:
用户程序——用户态
监控程序——内核态
缺点:对批处理操作系统来说,用户程序和监控程序交替执行。这样存在两方面缺点。一部分内存交付给监控程序;监控程序消耗了一部分机器时间。
3、多道批处理系统
单道程序设计:处理器话费一定的运行时间进行计算,直到遇到一个IO指令,这是它必须等到这个IO指令结束后才能继续执行。
这种低效率是可以避免的。假设内存空间容得下操作系统和两个用户程序,那么当一个作业需要等待IO时,处理器可以切换到另一个可能不需要等待IO的作业。进一步还可以扩展存储器以保存三、四个或更多的程序,并且在他们之间进行切换。这种处理成为多道程序设计或多任务处理,它是现代操作系统的主要方案。
多道程序批处理系统必须依赖于某些计算机硬件功能,对多道程序设计有用的最显著的辅助功能是支持IO中断和直接存储器访问的硬件。通过中断驱动的IO或DMA,处理器可以为一个作业发出IO命令,当设备控制器执行IO操作时,处理器执行另一个作业;当IO操作完成时,处理器被中断,控制权被递给操作系统中的中断处理程序,然后操作系统把控制权传递给另一个作业。
对准备运行的多个作业,他们必须保留在内存中,这就需要内存管理;此外,如果多个作业都准备运行,处理器必须决定运行哪一个,这需要某种调度算法。
4、时分系统
对许多作业来说,需要提供一种模式,以使用户可以直接与计算机交互。
正如多道程序设计允许处理器同时处理多个批处理作业一样,它还可以用于处理多个交互作业。对后一种情况,由于多个用户分享处理器时间,因而该技术成为分时。在分时系统中,多个用户可以通过终端同时访问系统,由操作系统控制每个用户程序以很短的时间为单位交替执行。
系统时钟以大约0.2一个的速度产生中断,在每个时钟中断处,操作系统恢复控制权,并且将处理器分配给另一个用户。因此,在固定的时间间隔内,当前用户被抢占,另一个用户被载入。这项技术称为时间片技术。(为了以后便于恢复,保留老的用户程序状态,在新的用户程序和数据被读入前,老的用户程序和数据被写出到磁盘。随后,当获得下一次机会时,老的用户程序代码和数据被恢复到内存中。)
时分和多道程序设计印发了操作系统中的许多新问题
三、主要成就:
1、进程:
进程的概念是操作系统设计的核心。
定义:
一个正在执行的程序。
计算机中正在运行的程序的一个实例。
可以分配给处理器并由处理器执行的一个实体。
由单一顺序的执行线索、一个当前状态和一组相关的系统资源所描述的活动单元。
计算机系统发展的三条主线:
多道程序批处理操作。为了让处理器和IO设备同时保持忙碌状态,以实现最大效率。(其关键机制是,在响应标示IO事物结束的信号时,操作系统将对内存中主流的不同程序进行处理器切换)
通用的分时。其主要涉及目标是能及时响应当用户的要求,但是由于成本原因,又要可以同时支持多个用户。
实时事物处理系统。在这种情况下,很多用户都在对数据库进行查询或修改。
系统程序员在开发早起的多道程序和多用户交互系统时使用的主要工具是中断。一个已定义事件(如IO完成)的发生可以暂停任何作业的活动。处理器保存某些上下文(如程序计数器和其他寄存器),然后跳转到中断处理程序中,处理中断,然后恢复用户被中断的作业或其他作业的处理。
进程可以视为由三部分组成:一段可执行程序;程序所需要的相关数据(变量、工作空间、缓冲区);程序的执行上下文。
执行上下文又称进程状态,是操作系统用来管理和控制进程所需的内部数据。这种内部信息和进程是分开的,因为操作系统信息不允许被进程直接访问。
进程切换的过程包括保存B的上下文和恢复A的上下文。
进程被当做数据结构来实现。一个进程可以正在执行,也可以等待执行。任何时候整个进程状态都包含在他的上下文环境中。
一个被分配了资源的进程可分解为多个并发的线程,这些线程相互协作执行,完成进程的工作。
2、内存管理:
责任:进程隔离,自动分配和管理,支持模块化程序设计,保护和访问控制,长期储存。
文件系统实现了长期存储,它在一个有名字的对象中保存信息,这个对象被称为文件。对程序员来说,文件时一个很方便的概念;对操作系统来说,文件时访问控制盒保护的一个有用单元。
虚存机制允许程序从逻辑的角度访问存储器。在分页系统中,进程由许多固定大小的块组成,这些块称为页。程序通过虚地址访问字,虚地址由页号和页中的偏移量组成,进程的每一页都可以防止在内存中的任何地方。分页系统提供了程序中使用的虚地址和内存中的实地址或物理地址之间的动态映射。
一个进程的所有页都保存在磁盘中,当进程执行时,一部分页在内存中。如果需要访问的某一页不在内存中,存储管理硬件检测到,然后安排载入这个缺页。这个配置成为虚拟内存。
程序设计语言的指令可以访问虚存中的程序和数据。可以通过给每个进程一个唯一的不重叠的虚存空间来实现进程隔离;也可以通过时两个虚存空间的一部分重叠来实现内存共享。
3、调度和资源管理
调度和资源管理任务是一个基本的操作系统研究问题。
操作系统中维护着多个队列,每个队列代表等待某些资源的进程的简单列表。(短程队列,长程队列,IO队列)
短程队列由在内存中并等待处理器可用的随时准备运行的进程组成,任何一个这样的进程都可以再下一步使用处理器。由时间片轮转或优先级调度策略决定运行哪个进程。
长程队列是等待使用处理器的新作业的列表。操作系统通过把长程队列中的作业转移到短程 队列中,实现往系统中添加作业,这时内存的一部分必须分配给新到来的作业。
每个IO设备都有一个IO队列,可能有多个进程请求使用同一个IO设备,所有等待使用一个设备的进程在该设备的队列中排队。
如果发生了一个中断,则操作系统在中断处理程序入口得到处理器的控制权。进程可以通过服务调用明确的请求某些操作系统的服务。在这种情况下,服务调用处理程序是操作系统的入口点。在任何情况下,只要处理中断或服务调用,就会请求短期掉赌球选择一个进程执行。
四、现代操作系统的特征:
1、微内核体系结构
大多数操作系统都有一个单体内核,操作系统应该提供的大多数功能由这些大内核提供(包括调度,文件系统,网络,存储管理等)。典型情况下,这个大内核是作为一个进程实现的,所有原始都共享相同的地址空间。
微内核体系结构只给内核分配一些最基本的功能(地址空间,进程间通信,基本调度),其他的操作系统服务都是由运行在用户态下且与其他应用程序类似的进程提供的,这些进程可根据特定的应用和环境需求进行定制。
微内核方法可以使系统结构的设计更加简单、灵活,很适合于分布式环境。实质上,微内核可以以相同的方式与本地和远程的服务进程交互,使分布式系统的构造更为方便。
2、多线程
多线程技术室指吧执行一个应用程序的进程划分成可以同时运行的多个线程。
线程,可分派的工作单元。它包括处理器上下文环境和栈中自己的数据区域。线程顺序执行,并且是可中断的,这样处理器就可以转到另一个线程。
进程,一个或多个线程和相关系统资源的集合。这严格对应于一个正在执行的程序的概念。通过把一个应用程序分解成多个线程,程序员可以再很大程度上控制应用程序的模块性和应用程序相关事件的时间安排。
多线程对执行许多本质上独立、不需要串行处理的应用程序是很有用的(例如监听和处理很多客户请求的数据库服务器)。在同一个进程中运行多个线程,在线程间来回切换所涉及的处理器开销要比在不同进程间进行切换的开销少。
3、对称多处理器
对称多处理操作系统可调度进程或线程到所有的处理器运行。
对多道程序设计而言,一次只能执行一个进程,此时所有别的进程都在等待处理器。对多处理系统而言,多个进程可以分别在不同的处理器上同时运行。
即使在但处理器机器中,多线程对结构化的应用程序和内核进程也是很有用的。由于多个处理器可以并行运行多个进程,因而对称多处理计算机对非线程化的进程也是有用的。
对称多处理技术一个很有吸引力的特征是,多处理器的存在对用户是透明的。操作系统负责在多个处理器中调度线程或进程,并且负责处理器间的同步。
分布式操作系统使用户产生错觉,使多机系统好像具有一个单一的内存空间、外存空间及其他的统一存取措施。
五、针对多处理器和多核操作系统:
同步用来实现互斥及事件排序。多处理器操作系统中,锁是一种通用的同步机制。
大多数应用都可以划分成可并行执行的多个子任务,而这些子任务会以多进程或多线程的形式实现。
早期的计算机,一个程序运行在一个单独的处理器上。而多道程序设计的出现,使得美国应用程序都好像运行在一个专用的处理器上。多道程序设计基于进程这一概念,进程是运行环境的抽象。
为了管理进程,操作系统需要一块受保护的空间,以避免用户和程序的干扰,于是出现了内核模式和用户模式的区别。
六、其他:
信号:内核通过信号通知进程
系统调用:进程是通过系统调用来请求系统服务的
版权声明:本文为博主原创文章,未经博主允许不得转载。