码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 操作系统 | 计算机系统概述


    文章目录

      • 大家熟悉的操作系统
      • 操作系统的概念(定义)
      • 操作系统的功能和目标
        • 作为系统资源的管理者
        • 向上层提供方便易用的服务
          • GUI
          • 联机命令接口
          • 脱机命令接口
          • 程序接口
        • 作为最接近硬件的层次
      • 操作系统的特征
        • 并发
        • 共享
        • 虚拟
        • 异步
      • 操作系统的特征:并发和共享的关系
      • 操作系统的发展与分类
        • 手工操作阶段
        • 批处理阶段—单道批处理系统
        • 批处理阶段—多道批处理系统
        • 分时操作系统
        • 实时操作系统
        • 其他几种操作系统
      • 操作系统的运行机制
        • 预备知识:程序是如何运行的?
        • 内核程序vs应用程序
        • 特权指令vs非特权指令
        • 内核态vs用户态
        • 内核态和用户态的切换
      • 两种指令、两种处理器状态、两种程序
      • 中断和异常
        • 中断的作用
        • 中断的类型
        • 内中断的例子
        • 外中断的例子
        • 中断的分类
        • 中断机制的基本原理
      • 系统调用
        • 什么是系统调用?有何作用?
        • 系统调用与库函数的区别
        • 小例子:为什么系统调用是必须的?
        • 什么功能要用到系统调用?
        • 系统调用的过程
      • 操作系统的体系结构
        • 操作系统的内核
        • 大内核和微内核
        • 新增考点:操作系统的其他结构
          • 分层结构
          • 模块化
          • 宏内核、微内核
            • 宏内核(大内核)
            • 微内核
          • 外核
      • 操作系统的引导
        • 一个刚买回来的磁盘(硬盘)
        • 安装完操作系统后
        • 操作系统引导(开机过程)
        • Windows操作系统的初始化程序
      • 虚拟机
        • 传统计算机
        • 虚拟机
          • 第一类VMM
          • 第二类VMM
          • 两类虚拟机管理程序(VMM)的对比
          • 支持虚拟化的CPU通常分更多指令等级

    大家熟悉的操作系统

    在这里插入图片描述

    操作系统的概念(定义)

    在这里插入图片描述
    在这里插入图片描述

    操作系统的功能和目标

    作为系统资源的管理者

    在这里插入图片描述

    向上层提供方便易用的服务

    在这里插入图片描述

    GUI

    在这里插入图片描述

    联机命令接口

    在这里插入图片描述

    脱机命令接口

    在这里插入图片描述

    程序接口

    在这里插入图片描述
    在这里插入图片描述

    • 狭义的用户接口其实不包括GUI

    作为最接近硬件的层次

    在这里插入图片描述
    在这里插入图片描述

    操作系统的特征

    在这里插入图片描述

    并发

    • 并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但是微观上是交替发生的。
    • 并行:指两个或多个事件在同一时刻同时发生。
      在这里插入图片描述
      在这里插入图片描述

    共享

    在这里插入图片描述

    虚拟

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    异步

    在这里插入图片描述

    操作系统的特征:并发和共享的关系

    在这里插入图片描述
    在这里插入图片描述

    操作系统的发展与分类

    在这里插入图片描述

    手工操作阶段

    在这里插入图片描述

    批处理阶段—单道批处理系统

    在这里插入图片描述
    在这里插入图片描述

    批处理阶段—多道批处理系统

    在这里插入图片描述

    分时操作系统

    在这里插入图片描述

    实时操作系统

    在这里插入图片描述

    其他几种操作系统

    在这里插入图片描述
    在这里插入图片描述

    操作系统的运行机制

    在这里插入图片描述

    预备知识:程序是如何运行的?

    在这里插入图片描述

    内核程序vs应用程序

    在这里插入图片描述

    特权指令vs非特权指令

    在这里插入图片描述

    内核态vs用户态

    在这里插入图片描述

    内核态和用户态的切换

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    两种指令、两种处理器状态、两种程序

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    中断和异常

    在这里插入图片描述

    中断的作用

    在这里插入图片描述

    • 没有中断技术肯定就没法实现多道程序并发,甚至可以说没有中断技术就没有操作系统
      在这里插入图片描述

    中断的类型

    在这里插入图片描述

    内中断的例子

    在这里插入图片描述
    在这里插入图片描述

    • 陷入指令很明显是运行在用户态的,而非特权指令

    外中断的例子

    在这里插入图片描述

    中断的分类

    在这里插入图片描述

    中断机制的基本原理

    在这里插入图片描述
    在这里插入图片描述

    系统调用

    什么是系统调用?有何作用?

    在这里插入图片描述

    系统调用与库函数的区别

    在这里插入图片描述

    小例子:为什么系统调用是必须的?

    在这里插入图片描述

    什么功能要用到系统调用?

    在这里插入图片描述

    系统调用的过程

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    操作系统的体系结构

    操作系统的内核

    在这里插入图片描述

    大内核和微内核

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    新增考点:操作系统的其他结构

    在这里插入图片描述

    分层结构

    在这里插入图片描述

    • 内核分多层,每层可单向调用更低一层提供的接口
    • 每一层只能调用相邻的更第一层提供的功能,而不能跨层调用
    • 优点:
      • 便于调试和验证,只需自底向上逐层调试验证即可
      • 易扩充和易维护,各层之间调用接口清晰固定(在操作系统设计之初就规定好的,要扩充新的一层只需要保证原来两层之间的接口不变即可)
    • 缺点:
      • 仅可调用相邻低层,难以合理定义各层的边界(比如进程管理有时候需要使用到内存管理相应的功能,而内存管理相应的功能有时候又需要使用到进程管理提供的一些东西)
      • 效率低,不可跨层调用,系统调用执行时间长(有时候用户想使用最底层提供的功能,但是用户无法直接调用最底层提供的功能接口,只能一层一层往下传递)

    模块化

    在这里插入图片描述

    • 将内核划分为多个模块,各模块之间相互协作
    • 内核 = 主模块 + 可加载内核模块
    • 主模块:只负责核心功能,如进程调度、内存管理
    • 可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核(锦上添花)
    • 优点
      • 模块之间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发
      • 支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性
      • 任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高
    • 缺点:
      • 模块之间的接口定义未必合理且实用
      • 模块间相互依赖,更难调试和验证

    宏内核、微内核

    在这里插入图片描述

    宏内核(大内核)
    • 所有的系统功能模块都放在内核里(大内核结构的OS通常也采用了“模块化”的设计思想)
    • 优点:
      • 性能高(不用频繁地进行内核态和用户态的转变),内核内部各种功能都可以直接相互调用
    • 缺点:
      • 内核庞大功能会很复杂,难以维护
      • 大内核中某个功能模块出错,就可能导致整个系统崩溃
    微内核
    • 只把中断、原语、进程通信等最核心的功能放入内核,进程管理、文件管理、设备管理等功能以用户进程的形式运行在用户态
    • 优点:
      • 内核功能小,易于维护,内核可靠性高
      • 内核外的某个功能模块出错不会导致整个系统崩溃
    • 缺点:
      • 性能低,需要频繁地在用户态和核心态进行切换
      • 用户态下的各功能模块不可以直接相互调用,只能通过内核的”消息传递“来间接通信

    外核

    在这里插入图片描述

    • 内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源(磁盘、内存),且由外核负责保证资源使用安全
    • 优点:
      • 外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源
      • 减少了虚拟硬件资源的“映射层”,提升效率
    • 缺点:
      • 降低了系统的一致性
      • 使系统变得更复杂

    操作系统的引导

    • 操作系统引导(boot):开机的时候,怎么让操作系统运行起来?

    一个刚买回来的磁盘(硬盘)

    在这里插入图片描述

    安装完操作系统后

    在这里插入图片描述

    • 分区表:其实就是一个数据结构,说明了在这个磁盘里面每一个盘/每一个分区分别占多大的空间以及每个分区的地址范围

    在这里插入图片描述
    在这里插入图片描述

    操作系统引导(开机过程)

    在这里插入图片描述

    • 计算机系统的主存包含我们常说的RAM还有ROM(存储 BIOS:Basic Input/Output System)
    • ROM芯片里面的数据是不会因为断电而丢失,而RAM里面的数据一断电就无了

    在这里插入图片描述

    • 开机,CPU一旦通上电,CPU会去主存固定的位置去找到ROM引导程序(自举程序),一条一条执行这个程序的指令,ROM引导程序会指示CPU把磁盘的主引导记录MBR读入内存,然后CPU就会执行主存里RAM中的磁盘引导程序,磁盘引导程序会根据分区表判断C盘所处的位置,从而读入C盘第一部分的数据-引导记录PBR,从而找到启动管理器并执行,从根目录下面找到完整的操作系统初始化程序(启动管理器),从而完成操作系统初始化等工作
      在这里插入图片描述

    Windows操作系统的初始化程序

    在这里插入图片描述

    虚拟机

    传统计算机

    在这里插入图片描述

    • 传统的计算机在一个物理机器上只能运行一个操作系统,操作系统之上可以运行各种各样的用户进程
    • 但是在商业化环境下会导致硬件资源利用不充分的问题,如果多个用户要使用这个物理机器,只能运行在同一个操作系统之上,但两个进程可能会互相影响且争夺资源,可能会造成隐患
    • 一个解决方法是再弄一个物理机器来跑进程,但这会导致物理资源的极大浪费

    虚拟机

    在这里插入图片描述

    第一类VMM

    • 直接运行在硬件之上(运行在内核态)
    • 虚拟机管理程序把一个物理机器虚拟化为多台虚拟机器,把一个总的硬件资源划分为多个部分,分别给各个虚拟机使用
    • 每台虚拟机上可以安装各自的操作系统(运行在虚拟内核空间,即用户态,当想要使用特权指令的时候这个行为会被虚拟机管理程序所截获,由VMM负责把上层操作系统所要执行的特权指令进行等价的转换,从而让上层感觉特权指令执行成功了)
    • 每个虚拟机的操作系统之上又可以运行各自的用户进程

    第二类VMM

    • 运行在宿主操作系统上(即本机原先安装好的操作系统)
    • 常用的第二类VMM
      在这里插入图片描述

    两类虚拟机管理程序(VMM)的对比

    在这里插入图片描述

    • 第二类VMM中部分运行在内核态的VMM部分是以虚拟机驱动程序的方式加载到操作系统内核当中的

    支持虚拟化的CPU通常分更多指令等级

    在这里插入图片描述

    • 相当于把原本的特权指令进行细分
    • 把原本的敏感指令放在Ring 0,把不敏感的指令放在其他Ring 上面
    • 这样虚拟机特权指令不用检查每一条特权指令的执行,只需要检查某些敏感指令的执行就可以了
  • 相关阅读:
    C# using语句使用介绍
    【场景化解决方案】深度融合钉能力,酷学院打造创新产品体验
    1200*C1. k-LCM (easy version)(找规律)
    网络层IP协议
    HTML入门篇---02列表、表格、表单标签
    深度学习 LSTM长短期记忆网络原理与Pytorch手写数字识别
    【无公网IP内网穿透】 搭建Emby媒体库服务器并远程访问「家庭私人影院」
    vue-router
    Pytorch D2L Subplots方法对画图、图片处理
    Linux——操作指令(ls,cd,touch,mkdir,tree,pwd,rm,man,cp)
  • 原文地址:https://blog.csdn.net/weixin_44043952/article/details/125604465
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号