操作系统理论知识快速总览

操作系统整体架构

搬出考研时的思维导图
在这里插入图片描述

操作系统主要分为

  • 批处理系统(老古董,基本不用了)
  • 实时操作系统(嵌入式中使用较多,RTOS)
  • 分时操作系统(PC中使用较多,Linux,Windows)

分时操作系统和实时操作系统的使用场景不同,没有高低贵贱之分。
注意,Linux是分时操作系统,RT-Linux是实时操作系统

分时系统根据实现的方法不同又可以分为:

  • 微内核架构(目前业界没有纯粹的微内核,Harmony号称要做微内核系统)
  • 宏/单内核架构
  • 混合内核架构(目前Linux和Window都是混合内核,并不是单纯的宏内核)
  • 外核架构(只停留在学界,发了几篇论文,压根没有实现)
  • 虚拟机架构:在操作系统之下再设一个“操作系统”,这个架构主要使用在云服务上。

分时操作系统的基本组成部分为:

  • 进程管理
  • 内存管理
  • 文件管理
  • 设备驱动

实时操作系统的基本组成部分为:

  • 任务调度
  • 中断管理
  • 资源管理
  • 时钟和定时器

分时操作系统中也有时钟和定时器,也有中断管理等。在计算机的发展中,老的技术往往并不是被淘汰,而是被集成在底层,就像进程调度和任务调度,进程调度是更高端的任务调度,任务调度的思想以及实现方法并没有被淘汰,而是被集成。

操作系统的工作以及理念

操作系统的三个特性:虚拟化,并发,持久

来自操作系统导论,与考研的可能不太一样。

  • 虚拟化,即将底层的硬件进行抽象,提供给软件以虚拟的硬件。例如进程的概念就是对CPU的虚拟化,让每个软件以为自己独占CPU,主要面临的问题是如何在虚拟化的同时不损失过多的性能。
  • 并发:多个软件“同时”运行,主要面临的问题是如何调度,确保每个软件都能正常运行,涉及到调度算法,共享资源等问题。
  • 持久:保持信息不丢失,主要面临的问题是保存在哪里?跟这些设备如何进行通信。

除此三项之外,操作系统还要确保每个软件和硬件的安全,不会被其他软件破坏,这个功能贯穿在三大特性中的任何地方。
解决以上几项问题的程序,组合到一起构成了操作系统这么一个大程序。
在这里插入图片描述
Linux kernel的组成

Linux内核的构成

进程管理

进程管理的主要内容包括:

  • 进程模型 & 进程创建 & 进程销毁
  • 进程调度算法:Linux中进程分为实时进程,非抢占式进程和正常进程,对于最常用的正常进程,使用的是CFS调度方法,
  • 进程间通信 & 进程间共享数据 & 锁

内存管理

主要内容包括:

  • 虚拟地址机制 & 虚拟地址下的读取 and 修改
  • TTL快表的引入以及相匹配的机制
  • 内存分配算法 & 内存管理算法
  • 内存共享 & 内存保护

文件系统

  • 虚拟设备,spooling技术
  • VFS虚拟文件系统
  • IO调度
    请添加图片描述

除了上面谈到的这三大部分以外,Linux还有网络编程部分,字符设备部分
请添加图片描述

向上向下:

操作系统向上,需要提供系统调用,例如fork(),exec(),open(),write()这些API,并提供相应的ABI二进制接口供编程语言调用。
操作系统向下,需要根据ISA提供的一系列信息来实现自己的功能,例如中断功能,就需要根据ISA的规定,将负责中断的CSRs设置为相应的状态,并在相应的中断程序入口地址写上相应的处理代码。简而言之就是将软件状态机转化为硬件状态机。
在这里插入图片描述

ISA是标准,是软件硬件相互的约定,并不是计算机中实际存在的实体。

上一篇:Jackson 2.x 系列【15】序列化器 JsonSerializer-3. 实现类


下一篇:PHP基础