当前位置: 首页 > article >正文

4、操作系统结构和发展史

一、操作系统结构

操作系统结构一般有:单体系统、分层结构、微内核、客户-服务器系统、虚拟机和外核

二、单体系统

1、了解单体系统

  • 单体系统
    • 是指整个操作系统作为一个单一的、完整的程序运行。在这种设计中,操作系统的所有功能(如进程管理、内存管理、文件系统、设备驱动等)都集成在一个大的程序中运行在内核态
  • 特点
    • 高度集成:所有功能模块都紧密耦合,运行在同一个地址空间
    • 高性能:由于模块之间的调用是直接的函数调用没有额外的通信开销,因此性能较高
    • 难以维护和扩展:由于所有功能模块都集成在一起,修改一个模块可能会影响其他模块,导致系统难以维护和扩展。
    • 可靠性问题一个模块的错误可能导致整个系统崩溃

2、结构

在这里插入图片描述

  • 单体系统开发的过程中,遵循以下原则
    • 主程序:作为系统的入口点,负责初始化系统并调度其他服务程序。
    • 服务过程:直接处理系统调用,是内核与用户空间交互的桥梁。
    • 实用(辅助服务)程序:为服务过程提供支持,如数据处理、资源管理等,形成层次化的服务架构。

三、分成系统

1、了解

  • 分层系统
    • 核心思想是将操作系统的功能划分为多个层次(Layer),每一层只依赖于其下一层提供的服务并为上一层提供服务。这种设计方式通过层次化的结构,提高了系统的模块化、可维护性和可扩展性。
      在这里插入图片描述

2、结构

在这里插入图片描述

四、微内核

1、了解

  • 微内核
    • 其核心思想是将操作系统的最基本功能(如进程管理、内存管理、进程间通信等)保留在内核中,而将其他功能(如文件系统、设备驱动、网络协议栈等)移到用户空间,作为独立的服务运行。
      在这里插入图片描述

2、结构

  • 微内核之外,系统的结构可以分为三层全部运行在用户态下。

五、客户-服务器模式

1、了解

  • 客户-服务器模式
    • 把进程划分为两类: 服务器 ,每个服务器用来提供服务; 客户端 ,使用这些服务。这个模式就是所谓的 客户-服务器 模式。
    • 客户通过发送消息与服务器通信,客户端并不需要知道这些消息是在本地机器上处理,还是通过网络被送到远程机器上处理。对于客户端而言,这两种情形是一样的:都是发送请求并得到回应。
      在这里插入图片描述

六、计算机启动过程

1、简明启动过程

那么有了上面一些硬件再加上操作系统的支持,我们的计算机就可以开始工作了,那么计算机的启动过程是怎样的呢?下面只是一个简要版的启动过程。

  • 操作系统的启动流程通常分为以下几个阶段
    • 加电自检(Power-On Self-Test, POST):
      • 硬件初始化,检查硬件设备是否正常工作。
    • 加载引导加载程序(Bootloader):
      • 存储设备(如硬盘、SSD)加载引导加载程序到内存
    • 引导加载程序执行
      • 引导加载程序加载操作系统的内核到内存。
    • 操作系统内核初始化
      • 内核初始化硬件设备、内存管理、进程管理等核心功能。
    • 用户空间初始化
      • 启动系统服务、加载用户界面(如命令行或图形界面)。

2、linux和Windows启动过程

  • 1)Linux 启动流程
    • BIOS/UEFI:执行 POST,加载 GRUB 引导加载程序。
    • GRUB:加载 Linux 内核和 initramfs。
    • Linux 内核:初始化硬件,挂载根文件系统,启动 init 或 systemd。
    • systemd:启动系统服务,加载用户界面。
  • (2)Windows 启动流程
    • BIOS/UEFI:执行 POST,加载 Windows Boot Manager。
    • Windows Boot Manager:加载 Windows 内核(NTOSKRNL.EXE)。
    • Windows 内核:初始化硬件,启动系统服务(如 SMSS.EXE)。
    • 用户登录:加载图形界面,显示登录界面。

3、启动流程的关键技术

  • BIOS vs UEFI
    • BIOS 是传统的固件接口,使用 MBR 分区表。
    • UEFI 是现代固件接口,支持 GPT 分区表和更大的硬盘容量。
  • 引导加载程序
    • GRUB:Linux 常用的引导加载程序。
    • Windows Boot Manager:Windows 的引导加载程序。
  • initrd 和 initramfs
    • 用于在内核启动初期提供临时的根文件系统,以便加载必要的驱动和模块。
  • systemd
    • 现代 Linux 系统的初始化系统,取代了传统的 init。

七、发展史

推荐看这个视频,了解,里面有许多讲解

1、手工操作阶段

就是人为进行。没有软件。比如:旧时代的电影,需要人在那里放一卷又一卷的胶片。

2、批处理阶段

2.1、单道批处理

  • 内存上只能放一道作业
  • 一个监督程序进行管理,监督程序可以将外面的作业“调度到内存中,然后”计算机上执行。【操作系统在用户执行的。说明操作系统不是都在内核态

2.2、多道批处理

  • 内存上可以放多个作业
  • 正在执行的作业I/O很慢等原因而暂停时,I/O设备利用率高 ,可以马上调度另一道作业执行
  • 无交互能力,当作业提交给系统后,用户不能再与作业交互,无法修改或者调试。

3、分时操作阶段

  • 将计算机资源以时间片为单位,定时的,为多个作业服务一台主机同时连接多台终端】。
  • 优点:可以即时响应,解决人机交互问题

4、实时操作阶段

  • 紧急作业,不需要时间片排队
  • 系统接收外部信号可及时处理

http://www.kler.cn/a/599384.html

相关文章:

  • Ubuntu给appimage创建图标启动
  • Jira story与测试用例自动化关联脚本
  • [已解决]jupyter notebook报错 500 : Internal Server Error及notebook闪退
  • [深度学习]图像分类项目-食物分类
  • 为AI聊天工具添加一个知识系统 之148 设计重审 之13 聚合AI 之2
  • Python----计算机视觉处理(Opencv:图像边缘检测:非极大值抑制,双阈值筛选)
  • 算法-回溯算法
  • C++ Json-Rpc框架-3项目实现(1)(1.其它函数实现2.消息类型字段定义3.消息Message/通信Muduo抽象具象实现)
  • 深入解析 Vue3 响应式系统:原理、性能优化与应用场景
  • 【例6.6】整数区间(信息学奥赛一本通-1324)
  • 华为OD机试 - 核酸最快检测效率 - 动态规划、背包问题(Java 2024 E卷 200分)
  • ngrep :网络嗅探的利器
  • 使用Python开发自动驾驶技术:车道线检测模型
  • 热门面试题第13天|Leetcode 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 222.完全二叉树的节点个数
  • 《深度剖析:BERT与GPT——自然语言处理架构的璀璨双星》
  • 气象可视化卫星云图的方式:方法与架构详解
  • [动态规划 滑动窗口]
  • 基于linuxC结合epoll + TCP 服务器客户端 + 数据库实现一个注册登录功能
  • 穿越之程序员周树人的狂人日记Part5__硅基驯化录
  • 跨数据库定时数据推送实战