• (三)操作系统的运行环境


    一、操作系统的运行机制

    几个基本概念

    • 内核程序  < = = = > 应用程序
    • 核心态     < = = = > 用户态
    • 特权指令  < = = = > 非特权指令

    在这里插入图片描述

    1. 时钟管理

    通过硬件提供

    • 计时:提供系统时间
    • 时钟中断:比如进程切换

    2. 中断机制

    • 提高多道程序环境下CPU利用率
      • 例如发生I/O阻塞时,CPU不再继续等待I/O,挂起当前任务先去执行其他任务
    • 外中断:中断信号来源于->外部设备
      • 例如来自于I/O设备
    • 内中断:中断信号来源于->当前指令
      • 正在运行的的程序引发指令或者发生了一些问题导致中断(也叫:异常/陷入/例外)
        • 陷阱/陷入(Trap):由应用程序主动引发(不是产生)
        • 故障(Fault):由错误条件引发
        • 终止(Abort):由致命错误引发
          陷入指令中断 故障中断

    中断处理过程
    无论是内中断还是外中断都有对应的中断处理程序
    中断处理过程
    大致分为三个步骤

    1. 保存现场
    2. 执行中断程序
    3. 恢复现场继续执行后面的指令

    3. 原语

    原语运行在内核空间

    • 由若干条指令组成(程序段)
    • 用来完成某个特定功能
    • 执行过程不会被中断(原子性)
      • 通过关中断、开中断实现

    原语是对一组操作的封装,并且这一组操作运行时间较短,不能被中断

    4. 系统数据结构

    一般只涉及到对数据结构的操作,不涉及硬件

    • 进程管理:作业控制块、进程控制块
    • 存储器管理:存储器分配与回收
    • 设备管理:缓冲区、设备控制块

    5. 系统调用

    • 有操作系统实现,给应用程序调用
    • 是一套接口的集合
    • 应用程序访问内核服务的方式

    操作系统底层实现了一套接口,提供给应用程序调用,系统调用的处理运行在核心态,通过陷入指令(在用户态执行)的方式实现系统调用
    在这里插入图片描述

    二、操作系统体系结构

    1. 传统的操作系统结构(大内核)

    第一代:无结构OS

    • 一系列过程(程序)的集合,过程间可以互相调用
    • 结构复杂且混乱,难以调试、阅读和维护
      无结构OS

    第二代:模块化结构OS:模块-接口法OS

    • 给予“分解”和“模块化”原则
    • 按照功能划分模块/子模块,规定模块间的接口
    • 模块独立性标准:高内聚、低耦合
    • 优点:
      • 提高OS设计的正确性、可理解性和可维护性
      • 增强OS的适应性
      • 加速开发过程
    • 缺点
      • 模块接口设计难以扩展后续需求
      • 模块设计没有同一决策标准,导致模块接口设计不可靠

    模块化OS

    第三代:分层式结构OS

    • 有序分层法,自顶向下依次依赖
    • 设计时,自底向上:每一步建立在可靠的基础上
    • 优缺点:
      • 容易保证系统正确性
      • 容易扩充和维护
      • 自上而下的层次通信,导致系统效率降低

    分层式结构OS

    2. 微内核OS结构

    微内核的基本概念

    • 足够小的内核,只实现OS核心功能

      • 与硬件处理紧密相关的部分,比如硬件处理、客户与服务器通信和其它基本功能
      • 一些较基本的功能
      • 客户和服务器之间通信 (客户/服务器模式)
    • 应用采用“机制与策略分离”原理

    • 采用面向对象技术

    微内核的优缺点

    • 微内核OS的优点
      • 提高OS的可扩展性、可靠性、可移植性
      • 支持分布式系统
      • 融入了面向对象技术
    • 微内核OS的缺点
      • 相较早期OS,降低了一定的效率(用户态、内核态切换次数较 大内核OS 更多)
        在这里插入图片描述
  • 相关阅读:
    Spring Security 集成 OIDC 项目编码 | 认证(三)
    822 - Queue and A (UVA)
    怎么做好测试用例评审
    Deepwalk详解
    Axure RP美容美妆医美行业上门服务交互原型图模板源文件
    58-66-hive-数据类型-分区-分桶
    Servlet(一):实现一个Servlet程序和使用Smart Tomcat部署Servlet程序
    微机保护装置智能操控及无线测温等产品在某助剂厂新建项目的应用
    如何在 java开发工具MyEclipse 中连接到数据库?
    SetProxy.bat 设置代理
  • 原文地址:https://blog.csdn.net/qq_34912889/article/details/128072087