【操作系统】第三章 内存管理(一)

news2026/3/28 7:09:22
第三章 内存管理3.1 内存管理概念3.1.1 内存管理的基本原理和要求内存管理的主要功能内存空间的分配与回收。[连续分配管理方式](#3.1.2 连续分配管理方式)和非连续分配管理方式分页、分段地址转换实现逻辑地址到物理地址的转换内存空间的扩充采用虚拟存储技术从逻辑上扩充内存内存共享。允许多个进程访问内存的同一部分存储保护。保证各个进程在各自的存储空间内运行互不干扰逻辑地址和物理地址操作系统通过内存管理部件MMU将进程使用的逻辑地址转换成物理地址程序的链接与装入编译。由编译程序将用户源代码编译成若干目标模块链接。由链接程序将编译后形成的一组目标模块以及它们所需的库函数链接在一起形成一个完整的装入模块装入。由装入程序将装入模块装入内存运行三种装入方法绝对装入。若知道程序将放到内存的哪个位置则编译程序将产生绝对地址的目标代码。只适用于单道程序环境可重定位装入。也称静态重定位。装入模块的起始地址通常是0程序中使用的指令和数据的地址都是相对于始值而言的逻辑地址。可根据内存当前情况将装入模块装入内存适当位置。在装入时对目标程序中的相对地址的修改过程称为重定位。地址转换通常时在进程装入时一次完成的当一个作业装入内存时必须给它分配要求的全部内存空间作业一旦进入内存整个运行期间不能在内存中移动动态运行时装入。也称动态重定位。装入程序将装入模块装入内存后不会立即将装入模块中的相对地址转换为绝对地址而是在程序运行时才进行。这种方式需要一个重定位寄存器存放装入模块的起始地址作业不能在内存中移动优点可将程序分配到不连续的存储区在程序运行前只需要装入部分代码即可投入运行三种链接方法静态链接在程序运行前先将各目标模块及它们所需的库函数链接成一个完整的装入模块以后不再拆开需要修改相对地址编译后的所有目标模块都是从0开始的相对地址当链接成一个装入模块时要修改相对地址需要变换外部符号将每个模块中所用的外部调用符号也都变换为相对地址装入时动态链接将目标模块在装入内存时采用边装入边链接的方式便于修改和更新便于实现对目标模块的共享运行时动态链接在程序执行中需要某目标模块时才对它进行连接能加快程序的装入过程节省内存空间进程的内存映像代码段程序的二进制代码是只读的数据段即程序运行时加工处理的对象包括全局变量和静态变量进程控制块存放在系统区堆用来存放动态分配的变量。通过调用malloc函数动态地向高地址分配空间栈用来实现函数调用。从用户空间的最大地址往低地址方向增长内存保护内存保护可采取两种方法在CPU中设置一对上、下限寄存器存放用户进程在主存中的下限和上限地址每当CPU要访问一个地址时分别和两个寄存器的值相比判断有无越界采用重定位寄存器基址寄存器和界地址寄存器限长寄存器进行越界检查。重定位寄存器中存放的是进程的起始物理地址界地址寄存器中存放的是进程的最大逻辑地址内存管理部件将逻辑地址和界地址寄存器进行比较若未发生越界则加上重定位寄存器的值后映射成物理地址再送交内存单元3.1.2 连续分配管理方式1.单一连续分配内存被分为系统区和用户区系统区仅供操作系统使用通常在低地址部分用户区内存中仅有一道用户程序即用户程序独占整个用户区优点简单无外部碎片不需要进行内存保护因为内存中只有一道程序缺点只能用于单用户、单任务的操作系统有内部碎片内存利用率低2.固定分区分配将用户内存空间划分为若干固定大小的分区每个分区只装入一道作业分区大小相等。缺乏灵活性分区大小不等为了便于分配和回收建立一张分区使用表通常按分区大小排队各表项包括对应分区的始址、大小及状态这种方式存在两个问题程序太大而放不进任何一个分区当程序小于固定分区大小时也要占用一个完整的内存分区造成空间浪费存在内部碎片无外部碎片但不能实现多进程共享一个主存区内存利用率低3.动态分区分配也称可变分区分配指进程装入内存时根据进程的实际需要动态的为之分配内存并使分区的大小正好适合进程的需要系统中分区的大小和数量是可变的缺点随着时间的推移内存中会出现越来越多的小内存块外部碎片内存利用率随之下降外部碎片可通过紧凑技术克服即操作系统不时地对进程进行移动和整理需要动态重定位寄存器的支持内存回收方法设置一张空闲分区链表按始址排序回收内存时根据回收分区的始址从空闲分区链中找到相应的插入点此时可能出现四种情况回收区与插入点的前一空闲分区相邻此时将这两个分区合并并修改前一分区表项的大小为两者之和回收区与插入点的后一空闲分区相邻此时将这两个分区合并并修改后一分区表项的始址和大小回收区同时与插入点的前、后两个分区相邻此时将这三个分区合并修改前一分区表项的大小为三者之和回收区没有相邻的空闲分区此时应该为回收区新建一个表项填写始址和大小并插入空闲分区链​ 将作业装入主存时要按照一定的分配算法从空闲分区链表中选出一个分区以分配给该作业。按分区检索方式可以分为顺序分配法和索引分配法基于顺序搜索的分配算法顺序分配算法是指依次搜索空闲分区链上的空闲分区以寻找一个大小满足要求的分区。首次适应算法First Fit。空闲分区按地址递增的次序排列。每次分配内存时顺序查找到第一个能满足大小的空闲分区分配给作业。算法保留了内存高地址部分的大空闲分区有利于后续大作业的装入。但它会使内存低地址部分出现许多小碎片而每次分配查找时都要经过这些分区因此增加了开销邻近适应算法Next Fit。也称循环首次适应算法。分配内存时从上次查找结束的位置开始继续查找它让内存低、高地址部分的空闲分区以同等概率被分配划分为小分区导致内存高地址部分没有大空间可用一般比FF更差最佳适应算法Best Fit。空闲分区按容量递增的次序排列。每次分配时 顺序查找到第一个能满足大小的空闲分区即最小的空闲分区分配给作业。每次分配会留下越来越多很小的难以利用的内存块产生最多的外部碎片最坏适应算法Worst Fit。空闲分区按容量递减的次序的排列。每次分配时顺序找到第一个能满足要求的空闲分区即最大的空闲分区从中分割一部分空间给作业最不容易产生碎片但会导致没有大空间可用基于索引搜索的分配算法根据其大小对空闲分区分类对于每类大小相同空闲分区单独设立一个空闲分区链并设置一张索引表来管理这些空闲分区链。当为进程分配空间时在索引表中查找所需空间大小对应的表项并从中得到对应的空闲分区链的头指针从而获得一个空闲分区快速适应算法空闲分区的分类根据进程常用的空间大小进行划分。分配过程分为两步根据进程的长度在索引表中找到能容纳它的最小空闲分区链表从链表中取下第一块进行分配优点查找效率高不会产生内存碎片缺点回收分区时需要有效的合并分区算法比较复杂系统开销大伙伴系统规定所有的分区大小均为2的k次幂。当需要为进程分配大小为n的分区时2 i − 1 n ≤ 2 i 2^{i-1}n\le 2^i2i−1n≤2i在大小为2 i 2^i2i的空闲分区链中查找。若找到则将该空闲分区分配给进程否则表示大小为2i的空闲分区已耗尽需在大小为2 i 1 2^{i1}2i1的空闲分区链中进行查找。若存在大小为2i1的空闲分区则将其等分为两个分区这两个分区称为一对伙伴。其中一个用于分配另一个加入2i的空闲分区链。若不存在则继续查找直至找到为止。回收时需要将相邻的空闲伙伴分区合并为更大的分区哈希算法根据空闲分区链表的分布规律建立哈希函数构建一张以空闲分区大小为关键字的哈希表每个表项记录一个对应空闲分区链的头指针空闲分区大小-空闲分区链表的头指针分配时根据所需分区大小通过哈希函数计算得到哈希表中的位置从中得到相应的空闲分区链表3.1.3 基本分页存储管理为了尽量避免碎片的产生引入了分页的思想将内存空间分为若干固定大小的分区称为页框、页帧或物理块。进程的逻辑地址空间也分为与块大小相等的若干区域称为页或页面。操作系统以页框为单位为各个进程分配内存空间。分页管理不产生外部碎片1.分页存储的基本概念页面和页面大小进程的逻辑地址空间中的每一个页面有一个编号称为页号从0开始内存空间中的每个页框也有一个编号称为页框号从0开始。进程在执行时需要申请内存空间即要为每个页面分配内存中的可用页框这就产生了页号和页框号的一一对应页面大小应是2的整数次幂页面太大会时页内碎片增多降低内存的利用率页面太小会时进程的页面数过多页表过长占用大量内存增加硬件地址转换的开销降低页面换入/换出的效率页面大小内存块大小地址结构地址结构包含两部分前一部分为页号P后一部分为页内偏移量W地址长度为32位其中0~~~~~11位为页内地址即每页大小位212B12~13位为页号即最多允许220页页表为了便于找到进程的每个页面在内存中存放的位置系统为每个进程建立一张页面映射表简称页表进程的每个页面对应一个页表项每个页表项页号→内存块号由页号和块号组成记录了页面在内存中对应的物理块号。通过查找页表即可找到每页在内存中的物理块号实现从页号到物理块号的映射顺序存储的页表页表项隐含着页号页表项中存放的是内存块号需要乘以内存块大小得到地址每个进程拥有一个页表且驻留在内存中2. 基本地址变换机构地址变换机构的任务是将逻辑地址转换为内存中的物理地址。地址变换是借助于页表实现的在系统中设置一个页表寄存器PTR存放页表在内存的始址F和页表长度M进程未执行时页表的始址和页表长度存放在本进程的PCB中当程序被调度时才将其调入页表寄存器设页面大小L逻辑地址A到物理地址E的变换过程如下假设都是十进制数根据逻辑地址计算出页号PA/L、页内偏移量WA%L判断页号是否越界若页号P≥页表长度M则产生越界中断否则继续执行在页表中查询页号对应的页表项确定页面存放的物理块号。页号P对应的页表项地址页表始址F页号P×页表项长度取出该页表项内容b即为物理块号计算物理地址EbLW用物理地址E去放存。注意物理地址页面在内存中的始址页内偏移量页面在内存中的始址块号×块大小页面大小分页管理方式存在的问题每次访存操作都需要进行从逻辑地址到物理地址的转换地址转换过程必须足够快否则访存速度会降低每个进程引入页表用于存储映射机制页表不能太大否则内存利用率会降低3. 具有快表的地址变换机构若页表全部存放在内存中则存取一个数据或一条指令至少需要访问两次内存速度慢了一半访问页表确定所存取的数据或指令的物理地址根据地址存取数据或指令设置一个具有并行查找能力的高速缓冲存储器——快表TLB也称相联存储器用来存放当前访问的若干页表项以加速地址变换的过程。与此对应主存中的页表常被称为慢表具有快表的分页机制中地址的变换过程如下CPU给出逻辑地址后由硬件进行地址转换将页号与快表中的所有页号进行比较若找到匹配的页号说明要访问的页表项在快表中有副本则直接从中取出该页对应的块号再与页内偏移量拼接形成物理地址。这样存取数据仅一次访存即可若未找到匹配的页号则需要访问内存中的页表读出页表项后就能得到该页的物理块号再与页内偏移量拼接形成物理地址最后用该物理地址去访存。若快表未命中则需要两次访存找到页表项后应同时将其存入快表以便后面可能的再次访问。若快表已满则须按照特定算法淘汰一个旧页表项快表的有效性基于局部性原理4. 两级页表有时存储页表需要占用连续的存储空间过大为解决这个问题可使用两种方法对于页表所需的内存空间采用离散分配的方法用一张索引表来记录各个页表的存放位置只将当前需要的部分页表调入内存其余的页表项仍然驻留磁盘需要时再调入为离散分配的页表再建立一张页表称为外层页表或页目录在系统中增设一个外层页表寄存器也称页目录基址寄存器用于存放页目录始址。将逻辑地址中的页目录号作为页目录的索引从中找到对应页表的始址再用二级页号作为页表始址从中找到对应的页表项将页表项中的物理块号和页内偏移拼接成物理地址再用该物理地址访问内存单元。共进行了三次访存计算页表级数页号n位2n个页一个页表有m项则需要n/m级页表3.1.4 基本分段存储管理分段分段系统将用户进程的逻辑地址空间“按照逻辑关系”划分为大小不等的段如主程序段、子程序段、栈段等逻辑地址结构由段号S与段内偏移量W两部分组成分段方式对低级语言程序员和编译器来说是可见的段表每个进程都有一张逻辑空间与内存空间映射的段表进程的每个段对应一个段表项段表项记录了该段在内存中的始址和段的长度段表项是连续存放的各个段表项的长度相同因此段号可以是隐含的地址变换机构在系统中设置一个段表寄存器用于存放段表始址F和段表长度M地址变换过程如下从逻辑地址A中取出前几位为段号S后几位为段内偏移量W判断段号是否越界若段号S≥段表长度M则产生越界中断否则继续执行在段表中查询段号对应的段表项段号S对应的段表项地址段表始址F段号S×段表项长度。取出段表项中该段的段长C若W≥C则产生越界中断否则继续执行取出段表项中该段的始址b计算物理地址EbW用物理地址E去访存4.分页和分段的对比页是信息的物理单位分页的主要目的是提高内存利用率分页完全是系统的行为。段是信息的逻辑单位页的大小固定且由系统决定段的长度不固定分页管理的地址空间是一维的。段式管理不能通过一个整数便确定对应的物理地址因为段长是不固定的不能通过整除得到段号不能通过求余得到段内偏移需要显式的给出段号和段内偏移因此分段管理的地址空间是二维的5.段的共享和保护为实现段共享多个进程共享同一段代码或数据在系统中设置一张共享段表所有共享的段都在共享段表中占一个表项。表项中记录了共享段的段号、段长、内存始址、状态位、外存始址和共享进程计数count等信息共享进程计数count记录有多少进程正在共享该段仅当所有共享该段的进程都不再需要它时此时count0才回收该段所占的内存区对于一个共享段在不同的进程中可以具有不同的段号每个进程用自己进程的段号去访问该共享段分段管理的保护方法主要有两种一种是存取控制保护另一种是地址越界保护地址越界保护将段表寄存器中的段表长度与逻辑地址中的段号比较若段号大于段表长度则产生越界中断再将段表项中的段长和逻辑地址中的段内偏移进行比较若段内偏移大于段长也产生越界中断6.引入段式存储可以满足的用户要求方便编程、共享和保护、动态链接和增长。没有方便操作3.1.5 段页式存储管理进程的地址空间先被分成若干逻辑段然后将各段分成若干大小固定的页进程的逻辑地址分为三部分段号、页号、页内偏移量为了实现地址变换系统为每个进程建立一张段表每个段对应一个段表项每个段表项至少包括段号隐含、页表长度、页表始址系统中还设有一个段表寄存器指出进程的段表始址和段表长度。段表寄存器和页表寄存器的作用在段表和页表中寻址、判断是否越界每个段有一张页表每个页表至少包括页号隐含、块号进行地址变换时首先通过段表找到页表始址、然后通过页表找到物理块号最后形成物理地址3.1.6 总结地址变换机构地址转换过程完全由硬件实现静态重定位在程序执行之前通常是加载到内存时由专门的重定位加载器一次性完成程序中所有逻辑地址到物理地址的转换。转换完成后地址在程序整个运行期间不再改变。动态重定位在程序执行过程中在硬件MMU的支持下每次访问内存时实时将逻辑地址转换为物理地址。程序的装载地址和运行地址可以不同。整个系统中只有一个重定位寄存器特性静态重定位动态重定位发生时机程序加载入内存时一次性完成。程序每条指令执行时由硬件实时完成。执行主体操作系统中的重定位加载器软件。内存管理单元MMU硬件如基址寄存器BR。关键机制加载器根据程序放入内存的起始物理地址修改程序指令和数据中的地址编码。CPU将逻辑地址与基址寄存器BR中的值相加得到物理地址。 公式物理地址 逻辑地址 BR地址变化程序被加载后其内部的地址已经是最终的物理地址固定不变。程序代码中的逻辑地址始终不变物理地址通过硬件计算动态生成。进程移动性无法移动。一旦加载若想将整个进程移动到内存另一区域必须重新进行静态重定位成本极高。可以移动。只需由操作系统更新基址寄存器BR的值进程即可在内存中“整体搬迁”。能否使用紧凑技术不能能内存保护难以实现。程序直接操作物理地址无法检查其访问是否越界。容易实现。可增设界限寄存器LR硬件在地址转换前检查逻辑地址是否越界实现存储保护。硬件依赖无需特殊硬件支持。必须依赖MMU等硬件支持。优点实现简单早期系统使用运行时无地址转换开销。灵活高效支持内存紧缩、进程动态扩展、共享代码库是现代操作系统的基础。缺点不灵活内存利用率低无法实现虚拟内存不支持共享。需要硬件成本每次访存都有一次加法开销现代硬件已将其流水线化开销极小。内部碎片分区内部的空间浪费内存管理方式对比管理方式核心原理地址空间维度碎片问题地址变换访存次数单一连续分配内存分为系统区和用户区一次只装入一个用户程序。一维线性无外部碎片但有内部碎片用户程序小于用户区时。静态重定位或动态重定位1固定分区分配将用户区预先划分为若干个固定大小的分区每个分区装一道作业。一维线性内部碎片严重作业小于分区时。每个分区需建立分区使用表记录各个分区的相关信息。使用静态分区分配或动态分区分配1动态分区分配根据作业实际大小动态创建分区分区大小和数量可变。一维线性外部碎片严重需通过紧凑技术解决。动态重定位通过基址寄存器实现1页式存储将进程和物理内存均等分为固定大小的“页”和“页框”进程页面可离散存放于任何物理页框。一维线性无外部碎片但有内部碎片通过页表进行映射。逻辑地址 页号P 页内偏移W2一级页表N1N级页表分段存储按程序的逻辑模块段划分如主程序段、子程序段、数据段等每段连续存放但段间可离散。二维逻辑有外部碎片段尺寸变化大通过段表进行映射。逻辑地址 段号S 段内偏移W2段页式存储先分段段内再分页。结合两者优点对外呈现分段结构对内实现分页管理。二维逻辑无外部碎片有内部碎片需段表 页表两级映射。逻辑地址 段号S 页号P 页内偏移W3一级页表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2452804.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…