【计算机操作系统学习笔记】第一章:操作系统引论

前言:

感谢大佬们的不求回报的分享,
感谢好人们的百忙之中的帮助。

爱的传递,希望能帮到更多的人。
在这里插入图片描述

1.1 操作系统的目标和作用……P1

1.1.1 操作系统的目标:

方便性,有效性,可扩充性和开放性。

1.1.2 操作系统的作用:

  1. OS作为用户与计算机硬件系统之间的接口。
    在这里插入图片描述
  2. OS作为计算机系统资源的管理者。
  3. OS实现了对计算机资源的抽象。
    在这里插入图片描述

备注:

  1. 计算机系统资源可分为四类:处理机、存储器、I/O设备、文件(数据和程序)。

处理机管理是用于分配和控制处理机。
存储器管理主要负责内存的分配和回收。
I/O设备管理是负责I/O设备的分配(回收)与操纵。
文件管理是用于实现对文件的存取、共享和保护。

  1. I/O设备管理软件实现了对计算机硬件操作的 第一个层次的抽象
    文件管理软件实现了对资源操作的 第二个层次的抽象

1.1.3 推动操作系统发展的主要动力:

  1. 不断提高计算机资源利用率。
  2. 方便用户。
  3. 器件的不断更新换代。
  4. 计算机体系结构的不断发展。
  5. 不断提出新的应用需求。

1.2 操作系统的发展过程……P5

1.2.1 未配置操作系统的计算机系统:

  1. 人工操作方式。

缺点:
1.用户独占全机。
CPU等待人工操作。

  1. 脱机输入输出(Off-Line I/O)方式。

在这里插入图片描述

1.2.2 单道批处理系统:

  1. 单道批处理系统(Simple Batch Processing System)的处理过程。

在这里插入图片描述

  1. 单道批处理系统的缺点:最主要的缺点就是,系统中的资源得不到充分的利用。

在这里插入图片描述

1.2.3 多道批处理系统(Multiprogrammed Batch Processing System)

  1. 多道程序设计的基本概念。

在这里插入图片描述

  1. 多道批处理系统的优缺点

资源利用率高。
系统吞吐量大。
平均周转时间长。
无交互能力。

  1. 多道批处理系统需要解决的问题。

处理机争用问题。
内存分配和保护问题。
I/O设备分配问题。
文件的组织和管理问题。
作业管理问题。
用户与系统的接口问题。

注:
操作系统的定义

  • 操作系统是一组能有效地组织和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序的集合。

1.2.4 分时系统(Time Sharing System)

  1. 分时系统的引入。
    如果说推动多道批处理系统形成和发展的主要动力是,提高资源的利用率和吞吐量;那么,推动分时系统形成和发展的主要动力则是,为了满足用户对人——机交互的需求。

人——机交互。
共享主机。

  1. 分时系统实现中的关键问题。

及时接收。
及时处理。

  • 作业直接进入内存。
  • 采用轮转运行方式。
    注:为避免一个作业长期独占处理机,引入了时间片的概念。一个时间片,就是一段很短的时间(例如:30ms)。
  1. 分时系统的特征

多路性。
独立性。
及时性。
交互性。

1.2.5 实时系统(Real Time System)

实时系统是指 系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理。并控制所有实时任务协调一致地运行。

  1. 实时系统的类型。

工业(武器)控制系统。

  • 火炮的自动控制系统、飞船的自动驾驶系统。

信息查询系统。

  • 飞机或火车票的订票系统。

多媒体系统。
嵌入式系统。

  1. 实时任务的类型。

周期性实时任务和非周期性实时任务。

  • 都必须联系着一个截止时间(Deadline),或称为最后期限。 又可分为:(1)开始截止时间(2)完成截止时间。

硬实时任务和软实时任务。

  1. 实时系统与分时系统特征的比较。

多路性。
独立性。
及时性。
交互性。
可靠性。

1.2.6 微机操作系统的发展

  1. 单用户单任务操作系统。

CP/M
MS-DOS

  1. 单用户多任务操作系统。
  2. 多任务多用户操作系统。

1.3 操作系统的基本特性……P13

批处理系统有着高的资源利用率和系统吞吐量;分时系统能获得及时响应;实时系统具有实时特征。除此之外,它们还共同具有并发、共享、虚拟、异步四个基本特征。

1.3.1 并发(Concurrence)

  1. 并行和并发。
  2. 引入进程。

在一个未引入进程的系统中,在属于同一个应用程序的计算程序和I/O程序之间只能是顺序执行,即:只有计算程序执行告一段落后,才允许I/O程序执行。
注:
进程:是指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据、堆栈等组成的,是一个能独立运行的活动实体。

1.3.2 共享(Sharing)

  1. 互斥共享方式。

把这种在一段时间内只允许一个进程访问的资源,称为临界资源(或独占资源)。

  1. 同时访问方式。

并发和共享是多用户(多任务)OS的两个最基本的特征。

1.3.3 虚拟(Virtual)

在OS中也是利用时分复用空分复用技术来实现“虚拟”的。

  1. 时分复用技术。

虚拟处理机技术。
虚拟设备技术。

  1. 空分复用技术。

1.3.4 异步(Asynchronism)

**1.4 操作系统的主要功能……P16

1.4.1 处理机管理功能

  1. 进程控制。

进程控制还应包括为一个进程创建若干个线程

进程控制的主要功能
为作业创建进程、撤消(终止)已结束的进程、控制进程在运行过程中的状态转换。

  1. 进程同步。

进程同步机制:主要任务是为多个进程(含线程)的运行进行协调。
常用的协调方式:

  • (1)进程互斥方式。
  • (2)进程同步方式。

注:

  • 最简单的用于实现进程互斥的机制是,为每一个临界资源配置一把锁W,当锁打开时,进程可以对该临界资源进行访问;而当锁关上时,则禁止进程访问该临界资源。
  • 实现进程同步,最常用的机制是信号量机制。
  1. 进程通信。

进程通信的任务是:实现相互合作进程之间的信息交换

  1. 调度。
    在传统的OS中,调度包括作业调度进程调度两步。

作业调度。

  • 按照一定算法选择出若干作业分配给所需的资源。

进程调度。

  • 按照一定算法选择一个进程,将处理机分配给它。

1.4.2 存储器管理功能

存储器管理的主要任务,为多道程序的运行提供良好的环境、提高存储器的利用率、方便用户使用、并能从逻辑上扩充内存。
为此,存储器管理应具有内存分配和回收内存保护地址映射内存扩充 、等功能。

  1. 内存分配。

内存分配的主要任务

  • 为每道程序分配内存空间,使它们“各得其所”。
  • 提高存储器的利用率,尽量减少不可利用的内存空间(碎片)。
  • 允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要。

OS在实现内存分配时,可采取静态分配动态分配两种方式。

  1. 内存保护。

主要任务:

  • 确保每道用户程序都仅在自己的空间内运行,彼此互不干扰。
  • 绝不允许用户程序访问操作系统的程序和数据,也不允许用户程序转移到非共享的其它用户程序中去执行。

内存保护机制:一种比较简单的就是设置两个界限寄存器,分别用于存放正在执行程序的上界和下界。

  1. 地址映射。
    地址映射功能:即能够将地址空间中的逻辑地址 转换 为内存空间中与之对应的物理地址
  2. 内存扩充。

借助虚拟存储技术,从逻辑上扩充内存容量。

为了能在逻辑上扩充内存,系统必须设置内存扩充机制(包含少量的硬件)。

  • 请求调入功能。
  • 置换功能。

1.4.3 设备管理功能

主要任务:
(1)完成用户进程提出的I/O请求,为用户进程分配所需的I/O设备。并完成指定的I/O操作。
(2)提高CPU和I/O设备的利用率,提高I/O速度,方便用户使用I/O设备。
为实现上述任务,设备管理应具有缓冲管理设备分配设备处理虚拟设备、等功能。

  1. 缓冲管理。

最常见的缓冲区机制:

  • 单缓冲机制、
  • 能实现双向同时传送数据的双缓冲机制、
  • 能供多个设备同时使用的公用缓冲池机制。
  1. 设备分配。
    为实现设备分配,系统中应设置设备控制表控制器控制表等数据结构,用于记录设备及控制器等的标识符和状态。
  2. 设备管理。
    (1)设备管理程序又称为设备驱动程序
    (2)其基本任务是用于实现CPU和设备控制器之间的通信,即:由CPU向设备控制器发出I/O命令,要求它完成指定的I/O操作。

1.4.4 文件管理功能

主要任务是:对用户文件系统文件进行管理以方便用户使用,并保证文件的安全性。
为此,文件管理应具有对文件存储空间的管理目录管理文件的读/写管理文件的共享与保护、等功能。

  1. 文件存储空间的管理。

主要任务是:

  • 为每个文件分配必要的外存空间,提高外存的利用率,进而提高文件系统的存、取速度。
  • 为此,系统中应设置相应的数据结构,用于记录文件存储空间的使用情况,以供分配存储空间时参考。还应具有对存储空间进行分配和回收的功能。
  1. 目录管理。

主要任务是:

  • 为每个文件建立一个目录项,目录项包括文件名、文件属性、文件在磁盘上的物理位置等,并对众多的目录项加以有效的组织,以实现方便的按名存取。
  • 即:用户只需提供文件名,即可对该文件进行存取。
  1. 文件的读/写管理和保护。

文件的读/写管理。

  • 该功能是根据用户的请求,从外存中读取数据,或将数据写入外存。
  • 在进行文件读/写时,系统先根据用户给出的文件名去检索文件目录,从中获得文件在外存中的位置。然后,利用文件读/写指针,对文件进行读/写。一旦读/写完成,便修改读/写指针,为下一-次读/写做好准备。
  • 由于读和写操作不会同时进行,故可合用一个读/写指针。

文件保护:

  • ①防止未经核准的用户存取文件。
  • ②防止冒名顶替存取文件。
  • ③防止以不正确的方式使用文件。

1.4.5 操作系统与用户之间的接口

  1. 用户接口。

为了便于用户直接或间接地控制自己的作业,操作系统向用户提供了命令接口。
用户可通过该接口向作业发出命令以控制作业的运行。
该接口又进步分为联机用户接口脱机用户接口图形用户接口三种。

  1. 程序接口。

1.4.6 现代操作系统的新功能

  1. 系统安全。

认证技术。
密码技术。
访问控制技术。
反病毒技术。

  1. 网络的功能和服务。

网络通信。
资源管理。
应用互操作。

  1. 支持多媒体。

接纳控制功能。
实时调度。
多媒体文件的存储。

1.5 OS结构设计……P22

软件质量可用这样几个指标来评价:功能性有效性可靠性易使用性可维护性易移植性

1.5.1 传统操作系统结构

我们把早期的无结构的OS(第一代)、模块化结构的OS(第二代)、分层式结构的OS(第三代),都称为传统结构的OS
而把微内核结构的OS称为现代结构的OS

  1. 无结构操作系统。
  2. 模块化操作系统。

模块化程序设计技术的基本概念。
在这里插入图片描述
模块独立性。

  • 衡量模块独立性的两个标准:
    (1)内聚性。
    (2)耦合性。

模块接口法的优缺点。

  • 优点:
  • 提高OS设计的正确性、可理解性、可维护性。
  • 增强OS的可适应性。
  • 加速OS的开发过程。
  • 缺点:
  • 很难满足实际需求。
  • 各模块齐头并进,无法找到一个可靠的决定顺序,造成各种决定的“无序性”。
  1. 分层式结构OS。

概念。

  • 自底向上的分层设计的基本原则:每一步设计都建立在可靠的基础上。

优缺点。

  • 优点:
    (1)易保证系统的正确性。
    (2)易扩充和易维护。
  • 缺点:
    系统效率低。

1.5.2 客户/服务器模式(Client/Server Model)简介

客户/服务器模式(Client/Server Model)简称C/S模式

  1. 客户/服务器模式的由来、组成、类型。

客户/服务器系统主要有3部分组成

  • 客户机。
  • 服务器。
  • 网络系统。
  1. 客户/服务器之间的交互。

一次完整的交互过程可分为以下四步

  • 客户发送请求消息。
  • 服务器接收消息。
  • 服务器回送消息。
  • 客户机接收消息。
  1. 客户/服务器模式的优缺点。

数据的分布处理和存储。
便于集中管理。
灵活性和扩充性。
易于改编应用软件。

1.5.3 面向对象的程序设计(Object-Orientated Programming)技术简介

  1. 基本 概念。
    所谓对象,是指现实世界中具有相同的属性服从相同的规则的一系列事务(事务可以是一个物理实体、一个概念或一个软件模块等)的抽象,而把其中的具体事务称为对象的实例。

对象

  • 面向对象的技术中,是利用被封装的数据结构(变量)和一组对它进行 操作的过程(方法)来表示系统中的某个对象的,如图1-8 所示。对象中的变量(数据)也称为属性。它可以是单个标量或一张表。 面向对象中的方法是用于执行某种功能的过程,它可以改变对象的状态,更新对象中的某些数据值或作用于对象所要访问的外部资源。如果把一个文件作为一个对象(见图1.9), 该对象的变量便是文件类型。文件大小,文件的创建者等。对象中的方法包含对文件的操作,如创建文件、打开文件、读文件、写文件、关闭文件等。
  • 对象中的变量(数据)对外是隐蔽的,因而外界不能对它直接进行访问,必须通过该对象中的一组方法(操作函数)对它进行访问。例如要想对图1-9所示的文件A执行打开操作,必须用该对象中的打开过程去打开它。同样地,对象中的一组方法的实现细节也是隐蔽的。因此对象中的变量可以得到很好的保护,而不会允许未经受权者使用和对它进行不正确的操作。
    在这里插入图片描述

对象类

  • 在实践中,有许多对象可能表示的是同一类事物, 每个对象具有自己的变量集合,而它们所具有的方法是相同的。如果为每一个相似的对象都定义一组变量和方法, 显然是低效的,由此产生了“对象类”的概念,利用“对象类”来定义一组大体相似的对象。一个类同样定义了一组变量和针对该变量的一组方法,用它们来描述一组对象的共同属性和行为类是在对象上的抽象,对象则是类的实例。对象类中所定义的变量在实例中均有具体的值。
  • 例如,我们将文件设计成一个类,类的变量同样是文件类型、文件大小和创建者等。类中的方法是文件的创建、打开、读写、关闭等。图1-9 示出了一个文件类,在类的变量中没有具体数值,一旦被赋予了具体数值就成了文件A对象。对象类的概念非常有用,因为它极大地提高了创建多个相似对象的效率。

继承

  • 在面向对象的技术中,可以根据已有类来定义一个新的类,新类被称为子类(B),原来的类被称为父类(A),见图1-10所示。
  • 继承是父类和子类之间共享变量和方法的机制,该机制规定子类自动继承父类中定义的变量和方法,并允许子类再增加新的内容。继承特性可使定义子类变得更容易。一个父类可以定义多个子类,它们分别是父类的某种特例,父类描述了这些子类的公共变量和方法。类似地,这些子类又可以定义自己的子类,通过此途经可以生成一个继承的层次。另外,也允许一个子类有两个父类或多个父类,它可以从多个父类获得继承,此时称为“多重继承”。在这里插入图片描述
  1. 面向对象的优点

(1) 通过“重用”提高产品质量和生产率。

  • 在面向对象技术中可通过“重用”以前项目中经过精心测试的对象或“重用”由其他人编写、测试和维护的对象类来构建新的系统,这不仅可大大降低开发成本,而且能获得更好的系统质量。

(2)使系统具有更好的易修改性和易扩展性。

  • 通过封装,可隐蔽对象中的变量和方法,因而当改变对象中的变量和方法时,不会影响到其它部分,从而可方便地修改老的对象类。另外,继承是面向对象技术的重要特性,在创建一个新对象类时,通过利用继承特性可显著减少开发的时空开销,使系统具有更好的易扩展性和灵活性。

(3)更易于保证系统的“正确性”和“可靠性”。

  • 对象是构成操作系统的基本单元,由于可以独立地对它进行测试,易于保证每个对象的正确性和可靠性,因此也就比较容易保证整个系统的正确性和可靠性。此外,封装对对象类中的信息进行了隐蔽,这样又可有效地防止未经授权者的访问和用户不正确的使用,有助于构建更为安全的系统。

1.5.4 微内核OS结构

  1. 基本概念。

足够小的内核。

  • 微内核并非是一个完整的操作系统,而只是将操作系统中的最基本的部分放入微内核
  • 通常包含有:
    (1)与硬件处理紧密相关的部分。
    (2)一些较基本的功能。
    (3)客户和服务器之间的同信。

基于客户/服务器模式

  • 由于客户/服务器模式具有非常多的优点,故在单机微内核操作系统中几乎无一例外地都采用客户/服务器模式,将操作系统中最基本的部分放入内核中,而把操作系统的绝大部分功能都放在微内核外面的一组服务器(进程)中实现,
  • 如用于提供对进程(线程)进行管理的进程(线程)服务器、提供虚拟存储器管理功能的虚拟存储器服务器、提供I/O设备管理的I/O设备管理服务器等,它们都是被作为进程来实现的,运行在用户态,客户与服务器之间是借助微内核提供的消息传递机制来实现信息交互的。图1-11示出了在单机环境下的客户/服务器模式。在这里插入图片描述

应用”机制和策略分离“原理。

  • 传统的OS,将机制放在OS的内核的较低层,把策略放在内核的较高层次中。
  • 而在微内核OS中,通常将机制放在OS的微内核中。

采用面向对象技术。

  1. 微内核的基本功能。

进程(线程)管理。
低级存储管理。
中断和陷入处理。

  1. 微内核OS的优点。

提高了系统的可扩展性。
增强了系统的可靠性。
可移植性。
提供了对分布式系统的支持。
融入了面向对象技术。

  1. 微内核OS存在的问题

效率降低

  • 最主要的原因是,在完成一次客户对操作系统提出的服务请求时,需要利用消息实现多次交互和进行用户/内核模式与上下文的多次切换。
  • 然而,在早期的OS中,用户进程在请求取得OS服务时,一般只需进行两次上下文的切换: 一次是在执行系统调用后由用户态转向系统态时;另一次是在系统完成用户请求的服务后,由系统态返回用户态时。
  • 微内核OS中,由于客户和服务器、服务器和服务器之间的通信都需通过微内核,致使同样的服务请求至少需要进行四次上下文切换。第一次是发生在客户发送请求消息给内核,以请求取得某服务器特定的服务时;第二次是发生在由内核把客户的请求消息发往服务器时:第三次是当服务器完成客户请求后,把响应消息发送到内核时;第四次是在内核将响应消息发送给客户时。
  • 实际情况是往往还会引起更多的上下文切换。例如,当某个服务器自身尚无能力完成客户请求而需要其它服务器的帮助时,如图1-12所示,其中的文件服务器还需要磁盘服务器的帮助,这时就需要进行8次上下文的切换。在这里插入图片描述

为了改善运行效率,可以重新把一些常用的OS基本功能由服务器移入微内核中。

End :

如果觉得有收获,就请我喝杯咖啡吧!

发布了7 篇原创文章 · 获赞 15 · 访问量 1005

猜你喜欢

转载自blog.csdn.net/qq_45637040/article/details/104753096