操作系统笔记2——操作系统基本功能概述

本节对操作系统的基本目标、基本功能、设计要素进行介绍

操作系统的基本目标和功能

操作系统是控制应用程序执行的程序,并充当应用程序和计算机硬件之间的接口

操作系统的目标:

  • 方便——方便应用程序和用户操作(有接口和界面)
  • 有效——提高使用计算机资源的效率
  • 扩展能力——可以在操作系统内核上通过补丁和应用程序实现功能的扩展

操作系统提供的服务

  • 程序开发——提供接口
  • 程序运行——提供运行和调用软硬件的基本条件
  • I/O设备访问
  • 文件访问控制
  • 系统访问
  • 错误检测和响应
  • 记账
作为用户和程序接口的操作系统

20230301_100836.jpg

典型计算机系统中的三种重要的接口:

  • 指令系统体系结构(ISA)
    定义了计算机遵循的机器语言指令系统,该接口是硬件与软件的分界线。
  • 应用程序二进制接口(ABI)
    定义了程序间二进制可移植性的标准。
  • 应用程序编程接口(API)
    允许应用程序访问系统的硬件资源和服务
作为计算机系统资源管理器的操作系统

20230301_101417.jpg

PS: 操作系统的内核

操作系统的内核是操作系统常驻内存的部分,也是操作系统管理的核心

操作系统内核(Kernal)是一组应用软件,这个软件能够控制所有硬件及计算机活动。如硬盘访问、网卡传输和键盘开始工作等,开机后内核程序将会常驻受保护的内存中。硬件由内核管理后,操作系统将会提供一组系统调用接口,帮助完成诸如显示、读写设备等基本操作,架构是计算机硬件的组织形式,架构不同则内核也不同(Arm架构和x86架构)。

可扩展性的操作系统
  • 一个重要的操作系统应该能够不断发展,原因:
    • 硬件升级和新型硬件的出现
    • 新的服务
    • 纠正错误
  • 对操作系统设计的要求:
    • 采用模块化的结构
    • 清楚地定义模块间的接口
    • 备有说明文档

操作系统的演化

操作系统历史.png

串行处理时代

串行处理时期(20世纪40年代到50年代中期),没有操作系统,用户必须顺序访问计算机。存在两个主要问题:

  • 调度
  • 准备时间

批处理系统时代

第一个操作系统(第一个批处理操作系统):20世纪50年代中期,General Motors开发,用于IBM701

中心思想:监控程序
  • 用户作业-计算机操作员-将作业组织成批-输入-监控程序
  • 每个程序处理完后返回到监控程序,同时,监控程序自动加载下一个程序。
  • 大部分监控程序必须总是处于内存中并且可以执行(见图2.3),这部分称为常驻监控程序(resident monitor)。其他部分包括一些实用程序和公用函数,它们作为用户程序的子程序,在需要用到它们的作业开始执行时才被载入。
作业控制语言(JCL)
  • 为监控程序提供指令。每个作业中的指令以JCL的基本形式给出。
涉及到的硬件功能
  • 内存保护——当用户程序正在运行时,不能改变包含监控程序的内存区域。
    • 若试图这样做,则处理器硬件将发现错误,并将控制权转交给监控程序,监控程序取消这个作业,输出错误信息,并加载下一个作业。
  • 定时器——定时器用于防止一个作业独占系统。
    • 在每个作业开始时,设置定时器,若定时器时间到,则会停止用户程序,控制权返回给监控程序。
  • 特权指令——某些机器指令被设计成特权指令,只能由监控程序执行。处理器在运行一个用户程序时,若遇到这类指令,则会发生错误,并将控制权转交给监控程序。
    • I/O指令属于特权指令,因此监控程序可以控制所有I/O设备,此外还可避免用户程序意外地读取下一个作业中的作业控制指令。用户程序希望执行I/O时,须请求监控程序为自己执行这一操作。
  • 中断——早期的计算机模型并没有中断能力。这个特征使得操作系统在让用户程序放弃控制权或从用户程序获得控制权时,具有更大的灵活性。
  • 开始出现了用户态和内核态的概念
    • 用户态-用户程序
    • 内核态-监控程序
特点
  • 优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升
  • 缺点:它的缺点就是单道性——内存中仅能有一道程序运行,CPU有大量的时间是在等待I/O完成,资源利用率仍然很低

多道批处理操作系统时代

  • 运用多道程序设计(多任务处理)的技术
  • 即使是对简单批处理操作系统提供的自动作业序列,处理器仍然经常处于空闲状态。问题在于I/O设备相对于处理器而言速度太慢。此时通过多道处理技术可以解决这个问题
  • 内存同时保存多个程序,当一个作业需要等待I/O时,处理器可以切换到另一个不需要等待I/O的作业。
    • 多道程序设计实例.png
    • 提高CPU的利用率。
    • 需要中断技术、内存管理、进程调度等方面的支持。
      • 对多道程序设计最有帮助的硬件是,支持 IO中断和直接内存访问(Direct Memory Access,DMA)的硬件。
      • 多道程序设计操作系统要比单个程序或单道程序设计(uniprogramming)系统复杂。待运行的多个作业须保留在内存中,因此需要内存管理(memory management)。此外,准备运行多个作业时,处理器必须决定运行哪个作业,因此需要某种调度算法。
CPU利用率的计算

可参考:计算IO设备、CPU利用率

分时系统时代

为什么要有分时系统?

批处理用户不能干预自己程序的运行,无法得知程序的运行情况,不利于程序调试和排错。故需要

分时系统的特征
  • 同时性:指允许多个终端用户同时使用一台计算机,即一台计算机与若干台终端相连接,终端上的这些用户可以同时或基本使用计算机
  • 交互性:用户能够方便地与系统进行人机对话,即用户通过终端采用人机对话的方式直接控制程序运行,与同程序进行交互
  • 独立性:系统中多个用户可以彼此独立地进行操作,互不干扰,单个用户感觉不到别人的存在,好像自己在独占计算机
  • 及时性:用户请求能在很短时间内得到响应
  • 时钟中断,时间片技术。
分时系统和批处理多道系统的区别

分时和多道批处理的区别.png

分时和多道程序设计引发的新问题
  • 作业的相互干扰
  • 文件系统的保护
  • 处理资源的竞争

现代实时系统

分时系统的缺陷
  • 不能优先处理一些紧急任务。操作系统对各个用户都是完全公平的,循环地为每个用户服务一个时间片,不区分任务的紧急性
实时操作系统

实时操作系统是为了能在某个时间限制内完成某些紧急任务而不需要时间片排队而诞生的

  • 硬实时系统:某个动作绝对地在规定的时刻或规定的时间范围发生(比如飞行器的自动控制系统就必须提供绝对保证,让某个动作在规定时间内完成)
  • 软实时系统:能够接受偶尔违法时间规定且不会引起任何永久性的损害(比如12305订票系统)

实时系统的 优特点 如下

  • 优点:能够响应一些紧急任务,某些紧急任务不需要时间片排队
  • 特点:实时操作系统的控制下,计算机系统接受到外部信号后及时进行处理,并且要在严格时间限制内处理完成,具有很强的及时性和可靠性
实时操作系统的主要分类
  • 网络操作系统:把计算机网络中的各台计算机有机地结合起来,提供一种统一、 经济而有效的使用各台计算机的方法,实现各台计算机之间数据的互相传送。网络操作系统最主要的特点是网络中各种资源的共享及各台计算机之间的通信
  • 分布式计算机系统
    • 是由多台计算机组成并满足下列条件的系统:
      • 系统中任意两台计算机通过通信方式交换信息;系统中的每台计算机都具有同等的地位,即没有主机也没有从机;
      • 每台计算机上的资源为所有用户共享;
      • 系统中的任意台计算机都可以构成一个子系统, 并且还能重构;
      • 任何工作都可以分布在几台计算机上,由它们并行工作、协同完成。
    • 用于管理分布式计算机系统的操作系统称为分布式计算机系统。该系统的主要特点是:分布性和并行性
    • 分布式操作系统与网络操作系统的本质不同是,分布式操作系统中的若干计算机相互协同完成同一任务。
  • 个人计算机操作系统是目前使用最为广泛的操作系统,它广泛应用于文字处理、电子表格和游戏等等。
  • 嵌入式操作系统

操作系统的主要成果

操作系统开发中四个重要的理论进展

  • 进程
  • 内存管理
  • 信息保护和安全
  • 调度和资源管理

进程

定义
  • 一个正在执行的程序。
  • 计算机中正在运行的程序的一个实例。
  • 可以分配给处理器并由处理器执行的一个实体。
  • 由单一顺序的执行线索、一个当前状态和一组相关的系统资源所描述的活动单元。
问题
  • 同步
    • 不正确的同步:常常会出现一个例程必须挂起,等待系统中其他地方的某一事件的情况。
    • 例如,一个程序启动了一个I/O读操作,在继续进行前必须等到缓冲区中有数据。这时需要来自其他例程的一个信号,而设计得不正确的信号机制可能导致信号丢失或接收到重复信号。
  • 互斥
    • 失败的互斥:常常会出现多个用户或程序试图同时使用一个共享资源的情况。
    • 因此必须有某种互斥机制,以保证一次只允许一个例程对一部分数据执行事务处理。
    • 这种互斥机制未必对所有序列都生效,所以必须确定某些序列是不适于多线程的
  • 不确定的程序操作
    • 某个特定程序的结果只依赖于该程序的输入,而不依赖于共享系统中其他程序的活动。但是,当程序共享内存且处理器控制它们交替执行时,它们可能会因为重写相同的内存区域而发生不可预测的相互干扰。
    • 因此,程序调度顺序可能会影响某个特定程序的输出结果。
  • 死锁
    • 很可能有两个或多个程序相互挂起等待。
组成
  • 一段可执行的程序
  • 程序所需要的相关数据
  • 程序的执行上下文
    • 执行上下文(execution context)又称进程状态(process state),是操作系统用来管理和控制进程所需的内部数据。这种内部信息和进程是分开的,因为操作系统信息不允许被进程直接访问。
    • 上下文包括操作系统管理进程及处理器正确执行进程所需的所有信息,包括各种处理器寄存器的内容,如程序计数器和数据寄存器。它还包括操作系统使用的信息,如进程优先级及进程是否在等待特定I/O事件的完成。
进程和程序的区别
  • 进程是动态的
  • 程序是静态的
线程

本质上,一个分配了资源的进程可分解为多个并发的线程,这些线程相互协作执行,完成进程的工作。

内存管理机制

管理责任
  • 进程隔离:操作系统必须保护独立的进程,防止互相干扰各自的存储空间,包括数据和指令。
  • 自动分配和管理:
    • 程序应该根据需要在存储层次间动态地分配,分配对程序员是透明的。
    • 因此,程序员无须关心与存储限制有关的问题,操作系统会有效地实现分配问题,可仅在需要时才给作业分配存储空间。
  • 支持模块化程序设计
    • 程序员应该能够定义程序模块(在内存中),并动态地创建、销毁模块和改变模块的大小。
  • 保护和访问控制
    • 不论在存储层次中的哪一级,存储器的共享都会产生一个程序访问另一个程序内存空间的潜在可能性
    • 当某个特定的应用程序需要共享时,这是可取的。但在其他时候,它可能会威胁到程序的完整性,甚至威胁到操作系统自身。
    • 操作系统必须允许一部分内存可以由各种用户以各种方式进行访问
  • 长期存储
    • 需要有让内容在关机后仍然被存储的办法
文件系统
  • 文件系统通过将内存内容存入外存实现了长期存储
虚拟内存机制
  • 在应用程序层面屏蔽主存、外存和缓存的存在
  • 允许程序从逻辑的角度访问存储器,不用考虑物理内存上可用的空间数量。
  • 虚拟内存的分页和虚拟地址机制,以及内存中缺失页面时的缺页加载机制

信息保护和安全

与操作系统相关的安全和保护问题

  • 可用性:保护系统不被打断。
  • 保密性:保证用户不能读到未授权访问的数据。
  • 数据完整性:保护数据不被未授权修改。
  • 认证:涉及用户身份的正确认证和消息或数据的合法性。

调度和资源管理

资源分配和调度策略需考虑的因素:
  • 公平性
    • 通常希望给竞争使用某一特定资源的所有进程提供几乎同等和公平的访问机会。
    • 对同一类作业,即有类似请求的作业,更需要如此。
  • 有差别的响应性
    • 操作系统可能需要区分具有不同服务要求的不同作业类别。
    • 操作系统被期望去立即响应紧急的任务,比如IO任务和互联网连接
  • 有效性
    • 操作系统希望获得最大的吞吐量和最小的响应时间,并在分时情形下能够容纳尽可能多的用户

近年来操作系统的新特征

  • 微内核体系结构
    • 大内核 :将操作系统的主要功能模块都作为系统内核,运行在核心态
      • 优点: 性能高
      • 缺点: 内核代码庞大,结构混乱,难以维护
    • 微内核 :只把最基本的功能保留在内核
      • 优点: 内核功能少,结构清晰,方便维护
      • 缺点: 需要频繁在核心态和内核态之间切换,性能低
  • 多线程:允许应用程序将进程分划为线程
  • 对称多处理:
  • 分布式操作系统
  • 面向对象设计:运用面向对象原理使得编程者可以在操作系统上定制对象样式的扩展功能,也使得分布式工具和分布式操作系统的开发变得容易

容错性

系统或部件在发生软/硬件错误时,能够继续正常运行的能力。

操作系统拥有容错性是旨在提高系统的可靠性

冗余

操作系统设计中通常会涉及一定程度的冗余

  • 空间(物理)冗余:多个组件同时执行相同的功能,或者备份。
  • 时间冗余:检测到错误时重复某一功能或操作。
  • 信息冗余:通过复制或编码数据的方式来检测和修复位数据。

衡量指标

与容错性相关的系统运行质量的基本度量指标:

  • 可靠性
    • 一段时间内系统正确运行的概率
  • 平均修复时间
    • 修复或替换错误部分所花费的平均时间
  • 可用性
    • 系统能够有效服务用户请求的时间段(某个给定的时刻和条件下,正常运行的概率)

错误到底是什么

错误在计算机科学中是指一个不正确的硬件或软件状态

  • 永久性错误:错误一旦发生,就会一直存在。
    • 硬盘磁头损坏、通信部件损坏等。
  • 临时性错误:错误不存在于所有操作条件下。
    • 瞬时性错误:仅发生一次(电源故障)。
    • 间歇性错误:发生在多个不可预测的时间(连接松动)。

操作系统中用来提高容错性的相关技术

  • 进程隔离
  • 并发控制
  • 虚拟机
  • 检测点和回滚机制

多核和多处理器操作系统的开发

众核时代」:核心数和处理器数大幅增加而操作系统的更新没跟上

对称多处理器计算机的操作系统设计考虑因素

  • 并发进程或线程
  • 调度
  • 同步
  • 内存管理
  • 可靠性和容错性

多核计算机的操作系统设计考虑因素

  • SMP系统上的所有设计问题
  • 潜在的并行规模问题
    • 应用层并行
    • 虚拟机方式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方铎极客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值