操作系统——基础认识——内存管理
操作系统——基础认识每天一个计算机知识操作系统基础一、定义站在用户视角操作系统是一个为用户提供便捷、高效使用计算机环境的软件集合。但它的真正使命是高效地管理硬件资源并为上层软件提供统一且便捷的服务接口。它的四个核心设计目标1、方便性****隐藏底层硬件细节用户不必直接操控磁盘磁头或外设寄存器。2、有效性****既要提升CPU、内存等资源的利用率又要通过多道程序设计等技术提高系统吞吐量。3、可扩充性****能够方便地增添新功能、支持新硬件这要求系统架构具有良好的模块化与可修改性。4、开放性****遵循国际标准支持不同厂商的硬件与软件协同工作如POSIX标准确保了UNIX系操作系统的互通。二、功能从资源管理的角度看操作系统就是各类硬件资源的管理者主要分为五大功能1、处理机管理决定哪个程序可以使用CPU何时使用这对应着进程调度。2、存储器管理负责内存的分配与回收、地址转换、内存保护以及实现虚拟存储器让程序拥有比物理内存大得多的地址空间。3、设备管理对所有的I/O设备统一控制处理中断、提供缓冲、实现设备的分配与虚拟化如SPOOLing技术让独占打印机变为多用户共享。4、文件管理把外部存储器上的数据组织为文件提供按名存取、权限控制、空间分配等功能。5、用户接口提供用户与系统交互的途径包括命令接口命令行、程序接口系统调用和图形用户接口GUI。三、特征这四个特征互为因果共同定义了操作系统的运行方式。并发并发是操作系统最根本的特征。它指两个或多个事件在同一时间间隔内发生。宏观上“同时进行”微观上交替执行。注意区分并发与并行并行是两个事件在同一时刻严格同时执行需要多核硬件支持而并发是单核条件下通过快速轮转实现的多任务假象。操作系统正是为了让多道程序并发执行而引入的也因此引发了进程同步、互斥、死锁等一系列核心问题。共享共享指系统中的资源可供多个并发执行的进程共同使用。分为两种互斥共享一段时间内只允许一个进程访问如打印机、某些共享数据。同时共享宏观上允许多个进程同时访问但微观上可能仍交替进行如磁盘可以多个进程的请求交替读写。并发与共享互为条件没有并发共享失去意义没有共享并发无法实现有效的资源共享。虚拟虚拟是将一个物理实体映射为若干个逻辑上的对应物使用户感觉到独占使用。这是通过复用技术实现的时分复用如CPU分时调度让每个进程感觉独占CPU虚拟存储器将磁盘空间当内存用让程序觉得拥有超大连续内存。空分复用如将内存划分成多个逻辑独立的分区每个进程都觉得自己独占了整个内存区域。虚拟技术极大地提升了资源利用率和用户体验是操作系统魔法般的抽象能力。异步异步也称不确定性。由于进程的并发执行它们会以不可预知的速度推进随时可能被打断或挂起。所以进程的每次执行顺序和完成时间都是不确定的。操作系统必须确保任何时刻都能正确响应任意时刻到来的中断并保证程序在多次执行下的最终结果一致。这一特性使得设计时必须考虑同步与互斥机制确保结果的确定性。四、核心运行机制如果说并发是操作系统的表象那么中断就是支撑并发的物理基石而系统调用则是程序通往内核的唯一大门。中断现代CPU只有在发生中断或异常时才会从用户态强制切回内核态从而为操作系统执行的机会。没有中断操作系统就无法重新获得CPU控制权多道程序并发也就无从谈起。中断分为以下几类1、外中断硬中断来自CPU外部如I/O设备完成通知、时钟中断。时钟中断尤其重要它为操作系统提供了定期夺回CPU的能力是实现时间片轮转调度的基础。2、内中断异常/陷入来自CPU内部指令执行时发生的意外如除以零、非法指令、访存越界、缺页等。此外程序故意触发的软件中断陷入指令就是系统调用的进入点。中断处理流程系统调用操作系统通过内核提供一组精确定义的“应用程序编程接口”即系统调用。例如创建进程fork、读写文件read/write、申请内存brk等。应用程序绝对不能直接执行特权指令必须通过系统调用委托内核代为执行。典型执行过程以Linux为例系统调用的存在既保证了内核的安全又为程序提供了功能强大的服务是用户程序与操作系统沟通的桥梁。五、操作系统体系结构根据内核功能的组织方式主要分为两大流派大内核宏内核将所有基本功能进程调度、内存管理、文件系统、设备驱动都集成在一个内核进程中共享内核空间。优点是各模块通信开销小性能高缺点是结构庞大一个模块的错误可能导致整个系统崩溃。Linux、Unix是典型代表。微内核只将最核心的功能如中断处理、进程通信、基本调度放入内核其他如文件系统、设备驱动都作为用户进程运行通过内核提供的消息传递机制通信。优点是结构清晰、可靠性高、易于扩展缺点是频繁的消息传递会带来较大的运行开销性能相对较低。鸿蒙系统内核、Mach曾为Mac OS X所用是代表。许多现代操作系统还融合了分层、可加载模块等思想实现兼顾性能与灵活性的混合内核但万变不离其宗。操作系统——内存管理每天一个计算机知识点内存管理操作系统内存管理是计算机系统的核心功能之一主要负责对计算机内存资源进行分配、回收、保护及优化以确保多道程序高效、安全地运行。其根本目标是在有限的物理内存中为多个进程提供逻辑上独立且充足的地址空间同时最大化内存利用率并减少访问延迟。一、内存地址内存地址有两种分别是逻辑地址和物理地址。逻辑地址相对地址/虚拟地址程序在编译、链接后形成的地址空间从0开始连续编址是程序视角的地址。物理地址绝对地址实际内存单元的硬件地址从内存芯片的0号存储单元开始。程序只有在运行时才分配到实际的物理内存因此需要地址重定位即把逻辑地址转换为物理地址也就是常说的地址映射。地址重定位的方式有两种分别是静态重****定位和动态重定位。静态重定位在程序装入内存时由软件装入程序一次性将所有逻辑地址修改为物理地址。这种方式要求程序装入后地址固定不能移动灵活性差。动态重定位在程序执行过程中每次访存前由硬件地址变换机构把逻辑地址加上一个重定位寄存器基址寄存器的值形成物理地址。基址寄存器存放程序在内存中的起始物理地址。这样程序装入后仍可在内存中移动是实现虚存的基础。二、内存分配早期的内存管理采用连续分配方式即为一个进程分配连续的内存空间。这种方式简单但容易产生外部碎片导致内存利用率低下。现代操作系统普遍采用非连续分配方式主要包括分页存储管理和分段存储管理以及两者的结合段页式存储管理。分页存储管理的基本思想是将逻辑地址空间分成固定大小的页物理内存分成同样大小的页框帧。页面大小通常为4KB。分配时以页框为单位进程的页面可以装入任何空闲页框不要求连续。页表是系统为每个进程建立一张页表记录页号到页框号的映射。逻辑地址高位为页号低位为页内偏移。地址变换时用页号查页表得到页框号再拼接偏移量形成物理地址。硬件提供****页表寄存器存放页表起始物理地址和长度。每次访存先查页表再做实际内存访问因此至少两次访存一次取页表项一次读写数据。这个速度问题由快表TLB解决。TLB是高速缓存存放最近使用的页表项命中则只需一次访存。多级页表当逻辑地址空间很大时页表本身可能极大。采用两级或多级页表将页表再分页只把用到的部分调入内存节省页表占用空间。例如32位地址两级页表页目录10位页表索引10位页内偏移12位。反置页表整个系统维护一张按物理页框号索引的表记录每个页框被哪个进程的哪个页面占用。查找时需遍历可结合哈希加速可减少页表总内存占用但地址变换稍复杂。分段存储管理的产生是因为分页缺乏逻辑意义一个程序通常由主程序、函数库、数据段、堆栈等逻辑单元组成。分段就是按这些逻辑单元将程序划分成不同段每段从0编址有独立名称和长度。段表是每个进程一张记录段号到段基址和段长度的映射。逻辑地址由段号和段内偏移组成。段号查段表获得段起始物理地址加上段内偏移。段表也有寄存器指示位置。若偏移超界产生越界中断。段页式存储是先分段再分页每个段拥有自己的页表。逻辑地址由段号、段内页号、页内偏移组成。地址变换需三次访存段表→页表→数据同样靠TLB加速。它兼有段的逻辑优势与分页的物理管理优势。三、虚拟内存如果程序必须全部装入内存才能运行可运行的程序大小就被物理内存牢牢限制。虚拟存储器突破了这个限制它基于局部性原理时间局部性和空间局部性允许进程只装入部分页面或段即可运行其余部分保留在磁盘用到时再动态载入。当进程访问不在内存中的页面时触发“缺页中断”操作系统再从磁盘调入所需页面 ‌‌。请求分页系统是最常用的虚拟存储器实现方式在基本分页基础上增加了页置换功能。页表项扩展是除了页框号还需状态位P标识页面是否已装入内存、访问字段A记录访问情况用于置换算法、修改位M指示页面是否被修改决定换出时是否需写回磁盘、外存地址页面在磁盘上的位置。缺页中断是当程序访问的页面不在内存P0时硬件触发缺页中断。处理流程缺页中断与一般中断的关键区别它可以在指令执行中间产生且处理后必须返回重新执行该指令因为缺页导致指令未完成。页面置换算法核心必会计算缺页率当需要调入页面而无空闲页框时必须选择某一页淘汰。目标降低缺页率。最佳置换算法OPT淘汰未来最长时间不再被访问的页面。需要预知未来无法实现仅用作评价其他算法的理论标杆。先进先出FIFO淘汰最早调入的页。实现简单但可能淘汰常用页。注意Belady异常给进程分配的物理块增多缺页次数反而可能增加FIFO特有。最近最久未使用LRU淘汰最近最久没有访问的页面。性能接近OPT需要硬件记录访问次序如栈或移位寄存器开销大常用近似实现。时钟算法Clock又称NRU给每页关联一个访问位A页面被访问时硬件置A1。置换时循环扫描页面遇到A1则清0并跳过直到找到A0的页面淘汰。这是LRU的近似性能较好实现开销小实际系统常用。改进型时钟算法同时考虑访问位A和修改位M。优先淘汰(A0,M0)的页其次(0,1)然后(1,0)最后(1,1)。减少写回磁盘的开销。工作集模式是进程在某一时间间隔Δ内需要访问的页面集合。W(t, Δ)。如果分配给进程的物理块数小于其工作集进程将频繁缺页大部分时间都在等待页面调入。多道度太高分配给每个进程的物理块不足以容纳其工作集时系统频繁出现缺页中断大部分CPU时间都花在页面换入换出上吞吐量急剧下降。就出现了抖动预防抖动的方法采用工作集策略动态调整物理块分配。控制多道度监测CPU利用率和缺页率必要时挂起部分进程通过中级调度。采用“LS”准则使缺页平均时间L等于页面换出时间S。四、内存保护与共享保护防止进程非法访问其他进程或操作系统的内存。分页系统中页表项中添加保护位读/写/执行地址变换时硬件检查。分段系统中段表拥有段长和权限控制越界或越权即中断。共享多个进程的页表项映射到相同的物理页框实现代码或数据共享。分段因逻辑段独立共享更方便分页则需让共享页出现在各进程页表中的相同页框号。

相关新闻

知识库向量化流水线:增量更新的挑战比全量重建更大

知识库向量化流水线:增量更新的挑战比全量重建更大

知识库向量化流水线:增量更新的挑战比全量重建更大基础设施不需要漂亮话。全量重建是一个 batch job,写好就能跑;增量更新是长在系统里的持续服务,每一步都可能掉链子。一、全量重建为什么"简单" 知识库向量化的全量重建…

2026/7/18 23:23:01阅读更多 →
情感识别实践(二):数据标注、数据清洗与数据增强,这些细节决定了模型上限

情感识别实践(二):数据标注、数据清洗与数据增强,这些细节决定了模型上限

上一篇博客,我详细分享了自建情感数据集的必要性,以及数据采集阶段踩过的实战坑。很多小伙伴看完都有个误区:数据采集完,直接跑代码训练模型就完事了?其实这是模型训练最大的认知偏差!做过完整情感识别项目…

2026/7/18 23:23:01阅读更多 →
RAG召回质量差?99%的问题出在这5个核心环节!小白程序员必看,收藏避坑指南

RAG召回质量差?99%的问题出在这5个核心环节!小白程序员必看,收藏避坑指南

你的 RAG 系统召回质量差,99% 的问题不在向量数据库,不在 Embedding 模型,就在文档进 index 之前那条管线里。这篇文章把 RAG 文档处理流水线的 5 个核心环节全拆开,每一步的典型坑 解法 选型建议,全都在这里。我见过…

2026/7/18 23:21:01阅读更多 →
日记本横线纸张效果:serif 字体 + 行高 + 背景色

日记本横线纸张效果:serif 字体 + 行高 + 背景色

前言 在“海风日记“的日记详情页中,正文区域使用了纸张感的设计:象牙色背景、serif 衬线字体、36vp 行高,模拟了传统日记本的横线纸张效果。 本文将从源码出发,深入讲解纸张效果的实现,以及字体选择、行高控制和背景…

2026/7/19 1:13:17阅读更多 →
UE引擎FUObjectArray内存逆向解析与工业软件上云实践

UE引擎FUObjectArray内存逆向解析与工业软件上云实践

1. 项目概述:当UE逆向遇上工业软件上云最近在折腾一个基于Unreal Engine(UE)的工业仿真软件逆向项目,核心目标是想搞清楚它内部对象管理的“心脏”——FUObjectArray的内存结构。这玩意儿是UE引擎里所有UObject(游戏对…

2026/7/19 1:13:17阅读更多 →
你的企业正在 AI 搜索里“隐形”:GEO 时代,不做这步就输了

你的企业正在 AI 搜索里“隐形”:GEO 时代,不做这步就输了

AI搜索浪潮下,企业像海中小岛需要被“灯塔”标记才能被巨轮发现 你有没有发现,现在大家遇到问题,第一反应不再是打开百度,而是打开豆包、DeepSeek 问一句“这个牌子靠谱吗”“哪家做这个好”?用户获取信息的入口&#…

2026/7/19 1:13:17阅读更多 →
LangGraph+MCP构建概率化企业智能体:从确定性规则到可信推理

LangGraph+MCP构建概率化企业智能体:从确定性规则到可信推理

1. 项目概述:当企业智能不再依赖“确定性脚本”,而是学会像人一样权衡与试错你有没有遇到过这样的场景:销售团队每天要从几百条客户线索里手动筛选高意向客户,规则是“近30天访问过价格页下载过白皮书所在行业为制造业”&#xff…

2026/7/19 1:13:17阅读更多 →
意识量化建模:从神经动力学到动态整合度的工程实践

意识量化建模:从神经动力学到动态整合度的工程实践

1. 这不是哲学思辨,而是一场严肃的建模工程“Let’s Quantify Consciousness — Rethinking it Mathematically”——这个标题一出现,我立刻放下手头三个在跑的神经数据 pipeline,把咖啡杯推到一边。它不是又一篇用“涌现”“整合信息”当万能…

2026/7/19 1:13:17阅读更多 →
小数据革命:小企业低成本高效数据实践指南

小数据革命:小企业低成本高效数据实践指南

1. 小数据革命:小企业真正用得上、养得起、见效快的数据实践“小数据革命”这个词,最近两年在咨询公司PPT里出现频率很高,但翻来覆去讲的都是“如何用AI分析千万级用户行为”,或者“搭建湖仓一体架构打通全链路”。我听了三场闭门…

2026/7/19 1:11:17阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/18 22:49:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/18 14:49:24阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/18 18:49:35阅读更多 →