操作系统基本概念

一. 操作系统的发展

(一). 第一代(1945~1955):无操作系统

第一台计算机诞生时,还没出现操作系统,每一步操作都是纯手工的。操作人员将对应于程序和数据的已穿孔的纸带装入机器,然后启动输入机把程序和数据输入到计算机内存,接着通过控制台开关启动程序针对数据运行,计算完毕后打印机输出结果,用户取出结果并卸下纸带,到下一个用户上机。

(二). 第二代(1955~1965):单道批处理系统

单道批处理系统中,内存中只允许存放一个作业,即当前正在运行的作业才能驻留内存,作业的执行顺序是先进先出,即按顺序执行。早期为了能充分地利用昂贵的计算机,应尽量使该系统连续运行,减少空闲时间。为此,通常是把一批作业以脱机方式输入到磁带上,并在系统中配上监督程序(Monitor),在它的控制下使这批作业能一个接一个地连续处理。其自动处理过程是:首先,由监督程序将磁带上的第一个作业装入内存,并把运行控制权交给该作业。当该作业处理完成时,又把控制权交还给监督程序,再由监督程序把磁带(盘)上的第二个作业调入内存。计算机系统就这样自动地一个作业一个作业地进行处理,直至磁带(盘)上的所有作业全部完成,这样便形成了早期的批处理系统。单道批处理系统无法充分利用系统中的所有资源,当作业进行I/O操作时,CPU只能处于等待状态,致使系统性能较差。

(三). 第三代(1965~1980):多道批处理系统、分时系统、实时系统

1. 多道批处理系统

由于在单道批处理系统中,一个作业单独进入内存并独占系统资源,直到运行结束后下一个作业才能进入内存,当作业进行I/O操作时,CPU只能处于等待状态,因此,CPU利用率较低,尤其是对于I/O操作时间较长的作业。为了提高CPU的利用率,在单道批处理系统的基础上引入了多道程序设计(multiprogramming)技术,这就形成了多道批处理系统。即成批的作业存放在外存中,组成的一个后备队列,系统按一定的调度原则每次从后备作业队列中选取一个或多个作业进入内存运行,在内存中可同时存在若干道作业,作业执行的次序与进入内存的次序无严格的对应关系,这些作业是通过一定的作业调度算法来使用CPU的,一个作业在等待I/O处理时,CPU调度另外一个作业运行,从而在系统中形成一个自动转接的、连续的作业流,因此CPU的利用率显著地提高了。多道批处理系统的缺点是延长了作业的周转时间,用户不能进行直接干预,缺少交互性,不利于程序的开发与调试。

2. 分时操作系统

分时操作系统是一种联机的多用户交互式的操作系统。把计算机与许多终端用户连接起来,分时操作系统将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。对每个用户能保证足够快的响应时间,并提供交互会话能力,每个用户的感觉就像他独占计算机一样。分时操作系统的特点是对用户的请求及时响应,并在可能条件下尽量提高系统资源的利用率。分时操作系统典型的例子就是Unix和Linux的操作系统,其可以同时连接多个终端并且每隔一段时间重新扫描进程,重新分配进程的优先级,动态分配系统资源。

3. 实时操作系统

实时操作系统指能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行计算机系统。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。我们通常使用的操作系统在经过一定改变之后就可以变成实时操作系统。

例如,可以为确保生产线上的机器人能获取某个物体而设计一个操作系统。在“硬”实时操作系统中,如果不能在允许时间内完成使物体可达的计算,操作系统将因错误结束。在“软”实时操作系统中,生产线仍然能继续工作,但产品的输出会因产品不能在允许时间内到达而减慢,这使机器人有短暂的不生产现象。一些实时操作系统是为特定的应用设计的,另一些是通用的。一些通用目的的操作系统称自己为实时操作系统。但某种程度上,大部分通用目的的操作系统,如微软的Windows NT或IBM的OS/390有实时系统的特征。这就是说,即使一个操作系统不是严格的实时系统,它们也能解决一部分实时应用问题。

实时系统还分为实时控制系统和实时信息处理系统。实时控制系统指的是要求实时控制的系统,主要用于生产过程的控制,实时采集现场数据,并对所采集的数据进行及时处理,进而自动地控制相应的执行机构,使某些(个)参数(如温度、压力、方位等)能按预定的规律变化,以保证产品的质量和提高产量。也可以用于武器的控制,如火炮的自动控制系统,飞机的自动驾驶系统,以及导弹的制导系统等。实时信息处理系统指能对信息进行及时的处理的系统,该系统由一台或多台主机通过能信线路连接成百上千个终端,计算机接收从远程终端发来的服务请求,根据用户提出的问题,对信息进行检索和处理,并在很短的时间内为用户做出正确的回答。典型的实时信息处理系统有:飞机订票系统、情报检索系统等。

(四). 第四代(1980~1990):通用操作系统

通用操作系统具有多种类型操作特征的操作系统。可以同时兼有多道批处理、分时、实时处理的功能,或其中两种以上的功能。例如:实时处理+批处理=实时批处理系统。首先保证优先处理实时任务,插空进行批处理作业。常把实时任务称为前台作业,批作业称为后台作业。再如:分时处理+批处理=分时批处理系统。即:时间要求不强的作业放入“后台”(批处理)处理,需频繁交互的作业在“前台”(分时)处理,处理机优先运行“前台”作业。

(五). 后四代(1990年以后):网络操作系统、分布式系统、嵌入式系统

1. 网络操作系统

一种在通常操作系统功能的基础上提供网络通信和网络服务功能的操作系统。

2. 分布式操作系统

一种以计算机网络为基础的,将物理上分布的具有自治功能的数据处理系统或计算机系统互联起来的操作系统。分布式系统中各台计算机无主次之分,系统中若干台计算机可以并行运行同一个程序,分布式操作系统用于管理分布式系统资源。

3. 嵌入式操作系统

一种运行在嵌入式智能芯片环境中,对整个智能芯片以及它所操作、控制的各种部件装置等资源进行统一协调、处理、指挥和控制的系统软件。

二. 相关概念

(一). 作业

  1. 在批处理操作系统中,是以作业为基本单位从外存调入内存的,是计算机操作者(或是一个叫做作业调度器的程序)交给操作系统的执行单位。作业可以被看作是用户向计算机提交任务的任务实体。通常作业是以批处理的(而非交互式的)模式运行的。作业是由一系列有序的步骤组成的,作业的完成要经过作业提交、作业收容、作业执行和作业完成4个阶段,因此作业也可以视为操作系统的一条执行路径。

  2. 在IBM主机型操作系统(MVS,OS/390以及其后代产品)中,作业是用作业控制语言(JCL)来描述的,作业被分解为作业步。正在执行的一个或多个相关进程通常被称为作业,一个作业可以包含多个进程,比如当使用管道和重定向命令时,该作业就包含多个进程。

  3. Windows 2000提供了一个新的作业内核对象,它能将进程组合到一起并且建一个沙盒,以限制进程能够进行的操作所以作业可以视为进程的容器。

  4. 作业这个概念最早是在批处理系统中出现的,分时系统和实时系统中一般没有作业的概念。在多道批处理系统中,存在着作业调度和进程调度,但是在分时系统和实时系统中,一般不存在作业调度,而只有进程调度、交换调度、线程调度。因为在分时系统和实时系统中,为了缩短响应时间或者为了满足用户的截止时间,作业不是建立在外存,而是之间建立在内存中,这些系统中,一旦用户和系统交互开始,用户马上要进行控制,因而,这些系统中没有作业提交状态和后背状态,它们的输入信息经过终端缓冲区为了系统所接收,或者理解处理,或者经交换调度暂存外存中。

(二). 批处理

批处理指的是将作业按照它们的性质分组(或分批),然后再成组(或成批)地提交给计算机系统,由计算机自动完成后再输出结果,从而减少作业建立和结束过程中的时间浪费,一组(或一批)作业中有一个或多个作业。根据在内存中允许存放的作业数,批处理系统又分为单道批处理系统和多道批处理系统。在单道批处理系统中,用户将一批作业提交给系统后,系统会根据作业的先后顺序,一个接连一个连续处理,在同一时间内仅有一个作业在处理。在多道批处理系统中,用户将一批作业提交给系统后,系统会根据调度算法调度作业,当一个作业在等待I/O处理时,CPU调度另外一个作业运行,在同一时间内仅有一个作业在处理。不管在单道批处理系统或者在多道批处理系统中,只要系统正在运行,就不允许用户与其作业发生交互作用,发现作业错误也不能及时改正,直到系统崩溃或计算结束。批处理操作系统是为了提高CPU的利用率而提出的一种操作系统。

(三). 多道程序(多任务)

计算机的早期,多任务被称作多道程序。多道程序设计技术是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制下,相互穿插运行,两个或两个以上程序在计算机系统中同处于开始到结束之间的状态, 这些程序共享计算机系统资源。与之相对应的是单道程序,即在计算机内存中只允许一个的程序运行。对于一个单CPU系统来说,程序同时处于运行状态只是一种宏观上的概念,他们虽然都已经开始运行,从微观上看是串行的,各道程序轮流使用CPU,交替执行,CPU上运行的程序只有一个。引入多道程序设计技术的根本目的是为了提高CPU的利用率,充分发挥计算机系统部件的并行性,现代计算机系统都采用了多道程序设计技术。多道程序设计的出现,加快了现在操作系统的诞生。

(四). 程序

程序是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。计算机程序是由数据结构、算法和一种程序设计语言构成。软件就是经过包装的程序,有良好的用户界面。

(五). 进程

  1. 广义的进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。进程的概念伴随着多道程序技术的出现而出现,在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。狭义的进程是正在运行的程序的实例。

  2. 进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。

(六). 子进程

  1. Unix/Linux编程中,由fork创建的新进程被称为子进程(child process)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新进程(子进程)的进程 id。fork之后,操作系统会复制一个与父进程完全相同的子进程,虽说是父子关系,但是在操作系统看来,他们更像兄弟关系,这2个进程共享代码空间,但是数据空间是互相独立的,子进程数据空间中的内容是父进程的完整拷贝,指令指针也完全相同,子进程拥有父进程当前运行到的位置(两进程的程序计数器pc值相同,也就是说,子进程是从fork返回处开始执行的),但有一点不同,如果fork成功,子进程中fork的返回值是0,父进程中fork的返回值是子进程的进程号,如果fork不成功,父进程会返回错误。

  2. 在程序设计时,某一个具体的功能模块可以通过函数或是线程等不同的形式来实现。对于同一进程而言,这些函数、线程都是存在于同一个地址空间下的,而且在执行时,大多只对与其相关的一些数据进行处理。如果算法存在某种错误,将有可能破坏与其同处一个地址空间的其他一些重要内容,这将造成比较严重的后果。为保护地址空间中的内容可以考虑将那些需要对地址空间中的数据进行访问的操作部分放到另外一个子进程的地址空间中运行,并且只允许其访问原进程地址空间中的相关数据。

(七).多进程

在早期,为了使程序在多道程序下能并发执行,并对并发执行的程序加以控制和描述,在操作系统中引入了进程的概念,这样,多进程的概念也随之产生,就是多个进程并发执行。多进程最简单的理解是,在多道程序系统中,同时执行多个进程,进程间的关系不一定是父子进程关系,也可以是不相同的程序的进程。

(八). 线程

60年代,在操作系统中能拥有资源和独立运行的基本单位是进程,然而随着计算机技术的发展,进程出现了很多弊端,一是由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程;二是由于对称多处理机(SMP)出现,可以满足多个运行单位,而多个进程并行开销过大。因此在80年代,即通用计算机系统发展的年代,出现了能独立运行的基本单位——线程(Threads)。线程是程序中一个单一的顺序控制流程。线程是进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位。

(九). 多线程

在有多线程的系统中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中的)。在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址;此外,还可以访问进程所拥有的已打开文件、定时器、信号量机构等。由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。

(十). 计算机指令

计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序排列的指令,执行程序的过程就是计算机的工作过程。通常一条指令包括两方面的内容:操作码和操作数,操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。在计算机中,操作要求和操作数地址都由二进制数码表示,分别称作操作码和地址码,整条指令以二进制编码的形式存放在存储器中。一台计算机所能执行的各种不同指令的全体,叫做计算机的指令系统,每一台计算机均有自己的特定的指令系统,其指令内容和格式有所不同。

(十一). 作业、程序、进程、线程、指令之间的联系

作业 > 程序 >= 进程 > 线程 > 指令

一个作业中可以有多个程序,一个程序可以对应一个主进程和若干个子进程,一个进程可以有多个线程,线程里有多条指令,但是线程是不可分割的。总体上来说是一个从大到小的关系,作业是一系列的程序集,程序是进程的静态原形,进程按照一种特定的逻辑来实现一定的功能或者事务。进程就是作业的一种细化,每个进程完成一个特定的功能。线程就是进程更加一步的细化,进程可以分割,但是线程是原子的,不可以再度分割,就像化学中的质子一样,一系列的线程组成一个进程。进程的单位比较大,线程就是原始单位,不可分割成更小的部分,但线程也是由指令构成的。注意:一般在分时系统中没有作业的概念,单道批处理系统中没有进程的概念。

三. 处理器

(一). 处理器的多线程技术

同时多线程Simultaneous Multithreading,简称SMT。SMT可通过复制处理器上的结构状态,让同一个处理器上的多个线程同步执行并共享处理器的执行资源,可最大限度地实现宽发射、乱序的超标量处理,提高处理器运算部件的利用率,缓和由于数据相关或Cache未命中带来的访问内存延时。当没有多个线程可用时,SMT处理器几乎和传统的宽发射超标量处理器一样。SMT最具吸引力的是只需小规模改变处理器核心的设计,几乎不用增加额外的成本就可以显著地提升效能。多线程技术则可以为高速的运算核心准备更多的待处理数据,减少运算核心的闲置时间。

(二). 多核心处理器

多核心,也指单芯片多处理器(Chip Multiprocessors,简称CMP)。CMP是由美国斯坦福大学提出的,其思想是将大规模并行处理器中的SMP(对称多处理器)集成到同一芯片内,各个处理器并行执行不同的进程。这种依靠多个CPU同时并行地运行程序是实现超高速计算的一个重要方向,称为并行处理。多线程技术的出现一般会让每个核心处理一条线程。

(三). 多处理器

SMP(Symmetric Multi-Processing),对称多处理结构的简称,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。在这种技术的支持下,一个服务器系统可以同时运行多个处理器,并共享内存和其他的主机资源。
构建一套SMP系统的必要条件是:支持SMP的硬件包括主板和CPU;支持SMP的系统平台,再就是支持SMP的应用软件。为了能够使得SMP系统发挥高效的性能,操作系统必须支持SMP系统,如WINNT、LINUX、以及UNIX等等32位操作系统。即能够进行多任务和多线程处理。多任务是指操作系统能够在同一时间让不同的CPU完成不同的任务;多线程是指操作系统能够使得不同的CPU并行的完成同一个任务。

文章转自另一博友:https://blog.csdn.net/ssirreplaceable/article/details/53172264

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值