操作系统(一)计算机操作系统概述

计算机系统

计算机系统是一种可以按照用户要求接收和存储信息、自动进行数据处理并输出结果信息的系统。

在这里插入图片描述

计算机系统资源包扩两大类:硬件资源和软件资源,任何程序的运行都要占用资源。

操作系统

操作系统是计算机系统中的一个大型软件程序,它是一些程序模块的集合:能有效地组织和管理计算机系统中的硬件和软件资源,合理(“公平”对待不同的用户程序,保证系统不发生“死锁”和“饥饿”现象)组织计算机工作流程,控制程序的执行,并向用户提供各种功能服务(向程序设计人员提供高效的编程接口,向用户提供可灵活、方便(易用性、易学性、易维护性)、有效使用计算机的接口),使用户能够灵活、方便、有效地使用计算机,并使计算机系统能够高效运行。

操作系统的特征

  • 并发性
    并发性是指计算机系统中同时存在若干个运行着的程序,从宏观上看,这些程序在同时向前推进。
    微观上,单处理器环境下,这些程序是交替运行的。在多处理器环境下,多个程序是并发执行的。
    TIPS:
    并行性:多个事件在同一时刻发生。(物理上也是同时的,即宏观,微观都是同时发生的)
    并发性: 多个事件在同一时间间隔内发生。(只在宏观上是同时的)
  • 共享性
    共享性是指操作系统与多个用户程序公用系统中的各种资源(CPU、内存、外存、外部设备)。这种共享性是在操作系统控制下实现的。
    在计算机系统中,对资源的共享一般有两种形式:
    1 互斥共享:特定时间内只能由某一一个用户程序使用,其他使用者需等待其使用完毕后使用。(比如打印机)
    2 同时共享:同一时间段内可被多个程序同时(宏观上的同时,微观上时交替的)访问。(比如磁盘)
  • 随机性
    操作系统是在一组随机环境(操作系统不能对所运行程序的行为以及硬件设备的情况做出任何事先的假定)下运行的。随机性突出强调了在进行操作系统设计与实现时要充分考虑各种各样的可能性。操作系统本身应稳定、可靠、安全、高效、实现程序并发和资源共享的目的。

多种角度看待操作系统

  • 从软件角度
    从软件角度看,操作系统就是一个大型软件系统,它是多种程序功能的集合。作为一种大型软件系统,操作系统有软件系统的外在特性和内在特性。
    • 外在特性
      指软件的外部表现形式,即它的操作命令定义集和节面,完全确定了这个软件的使用方式。
    • 内在特性
      既然操作系统是一种软件,它就具有一般软件的结构特点,然而它又不是一般的使用软件,所以它又具有自己的特殊结构。
  • 从资源管理角度
    操作系统就是负责管理计算机系统的资源使用。如登记哪些资源被哪些程序使用,哪些资源还是空闲的,以及回收哪些不再使用的资源。
    计算机系统资源
  • 从进程的角度
    进程可分为用户进程和系统进程两大类,操作系统负责控制和协调这些进程的运行。
  • 从虚拟机的角度
    在操作系统的支持下,用户不需要直接使用硬件机器(裸机),而是通过操作系统提供的各种功能来控制和使用计算机。操作系统把裸机扩充为功能强、易使用的计算机系统,我们把这种计算机系统称为虚拟计算机。把操作系统的全部功能,统称为操作系统虚机器。
  • 从服务提供者角度
    操作系统(服务提供者)提供了一系列的功能和便利(为了用户使用上的便利,服务提供者提供了一组功能强大、方便、易用的广义指令(称为系统调用))的工作环境为用户服务。

操作系统的功能

  • 进程管理
    进程管理的实质是对CPU进行管理,所以进程管理往往又称为处理器管理。CPU是计算机系统中最宝贵的资源,为了提高CPU利用率,现代操作系统往往采用多道程序技术(如果一个程序等待某一条件而处理等待状态(如读取数据),则将CPU占用权交给另一个可运行程序)。为了描述多道程序的并发执行,就要引入进程的概念。通过对进程的管理协调多道程序之间的关系,解决有关CPU分配调度策分配的实施和回收等问题,以使CPU资源得到更充分的利用。
    由于操作系统对CPU管理策略的不同,操作系统对其作业处理的方式也就不同,例如有批处理方式、分时处理方式和实时处理方式等,从而有各种不同性质的操作系统呈现在用户面前。
    进程管理主要包括以下内容:
    • 进程控制:主要任务创建进程、撤销结束的进程、控制进程运行时各种状态的转换。
      在多道程序环境下,进程是操作系统进行资源分配的单位。
      在进程创建时,系统要为进程分配各种资源,如内存,外设等;
      在进程退出是,系统要从进程空间中收回分配的资源。
    • 进程同步:目的是使多个进程可以有条不紊的执行。
      多个进程的执行是并发的,它们以异步的方式运行,它的执行进度也是不可预知的。操作系统提供进程同步机制,以协调进程的运行。一般有一下两种协调方式:
      • 互斥:指多个进程对临界资源访问时采用互斥的形式。最简单的实现方法就是给资源加锁。并提供操纵锁变量的原语(指具有某种功能、运行时有原子性的小段程序),包括开锁原语和关锁原语。
      • 同步:在相互协作共同完成任务的进程之间,用同步机制协调他们之间的执行顺序。
    • 进程间通信
      • 进程间通信主要发生在相互协作的进程之间。既然需要协作,协作的进程间就一点存在信息或数据的交换。操作系统提供进程间交换信息或数据的手段。
    • 调度
      调度又称处理器调度,通常包括线程调度,进程调度和作业调度。进程(线程)调度的基本任务就是从进程(线程)的就绪队列中通过算法选出一个进程(线程)将处理器资源分配给它,并准备好特定的执行上下文让它执行起来。作业调度的基本任务则是从作业后备队中按一定算法挑出若干个作业,并按照作业说明说为它们分配一定的资源,把它们装入内存并未每个作业建立相应的进程。
  • 存储管理
    存储管理的任务是管理计算机系统的内存资源。
    • 内存的分配与回收
      操作系统为每个进程分配内存空间,在分配的过程中还要尽可能 的提高内存资源的使用效能。对于已经退出运行进程的内存空间,操作系统要加以收回,重新利用。在使用计算机一定时间后,会发现有一部内存持续不可用,查看空间使用图中,会发现存在大量空间碎片,这种现象是内存回收算法的缺陷造成的。可见内存的分配与回收对计算机系统运行的影响是巨大的。
    • 存储保护
      由于内存是多个程序共享的,所以就存在内存越界访问的情况(系统错误,恶意攻击),所以在现代操作系统中,通常提供有硬件实现的存储保护机制,操作系统则利用这一机制实现进程的地址保护。
    • 内存扩充
      内存扩充功能就是借助于虚拟存储技术(操作系统通常将地址空间划分为4KB大小的页面,并且以页面为单位进行存储空间的调度,进程所需的总页面数所对应的空间可以超出实际物理空间,即操作系统只把正在使用的页面保持在内存中或把即将使用的页面调入到内存中,而将不使用的页面放到外存中,用户感受不到实际内存对使用空间的限制。系统要实现这一机制,必须提供请求页面调入的功能和页面置换的功能。)在逻辑上增加进程内存运行空间的大小,这个大小比实际物理内存要大得多。
  • 文件管理
    计算机系统中的信息资源(如程序和数据)是以文件的形式存储在外存储器中的,需要使用时将它们装入内存。操作系统一般都提供一个具有强大功能的文件系统。文件管理的主要任务就是有效地支持文件的存储、检索和修改等操作,解决文件的共享、保密和保护问题,以使用户方便、安全地访问文件
    • 文件存储空间的管理
      任何文件存储在外存储器中,都需要以某种形式占据外存储器的空间。文件系统的一个重要功能就是为每个文件分配一定的外存空间,并尽可能提高外存空间的利用率和文件访问的效能。文件系统设置专门的数据结构记录文件存储空间的使用情况。为了提高空间利用率,存储空间的分配通常采用离散分配方式,以512B或者几KB的块为基本单位进行分配。
    • 目录管理
      目录管理的主要任务就是给出组织文件的方法,它为每个文件建立目录项,并对众多的目录项加以有效的组织,以便为用户提供方便的按名存取。
    • 文件系统的安全性
      安全性包括文件的读写权限以及存取控制。用以防止未授权的用户存取文件,防止越权访问文件,防止使用不正确的方式访问文件
  • 设备管理
    现在计算机系统中,存在着大量的外部设备。操作系统应向用户提供设备管理(除CPU、内存外的所有输入、输出设备的管理)功能。用户不必了解设备及接口技术,通过操作系统就可以方便的对设备进行操作。
  • 用户接口
    操作系统应向用户提供使用自己的手段。即用户与操作系统间的接口。从用户角度看,操作系统就是计算机系统与用户之间的接口。因此,接口管理的任务就是为用户提供一个使用系统的良好环境。是用户能有效地组织工作流程,并使整个系统能够高效的运行。

操作系统的体系结构

Windows 操作系统的体系结构

Windows体系结构是分层的模块系统,主要层次有硬件抽象层HAL、内核、执行体和大量的子系统(环境子系统(仿真不同的操作系统)和保护子系统(提供安全功能))集合。前三个都运行在保护模式下,而各个子系统在用户模式下运行。
Windows

  • 内核
    内核执行Windows操作系统中最基本的操作,主要提供以下功能:进程调度、陷入处理和异常调度、中断处理和调度、多处理器同步、供执行体使用的基本内核对象。
    Windows操作系统的内核始终运行在核心态,代码短小紧凑,可移植性好,通常除了中断服务例程,正在运行的线程是不能抢先内核的。
  • 硬件抽象层
    Windows操作系统设计的一个重要点就是多种硬件平台的可移植性,硬件抽象层就是使这种可移植性成为可能的关键部分。它为运行在Windows操作系统上的硬件平台提供低级接口,隐藏了各种与硬件有关的细节。
  • 执行体
    Windows的执行体是NTOSKRNL.EXE的上层(内核是其下层)。执行体从用户态导出并可调用函数,这些函数接口在NTDLL.DLL中,通过win32API可对它们进行访问。
  • 系统进程和系统线程
    系统进程是一种特殊类型的、只运行在核心态的“系统线程”的宿主。系统线程具有一般用户态线程的所有属性和描述表,不同点在于它们仅运行在内核态,执行加载与系统空间中的代码。另外,系统线程没有用户进程地址空间,因此必须从系统内存堆中分配动态存储区。
    系统线程只能从内核态调用。Windows操作系统以及不同的设备驱动程序在系统初始化时创建系统线程以执行那些需要线程描述表的操作。

UNIX 操作系统的体系结构

最里层是硬件,作为整个系统的基础;紧邻最里层的是操作系统内核,包括进程管理、存储器管理、设备管理和文件管理四个资源管理功能;往外一层是系统调用接口,即操作系统与用户的接口shell以及编译程序等;最外层是应用程序。
在这里插入图片描述

  • 内核层
    是操作系统管理和控制中心,常驻在内存中。
    其具有两方面的接口:

    • 内核与硬件的接口:通常是由一组应用程序和一些基本的例程所组成。
    • 内核与shell的接口:由两组系统调用及命令解释程序等组成。

    内核本身可分为两大部分:

    • 进程控制子系统:负责对四个资源中的两个资源(处理器和存储器进行管理),其功能可分为进程控制、进程通信、存储器管理和进程调度。
    • 文件子系统:负责有效的管理系统中所有的设备和文件。其功能可分为文件管理、高速缓存机制、设备驱动程序。
  • 系统调用层
    界于内核层和应用层之间,是供程序员设计、开发应用程序时调用的。UNIX进程调用包括进程管理、文件管理、终端状态等。

  • 应用层
    包括各种开发工具、高级语音编译器、网络通信处理程序等。所有应用程序都是在Shell(命令语音解释程序)的管理和控制之下为用户服务的,是面向用户操作的界面。
    在这里插入图片描述

Linux 操作系统的体系结构

  • Linux 内核
  • Linux Shell
  • Linux 文件系统
  • Linux 应用程序

Android 操作系统的体系结构

  • Android 应用程序
  • Android 应用框架
  • C、C++本地库和Android 运行时环境
  • Linux 内核

操作系统的发展

操作系统如其他事物一样,也有它的诞成长和发展的过程。

  • 手工操作
    二次大战对武器装备设计的需要,美、英、德使用真空管建造数字电子计算机。在此阶段,通过一些插板上的硬连线来控制计算机的基本功能,程序设计全部采用机器语言,没有程序设计语言(包括汇编),更谈不上操作系统,只进行数值计算。到了20世纪50年代,出现了穿孔卡片,可将程序写在卡片上。在一个程序运行期间,整台计算机连同其附属设备全部被占用。程序员兼职操作员,效率低下。
    • 特点:手工操作,独占方式。
  • 监控程序(早起批处理)
    五十年代晶体管的发明极大地改变了整个状况。计算机变得比较可靠,厂商可批量成产卖给用户。出现了FORTRAN、ALGOL、COBOL等高级语言。此时要运行一个作业(JOB,一个或一组程序),程序员将程序写在纸上(高级语言或汇编语言),交给操作员。计算机运行完当前任务后,将结果输出在卡片上,由操作员送到输出室。由于处理器速度的提高,导致手工操作设备输入、输出信息与计算机计算速度不匹配。因此人们设计了监督程序,来实现JOB的自动转换处理,这种自动定序的处理方式称为批处理。而且因为是串行执行,所以称为单道批处理。
  • 多道批处理
    随之计算机硬件的不断发展,通道使得输入输出与处理器操作并行处理称为可能,与此同时然间系统也随之发生变化,实现了在硬件提供并行处理之上的多道批处理。
    所谓多道就是运行多个程序同时存在与内存中,处理器以切换方式为之服务,使得多个程序可同时执行。从而极大提高了系统在单位时间内处理作业的能力。这时管理程序已迅速发展成为一个重要的软件分之—操作系统
  • 分时与实时系统
    批处理系统不适合交互式的作业,对交互式工作方式的需求导致了分时系统(多个用户通过终端设备与计算机交互作用来运行自己的作业,并共享一个计算机系统而互不干扰,就像每人都有一台独立的计算机)的诞生。
    实时系统一般用于对时间有特殊要求的工作,如天气预报,工业控制等。实时系统对时间点要求苛刻,需要对事件及时响应。
  • UNIX 通用操作系统
    它是现代操作系统的代表,显示出了强大的生命力。
    使用C语言编写的,因此是可移植的。是一个良好的、通用的、多用户、多任务、分时操作系统。具有树形文件系统和一定安全机制;有简洁的字符流文件和文件保护机制;UNIX有强大的Shell,它即是命令解释器,又是编程用高级语言,还可用于扩充系统功能。
  • 个人计算机操作系统
    Windows操作系统出现,并成为主流的个人计算机操作系统。
    Linux操作系统出现,Linux继承了UNIX的全部优点,而且开放全部源码。它是机器健壮的,曾连续不停机运行一年而不崩溃。
  • Androd 操作系统
    一款主要面向移动设备,基于Linux内核的开源移动操作系统,包括了Linux内核、中间件和关键移动应用的一整套软件。

操作系统分类

根据操作系统在用户界面的使用环境和功能的不同,对操作系统进行分类。一般可分为批处理操作系统,分时操作系统,实时操作系统。随着计算机操作系统的发展,又出现了许多类型的操作系统(个人操作系统、网络操作系统、分布式操作系统、嵌入式操作系统)。
在这里插入图片描述

批处理操作系统

  • 基本工作方式
    用户将作业交给操作员,操作员收到一定数量的作业后,组成一批作业,后输入计算机,这批作业在系统中形成一个连续的、自动转换的作业流。最后由操作员将作业结果交给用户。

  • 特点与分类

    • 特点:成批处理,批处理过程中,用户不可干预程序的运行。即如果中途发现错误,只能等待完成后进行下一次提交。这种处理方式延长了软件开发时间,所以批处理适合成熟的程序。
      • 优点:作业自动转换,资源利用率高,作业吞吐量大(单位时间内处理作业的个数),从而提高了整个系统的效率。
      • 缺点:用户不能直接与计算机交换,不利于调试。
    • 分类
      • 简单批处理系统:作业串行执行。
      • 多道批处理系统:作业并行执行。
  • 设计思想
    程序启动前,操作员有选择地把若干作业合并成一批作业,监控程序将自动控制这批作业的执行。系统运行过程是:单个作业调入内存,运行,结束后再调入下一个作业。因为作业的运行与作业之间的衔接都是有程序控制,所有有效地提高了作业运行效率。

  • 作业控制说明书
    工作原理:作业的步骤是有作业控制说明书(也是一段程序,通常编写在批作业之前)来传递给监控程序的。

    • 例子:
      批作业包括A(汇报语言编写),B(FORTRAN编写)两个程序。用户要求将两个程序分别汇编、编译之后链接成一个程序运行。
      . STEP1 ASM A
      . STEP2 FTN B
      . STEP3 LINK A,B,C
      . STEP4 RUN C
      STEP指第几步作业,ASM表示进行汇编,FTN表示进行FORTRAN编译,LINK表示进行链接装配,RUN表示运行
  • 一般指令和特权指令
    在简单批处理操作阶段,为了防止用户误操作而导致系统发生不可预料的结果,有必要对CPU的运行划分出不同状态。这就为CPU引入了运行模式的概念。

    • 用户模式(目态):一般指令
    • 特权模式(管态):特权指令(只有监控程序才可执行),包括输入输出、停机指令等。
  • 系统调用的过程

    1. 系统调用发生时,处理器通过一种特殊机制(中断或异常处理),把控制流程转移到监控程序内的一些特定位置,同时,处理器模式转变为特权模式。
    2. 由监控程序执行作业代码。
    3. 处理结束后,监控程序回复调用前的状态。把运行模式从特权模式恢复成默认模式。最后控制权转移回原来的用户程序。
  • SPOOLing技术
    简单批处理程序不具有并行执行(多个程序同时运行)作业的能力,真正引入并发机制的是多道批处理操作系统。在多道处理系统(提高硬件资源利用率)的关键技术就是多道程序运行和假脱机(SPOOLing)技术等。

    • SPOOLing全称同时的外部设备联机操作。基本思想:就是将磁带设备直接作为主机的输入输出设备,主机直接从磁带上读取程序运行,作业结果也存在磁盘上。相应地通道则负责将用户作业从卡片机上动态写入磁盘中,这一操作与主机并行。
    • 多道程序设计的基本思想:在内存中同时保存多个作业,CPU以交替的方式进行处理。
      在这里插入图片描述

分时系统

  • 基本工作方式
    一台主机连接若干个终端,每个终端可以由一个用户使用。用户通过终端交互式地向系统发送请求命令,CPU采用时间片轮转的方式处理请求,并通过交互方式在终端上显示结果。
  • 设计思想
    将处理器运行时间划分成若干个小片段,称为时间片。操作系统以时间片为单位,对每个终端的请求进行处理。由于时间片及短,远远小于人类反应时间,所以每个用户感觉不到别的用户的存在,以为系统是他独占的。
  • 特点
    • 多路线:多个用户同时使用一台计算机,宏观上多个用户同时使用一个处理器,微观上每人在不同时刻(时间片)轮流使用一个处理器。
    • 交互性:用户根据相应结果进行下一步操作,直接干预每一步的进行。
    • 独占性:用户感觉不到其他人在使用计算机,好像是在单独使用。
    • 及时性:系统对用户请求给予及时相应。
  • 目标
    及时相应用户输入的交互命令,相应时间越短越好。

一般通用操作系统结合了分时系统与批处理系统的特点,处理原则是:分时优先,批处理在后。一般把分时系统运行状态称为前台,批处理系统运行状态称为后台。分时作业称为前台作业(处理终端用户、交互式的、比较小的、需要及时处理的作业)。批处理作业称为后台作业(运行时间较长、需要其他外部设备、比较大型、无需终端用户干预)。

实时操作系统

实时操作系统:计算机能在规定时间内,及时相应外部事件请求,同时完成对该事件的处理,并能够控制所有实时设备和实时任务协调一致地工作的操作系统。

主要目标:在严格时间范围内,对外部请求做出反应,系统具有高度可靠性。

  • 硬实时系统:如火箭导弹控制等,时间精确度通常在微妙以下。
  • 软实时系统:如银行。

实现要求

  • 具有多道程序系统的基本能力
  • 实时时钟管理:能对实时任务(定时任务、延时任务(主动式和从动式))进行实时处理。
  • 过载保护:有能力在突发的大量实时任务中,找出并执行(通过抛弃或延后次要任务)最重要的任务。
  • 高可靠性:实时操作系统的任何故障都可能带来巨大的危害,所以软件和硬件都需要很强的健壮性和坚固性。

嵌入式操作系统

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

优点:高可靠性、实时性、占有资源小、智能化能源管理、易于连接、低成本等优点。

个人计算机操作系统

是一种单用户多任务的操作系统。

特点:某一时间段内为单个用户服务、采用界面友好的图形界面进行人机交互、使用方便,用户无需专业知识。

网络操作系统

基于计算机网络、在各种计算机操作系统之上按网络体系结构协议标准设计开发的软件,它包括网络管理、通信、安全、资源共享和各种网络应用。

网络操作系统把计算机网络中的各个计算机有机地连接起来,其目标是相互通信及资源共享。

分布式操作系统

将大量的计算机通过网络连接到一起,可以获得 更高的运算能力及广泛的数据共享。分布式操作系统是网络操作系统的更高形式,处理具有网络操作系统的各种功能之外,还具备如下特征:

  • 是一个统一的操作系统,在系统内的所有主机使用的是统一操作系统。
  • 实现资源的深度共享。通过统一的操作系统调度,在某主机的计算任务可以迁移到另一主机上,真正实现了处理器资源的共享
  • 透明性:在用户眼里分布式操作系统就是一台具有强大运行能力的计算机。
  • 自治性:系统内的各个主机关系平等,没有主从关系,一台失效不会产生影响。

优点:分布式、可靠性。

操作系统设计

  • 设计复杂度高
    复杂程度主要表现在:
    • 程序长,有的功能模块可能保护数百万条命令;
    • 接口信息多,各个模块间信息交换多,切错综复杂;
    • 动态性强,程序本身包含较多动态部分;
    • 并行性强:不同部分之间可同时操作。
    • 操作系统必须处理同步机制,管理同步比管理顺序执行难的多,而且会产生死锁等一系列问题。
    • 要提供用户之间共享信息和资源的机制,并要保护共享的安全。
    • 要考虑到将来的硬件变化情况,以支持各种不断推陈出新的IO设备。
    • 必须有一定通用性和对以前版本的兼容性。
    • 要防止外部用户入侵,必须采取措施防止来自外部的入侵。
  • 正确性难以保证
    包含的功能成分很多,各种外部设备的接口复杂,导致操作系统源码的正确性难以保证。参与开发的人员基数较大,也增加了保证整个软件正确性的难度。
  • 研制周期长
    因上述两个原因,操作系统研发周期较长。研制周期一般为5年左右。

操作系统的设计过程

操作系统的三方面设计是互相渗透的,不能截然分开的。目标是设计出具有好结构、高功效、又具有所需功能的操作系统。

  • 功能设计:确定操作系统类型及所具有的功能
  • 算法设计:根据计算机性能和所需功能,选择满足条件的算法策略,并分析和估算其功效。
  • 结构设计:按照系统功能和特性要求,选择合适的结构,是操作系统结构清晰、简明、可靠、易读、易修改,使用方便、适用性强。

操作系统的设计目标

  • 可靠性:正确性和健壮性
  • 高效性:可提高系统中各种资源的利用率,即提高系统运行效率。
  • 易维护性
  • 可移植性
  • 安全性
  • 简明性

操作系统的结构设计

  • 操作系统结构设计的重要性
    目的是将一个大型软件划分成若干较小的模块,以及这些模块间如何交互。
  • 操作系统结构研究的目标
    • 系统模块化
    • 模块标准化
    • 通信规范化

操作系统的结构

  • 整体式结构
    早期操作系统设计所采用的方法,即首先确定操作系统的总体功能,然后分解为若干子功能,实现每个子功能的程序称为模块。
  • 层次式结构
  • 微内核(客户/服务器)结构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值