操作系统原理

概述

一边管理硬件,一边管理软件。

操作系统(OS)是管理计算机硬件与软件资源的系统软件,它是用户与计算机硬件之间的接口。在您上传的图片中,OS 被描绘为计算机系统中心的关键部分,与各种硬件组件(如 CPU、内存、硬盘等)以及用户之间进行交互。

操作系统的主要功能包括:

  1. 资源管理:它控制和分配处理器、内存、磁盘空间等计算机资源的使用。
  2. 任务调度:操作系统负责调度任务的执行,包括决定哪些程序何时运行,以及它们将运行多久。
  3. 存储管理:它管理数据的存储,确保数据的安全性和可靠性,并提供文件管理功能,如文件的创建、删除和访问。
  4. 设备控制:操作系统管理所有的输入输出设备,如键盘、鼠标、打印机等。
  5. 用户界面:提供与用户交互的界面,可以是命令行界面(CLI)或图形用户界面(GUI)。
  6. 安全性和访问控制:确保系统的安全,防止未授权的访问。

操作系统的例子包括 Windows、macOS、Linux、Android 和 iOS。这些系统提供了运行其他软件(应用程序、服务等)所需的平台,使得用户能夜更容易、更有效地使用计算机和其他设备。

所以说任何编程语言开发的软件都是在操作系统上进行运行

宏内核

宏内核架构

宏内核(Monolithic Kernel)架构中,内核提供了许多服务,包括设备驱动、文件系统管理、网络堆栈等。这些服务都在内核空间运行,因此可以高效地执行,减少了用户空间和内核空间之间的通信需求。

宏内核可以直接访问硬件资源和执行各种系统调用,它的优点是性能好,但缺点是复杂度高,可能影响系统的稳定性和安全性。一个问题可能会影响整个系统,导致系统崩溃。

总的来说,微内核和宏内核是两种不同的操作系统设计哲学。微内核更加模块化,各个部分之间耦合性低,而宏内核则将大部分功能集成在一起,运行效率高,但复杂性和故障风险也更大。

微内核

微内核架构

微内核(Microkernel)架构的主要特点是它只包括操作系统最基本的服务,如最低级的硬件抽象、基本的系统管理和通信机制。其它服务,比如设备驱动、文件系统、网络协议等,运行在用户空间,它们通过与微内核进行通信来提供服务。

在这种架构下,内核的功能被划分为更小、更容易管理的部分,运行在不同的地址空间。这样做的优点是增强了系统的可扩展性、可靠性和安全性,因为故障在用户空间的服务不会直接影响到内核。但这也可能带来性能开销,因为用户空间和内核空间之间的通信需要更多的上下文切换。

用户态和内核态

在 Linux 操作系统中,这些特权级别被用来实现保护环(Ring)模型:

  • Ring 0:运行最高特权级别的代码,通常是操作系统的内核。它可以直接访问所有硬件资源。
  • Ring 3:运行用户空间的代码,例如应用程序。这些代码对硬件资源的访问受到严格限制。

在图中,“内核态”对应于 Ring 0,表示内核运行在最高特权级别,而“用户态”对应于 Ring 3,表示用户程序运行在非特权级别。

特权级别是为了保护系统免受恶意软件和用户错误操作的影响。当用户态的程序需要进行不能在 Ring 3 下执行的操作时(如访问硬件),它必须通过系统调用请求内核代为执行,这时 CPU 会从 Ring 3 切换到 Ring 0(内核态),在完成操作后再切换回 Ring 3。

这种机制是现代操作系统提供安全和稳定环境的基础之一。通过确保只有信任的内核代码可以运行在 Ring 0,操作系统能够防止应用程序直接对系统硬件的未授权访问。

进程 线程 纤程 中断

进程(Process)

一个进程是操作系统分配资源和调度的基本单位。它拥有独立的内存空间和系统资源。在 Java 中,每当你运行一个 Java 应用程序时,操作系统就会创建一个新的进程。进程之间相互隔离,一个进程内的错误通常不会直接影响到其他进程。

线程(Thread)

线程是进程中的执行单元,一个进程可以包含多个线程,它们共享进程的资源和内存空间。Java 提供了强大的线程管理功能,可以通过

java.lang.Thread 类和

java.util.concurrent 包来创建和管理线程。线程是实现并发执行的基础,它们比进程更轻量级,上下文切换的开销也更小。

纤程(Fiber)

纤程,也称为轻量级线程或用户级线程,是一种比线程更加轻量级的执行单元。纤程通常在用户空间管理,不需要操作系统内核介入调度,从而减少了上下文切换的开销。Java 并没有原生支持纤程,但是可以通过第三方库如 Project Loom 来实现。Project Loom 旨在为 Java 虚拟机(JVM)引入轻量级并发工具。

中断(Interrupt)中断是指处理器接收到一个突发事件,需要立即停止当前的活动去处理更高优先级的事件的机制。在操作系统中,中断允许硬件设备通知 CPU 一个事件已经发生,从而使得 CPU 可以处理这个事件,如输入/输出操作的完成。在 Java 中,中断通常是指通过调用线程的

interrupt 方法来请求线程停止当前工作并执行其他操作,但它依赖于线程自身如何响应中断信号。

进程调度

中断

内存管理

内存管理是操作系统中的一个核心功能,它负责分配和管理计算机的主存(RAM)。这个领域从早期的简单方法发展到了今天的复杂技术。让我们从起源开始,一步步探索内存管理的发展历程。

1. 起源与早期方法

早期电脑

  • 无操作系统时代: 早期的计算机没有操作系统,内存管理完全手动进行,程序员需要直接与硬件打交道。

批处理系统

  • 连续内存分配: 早期操作系统使用连续内存分配,意味着程序必须连续地占用内存空间。
  • 固定分区分配: 将内存划分为固定大小的区域,每个区域只能装载一个程序。

2. 分页和分段

分页(Paging)

  • 基本概念: 内存被分割成固定大小的页,程序被分割成同样大小的页,这些页可以不连续地存储在内存中。
  • 虚拟内存: 引入虚拟内存的概念,使得程序可以使用比物理内存更大的地址空间。
  • 页表: 用来追踪每个页在物理内存中的位置。

分段(Segmentation)

  • 基本概念: 内存和程序都被分割成逻辑上的段,如代码段、数据段等,段可以不连续地存储。
  • 段表: 用来记录每个段在物理内存中的位置和大小。

3. 现代方法

分页与分段的结合

  • 分页分段混合模型: 结合分页和分段的优点,提高内存管理的灵活性和效率。

虚拟内存管理

  • 页面置换算法: 如LRU(最近最少使用),用于管理当物理内存不足时哪些页面应该被移出内存。
  • 按需分页: 只有当程序需要时才将页面加载到内存。

多级页表

  • 地址转换: 使用多级页表来减少页表自身所需的内存量。

4. 高级特性

内存分配算法

  • 最佳适配、最差适配等: 不同的算法用于根据需要分配内存块。

垃圾收集

  • 自动内存管理: 如在Java等高级语言中,垃圾收集器自动回收不再使用的内存。

安全与隔离

  • 保护机制: 防止程序互相干扰,确保安全性。

大页(Huge Pages)

大内存页处理: 用于处理大量数据,提高性能。

5. 当代挑战与发展

  • 多核和分布式系统: 内存管理需要在多核和分布式环境中高效工作。
  • 非均匀存储访问(NUMA): 在多处理器系统中,不同处理器访问内存的速度不同,这对内存管理提出了新的挑战。

内存管理是一个不断进化的领域,随着新技术的出现,如固态驱动器(SSD)和非易失性内存(NVM),内存管理的策略和算法也在不断发展。

虚拟内存

虚拟内存是一种内存管理技术,它为用户程序提供了一个“看似”比实际物理内存(RAM)大得多的内存空间。这种技术是通过将物理内存和辅助存储(通常是硬盘或固态硬盘)结合起来实现的。虚拟内存的核心概念和功能包括:

  1. 概念

内存抽象

抽象层: 虚拟内存为每个程序提供了一个连续的、私有的地址空间,这个地址空间通常被称为虚拟地址空间。

内存隔离

  • 隔离性: 每个程序运行在自己的虚拟地址空间中,相互之间不会影响,增强了安全性和稳定性。
  1. 工作原理

内存页

  • 分页: 虚拟内存空间和物理内存空间都被分割成了大小相同的块,称为“页”(在虚拟内存中)和“页框”(在物理内存中)。

页表

  • 映射: 操作系统维护一个页表来记录虚拟页和物理页框之间的映射关系。

页错误(Page Fault)

  • 非常驻内存: 当程序访问的数据不在物理内存中时,会触发一个页错误,操作系统将数据从硬盘加载到物理内存中。
  1. 主要优点

更大的内存空间

  • 扩展内存: 虚拟内存使得程序可以使用远超过物理内存大小的地址空间。

效率与灵活性

  • 按需加载: 只有当程序需要某部分数据时,这部分数据才会被加载到物理内存中。

交换(Swapping)

  • 交换空间: 当物理内存不足时,操作系统可以将一些不常用的数据暂时转移到硬盘上的交换空间,以释放物理内存。
  1. 挑战与管理

页置换算法

  • 管理策略: 操作系统使用诸如最近最少使用(LRU)等算法,决定哪些页应该被保留在内存中,哪些页应该被换出。

性能考虑

  • 速度折衷: 虚拟内存增加了程序的内存访问时间,因为可能涉及硬盘I/O操作。

虚拟内存的引入极大地提高了计算机系统的灵活性和效率,使得大型程序的运行成为可能,并且提高了系统的稳定性和安全性。然而,它也带来了一定的性能开销,特别是当物理内存频繁不足,导致频繁的页面交换时。

ZGC

内核同步的方法

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值