Linux操作系统(二):操作系统结构与内核设计

 在(一)详解CPU中介绍了操作系统所基于的硬件CPU后,本部分学习操作系统的架构。在计算机系统中,操作系统的架构通常包括以下几个主要组件:

  • 内核(Kernel)
    • 进程管理(Process Management)
    • 内存管理(Memory Management)
    • 文件系统管理(File System Management)
    • 设备管理(Device Management)
    • 网络管理(Network Management)

其管理和交互形式如下图:
Linux操作系统(二):操作系统结构与内核设计_第1张图片
在某些情况下,可以将操作系统理解为内核。内核是操作系统的核心组件,它直接管理硬件资源并执行系统的底层任务。严格来说,操作系统不仅包括内核,还包括其他组件,如系统库、用户界面、应用程序、命令行工具等。

目录

  • 1. 操作系统分类
  • 2. 操作系统内核
    • 2.1 Linux内核
    • 2.2 Windows内核

1. 操作系统分类

根据任务响应时间要求的不同可分为

  • 实时操作系统:通常具有非常短的响应时间,可以满足对任务响应时间有严格要求的应用场景,如航空航天、工业控制、医疗设备等。比如VxWorks/RTLinux
  1. 必须在预定的时间范围内完成对事件的响应和处理,即使在高负载时也不能出现延迟。实时操作系统分为硬实时(Hard Real-Time)和软实时(Soft Real-Time)两类。硬实时系统绝对保证任务在规定时间内完成,而软实时系统在大部分情况下能够满足响应时间要求,但在极端情况下可能会发生延迟。
  2. 实时操作系统使用预定的调度算法,如固定优先级调度(Fixed Priority Scheduling)或最早截止时间优先调度(Earliest Deadline First Scheduling),以确保高优先级任务在规定的时间内得到处理。
  • 非实时操作系统:适用于大多数普通应用,如个人计算机、服务器等。比如Linux、Android。
  1. 非实时操作系统对任务的响应时间没有严格的限制,它更关注任务的吞吐量和效率。非实时操作系统允许任务在不同的时间片中完成,任务的响应时间可能会有所波动,但在大多数情况下不会影响系统正常运行。
  2. 非实时操作系统采用通用的调度算法,如轮转调度(Round Robin Scheduling)、优先级调度(Priority Scheduling)等,以平衡任务之间的公平性和系统资源的利用率。

主要区别在于对任务响应时间的要求和任务调度方式的不同。

2. 操作系统内核

基本功能:

  • 管理进程、线程,决定哪个进程、线程使用 CPU,也就是进程调度的能力
  • 管理内存,决定内存的分配和回收,也就是内存管理的能力
  • 管理硬件设备,为进程与硬件设备之间提供通信能力,也就是硬件通信能力

    PS:操作系统能够实现硬件管理,就是因为内核中包含了管理CPU的进程管理组件,管理memory的内存管理组件,管理其他外设存储的文件管理组件,管理其他设备的设备管理组件(设备驱动程序,在内核空间运行)

  • 提供系统调用,如果应用程序要运行更高权限运行的服务,那么就需要有系统调用,它是用户程序与操作系统之间的接口

工作方式:按照程序工作时占用的内存空间地址划分。

  • 内核空间,这个内存空间只有内核程序可以访问;内核空间的代码(感觉指令更准确)可以访问所有内存空间。当程序使内核空间时,程序则在内核态执行。
  • 用户空间,这个内存空间专门给应用程序使用;用户空间的代码只能访问一个局部的内存空间。当程序使用用户空间时,常说该程序在用户态执行。

两种工作方式怎么切换:当应用程序使用系统调用时,会产生一个中断(软中断,因为是应用程序使用系统调用产生的)。然后 CPU 会中断(就是前面那个中断)当前在执行的用户程序,转而跳转到中断处理程序,也就是开始执行内核程序。内核处理完后,主动触发中断,把 CPU 执行权限交回给用户程序,回到用户态继续工作。

2.1 Linux内核

核心理念和技术:

  • MultiTask,多任务:Linux支持多任务,能够在同一时间内运行多个应用程序,通过时间片轮转等调度算法来分配处理器时间。
  • SMP,对称多处理:Linux采用SMP架构,允许多个处理器核心并行地执行任务。每个 CPU 的地位是相等的,多个 CPU 共享同一个内存,每个 CPU 都可以访问完整的内存和硬件资源。这一特点决定了每个程序都可以被分配到任意一个 CPU 上被执行
  • ELF,可执行文件链接格式:Linux 操作系统中可执行文件、共享库、目标文件等的存储格式。定义了文件的结构,包括程序代码、数据、符号表等信息。
    Linux操作系统(二):操作系统结构与内核设计_第2张图片
      代码首先通过「编译器」编译成汇编代码,接着通过「汇编器」变成目标代码,也就是目标文件,最后通过「链接器」把多个目标文件以及调用的各种函数库链接起来,形成一个可执行文件,也就是 ELF 文件。
      执行 ELF 文件的时候,会通过「装载器」把 ELF 文件装载到内存里,CPU 读取内存中的指令和数据,于是程序就被执行起来了。
  • Monolithic Kernel(宏内核):宏内核是一种操作系统内核架构,其中操作系统的大部分功能(如进程调度、内存管理、文件系统、设备驱动等)都实现在内核空间,即Linux 的内核是一个完整的可执行程序,且拥有最高的权限。Linux内核最初是一个宏内核,随着时间的推移,它采用了一些微内核的概念(微内核架构的内核只保留最基本的能力,比如进程调度、内存管理、中断等,把一些应用放到了用户空间,比如驱动程序、文件系统等。这样服务与服务之间是隔离的,单个服务出现故障或者完全攻击,也不会导致整个操作系统挂掉,提高了操作系统的稳定性和可靠性),将一部分功能以模块的形式加载,实现了一种混合内核结构

    一些功能可以在运行时动态加载和卸载,而不需要重新编译内核,比如:
      设备驱动程序:很多设备驱动程序可以作为模块加载,以支持新的硬件。
      文件系统模块:一些不太常用的文件系统可以作为模块加载,以减小内核的大小。
      网络协议栈:某些网络协议栈可以作为模块加载,以根据需要进行调整。

2.2 Windows内核

  Windows 10 使用的内核叫 Windows NT,NT 全称叫 New Technology。Windows 和 Linux 一样,同样支持 MultiTask 和 SMP,但不同的是,Window 的内核设计是混合型内核,内核中有一个 MicroKernel 模块,而其他模块就在这个基础上搭建,整个内核实现是一个完整的程序。

  • Windows 的可执行文件格式叫 PE,称为可移植执行文件,扩展名通常是.exe、.dll、.sys等。

你可能感兴趣的:(Linux,linux,服务器)