11 操作系统第三章 内存管理 内存的基本知识 内存管理 内存空间扩充 连续分配管理方式

文章目录

      • 1 内存概念
          • 1.1 内存作用
          • 1.2 逻辑地址VS物理地址
          • 1.3 装入的三种方式
            • 1.3.1 绝对装入
            • 1.3.2 可重定位装入
            • 1.3.3 动态重定位装入
          • 1.4 链接的三种方式
            • 1.4.1 静态链接
            • 1.4.2 装入时动态链接
            • 1.4.3 运行时动态链接
          • 1.5 内存的基础知识小结
      • 2 内存管理
          • 2.1 内存管理的任务
          • 2.2 内存保护的两种方法
          • 2.3 内存管理小结
      • 3 内存空间扩充
          • 3.1 内存空间扩充之覆盖技术
          • 3.2 内存空间扩充之交换技术
          • 3.3 覆盖与交换技术小结
      • 4 内存空间分配
          • 4.1 单一连续分配
          • 4.2 固定分区分配
          • 4.3 动态分区分配
          • 4.4 连续分配管理小结
          • 4.5 动态分区分配算法
            • 4.5.1 首次适应算法
            • 4.5.2 最佳适应算法
            • 4.5.3 最坏(大)适应算法
            • 4.5.4 邻近适应算法
            • 4.5.5 动态分区分配算法小结

1 内存概念

1.1 内存作用

内存可存放数据。程序执行前需要先放到内存中才能被CPU处理一一缓和CPU与硬盘之间的速度矛盾

思考:在多道程序环境下,系统中会有多个程序并发执行,也就是说会有多个程序的数据需要同时放到内存中。那么,如何区分各个程序的数据是放在什么地方的呢?
方案:给内存的存储单元编地址

内存地址相当于酒店旅馆中的小房间,酒店管理者为了便于管理每个房间,采取给每个房间编号
内存中也有一个一个的“小房间”,每个小房间就是一 个“存储单元”

在这里插入图片描述
如果计算机“按字节编址”, 则每个存储单元大小为1字节,即1B,即8个二进制位
如果字长为16位的计算机 “按字编址”,则每个存储单元大小为1个字;每个字的大小为16个二进制位
存储单元大小由计算机按字编址还是按字节编址来确定

一台手机/电脑有4GB内存,是指该内存中可以存放4X2 30个字节。

如果是按字节编址的 话,也就是有4X2 30=232个“小房间”
这么多“小房间”,需要232个地址才能一一标识,所以地址需要用32个二进制位来表示(0~232-1)
210=1K (千)
220=1M (兆,百万)
230=1G (十亿,千兆)
可以通过内存的大小,让我们确定地址长度应该是多少(即要多少个二进制位才能表示相应数目的存储单元)

1.2 逻辑地址VS物理地址

实际生活中的例子:

宿舍四个人一起出去旅行,四个人的学号尾号分别是0、1、2、3。
住酒店时酒店给你们安排了4个房号相连的房间。四个人按学号递增次序入住房间。比如0、1、2、3号同学分别入住了5、6、7、8号房间。
四个人的编号0、1、2、3其实是一个“相对位置”,而各自入住的房间号是一个“绝对位置”。

只要知道0号同学住的是房号为N的房间,那么M号同学的房号一定是N+M

指令中的地址也可以采用这种思想。编译时产生的指令只关心“相对地址”,实际放入内存中时再想办法根据起始位置得到“绝对地址”。

相对地址又称逻辑地址,绝对地址又称物理地址。

从写程序到程序运行:
在这里插入图片描述

  1. 编译:由编译程序将用户源代码编译成若干个目标模块(编译就是把高级语言翻译为机器语言)
  2. 链接:由链接程序将编译后形成的一组目标模块,以及所需库函数链接在一起,形成一个完整的装入模块
  3. 装入(装载):由装入程序将装入模块装入内存运行

程序经过编译、链接后生成的指令中指明的是逻辑地址(相对地址),即:相对于进程的起始地址而言的地址

如何将指令中的逻辑地址转换为物理地址?

策略:三种装入方式

  1. 绝对装入
  2. 可重定位装入(静态重定位)
  3. 动态运行时装入(动态重定位)
1.3 装入的三种方式
1.3.1 绝对装入

绝对装入:在编译时,如果知道程序将放到内存中的哪个位置,编译程序将产生绝对地址的目标代码。 装入程序按照装入模块中的地址,将程序和数据装入内存。

编译、链接后得到的装入模块的指令直接就使用了绝对地址。

绝对装入只适用于单道程序环境。 程序中使用的绝对地址,可在编译或汇编时给出,也可由程序 员直接赋予。通常情况下都是编译或汇编时再转换为绝对地址。

1.3.2 可重定位装入

静态重定位:又称可重定位装入。编译、链接后的装入模块的地址都是从0开始的,指令中使用的地址、数据存放的地址都是相对于起始地址而言的逻辑地址。可根据内存的当前情况,将装入模块装入到内存的适当位置。装入时对地址进行“重定位”,将逻辑地址变换为物理地址(地址变换是在装入时一次完成的)。

静态重定位的特点是在一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。 作业一旦进入内存后,在运行期间就不能再移动,也不能再申请内存空间。

1.3.3 动态重定位装入

动态重定位:又称动态运行时装入。编译、链接后的装入模块的地址都是从0开始的。装入程序把装 入模块装入内存后,并不会立即把逻辑地址转换为物理地址,而是把地址转换推迟到程序真正要执行 时才进行。因此装入内存后所有的地址依然是逻辑地址。这种方式需要一个重定位寄存器的支持。
在这里插入图片描述

1.4 链接的三种方式
1.4.1 静态链接
  1. 静态链接:在程序运行之前, 先将各目标模块及它们所需的库函数连接成一个完整的可执行文件(装入模块), 之后不再拆开。
    在这里插入图片描述
1.4.2 装入时动态链接
  1. 装入时动态链接:将各目标模块装入内存时,边装入边链接的链接方式。
    在这里插入图片描述
1.4.3 运行时动态链接
  1. 运行时动态链接:在程序执行中需要该目标模块时,才对它进行链接。其优点是便于修改和更新,便于实现对目标模块的共享。

在这里插入图片描述

1.5 内存的基础知识小结

在这里插入图片描述

2 内存管理

2.1 内存管理的任务

操作系统作为系统资源的管理者,当然也需要对内存进行管理,要管些什么呢?

1.操作系统负责内存空间的分配与回收
在这里插入图片描述

  1. 操作系统需要提供某种技术从逻辑上对内存空间进行扩充
    游戏GTA的大小超过60GB,按理来说这个游戏程序运行之前需要把60GB数据全部放入内存。然而,实际我的电脑内存才12GB,但为什么这个游戏可以顺利运行呢?
    ——虚拟技术(操作系统的虚拟性)
  1. 操作系统需要提供地址转换功能,负责程序的逻辑地址与物理地址的转换
    为了使编程更方便,程序员写程序时应该只需要关注指令、数据的逻辑地址。而逻辑地址到物理地址的转换(这个过程称为地址重定位)应该由操作系统负责,这样就保证了程序员写程序时不需要关注物理内存的实际情况。
    三种装入方式实现逻辑地址与物理地址的转换:在这里插入图片描述
  1. 操作系统需要提供内存保护功能。保证各进程在各自存储空间内运行,互不干扰
    使得各个进程只能访问自己的内存空间
    在这里插入图片描述
2.2 内存保护的两种方法

方法一:在CPU中设置一对上、下限寄存器,存放进程的上、下限地址。进程的指令要访问某个地址时,CPU检查是否越界。
在这里插入图片描述

方法二:采用重定位寄存器(又称基址寄存器)和界地址寄存器(又称限长寄存器)进行越界检查。
重定位寄存器中存放的是进程的起始物理地址。界地址寄存器中存放的是进程的最大逻辑地址。
在这里插入图片描述

2.3 内存管理小结

在这里插入图片描述

3 内存空间扩充

在这里插入图片描述

3.1 内存空间扩充之覆盖技术

引入覆盖技术,用来解决“程序大小超过物理内存总和”的问题

覆盖技术的思想:

将程序分为多个段(多个模块)。 常用的段常驻内存,不常用的段在需要时调入内存。
内存中分为一个“固定区”和若干个“覆盖区”。
需要常驻内存的段放在“固定区”中,调入后就不再调出(除非运行结束)
不常用的段放在“覆盖区”,需要用到时调入内存, 用不到时调出内存

在这里插入图片描述

由图可见,未使用覆盖技术时,程序执行需要使用8K+8K+10K+12K+4K+10K=52K的内存空间
采用覆盖技术后,需要8K+10K+12K=30K的内存空间

必须由程序员声明覆盖结构,操作系统完成自动覆盖。
缺点:对用户不透明,增加了用户编程负担。 覆盖技术只用于早期的操作系统中,现在已成为历史。

3.2 内存空间扩充之交换技术

交换(对换)技术的设计思想:内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些已具备运行条件的进程换入内存(进程在内存与磁盘间动态调度)
暂时换出外存等待的进程状态为挂起状态(挂起态,suspend
挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态
.在这里插入图片描述
中级调度(内存调度),就是要决定将哪个处于挂起状态的进程重新调入内存。

交换技术面临的问题:

  1. 应该在外存(磁盘)的什么位置保存被换出的进程?
  2. 什么时候应该交换?
  3. 应该换出哪些进程?
  1. 具有对换功能的操作系统中,通常把磁盘空间分为文件区和对换区两部分。
    在这里插入图片描述
    (1)文件区主要用于存放文件,主要追求存储空间的利用率,因此对文件区空间的管理采用离散分配方式;
    (2)对换区空间只占磁盘空间的小部分,被换出的进程数据就存放在对换区。由于对换的速度直接影响到系统的整体速度,因此对换区空间的管理主要追求换入换出速度,因此通常对换区采用连续分配方式
    (3)总之,对换区的I/O速度比文件区的更快。
  1. 交换通常在许多进程运行且内存吃紧时进行,而系统负荷降低就暂停。
    例如:在发现许多进程运行时经常发生缺页,就说明内存紧张,此时可以换出一些进程; 如果缺页率明显下降,就可以暂停换出。
  1. 可优先换出阻塞进程;可换出优先级低的进程;为了防止优先级低的进程在被调 入内存后很快又被换出,有的系统还会考虑进程在内存的驻留时间…

注意:虽然交换技术会将内存中某些进程暂时换出外存,但进程的PCB会常驻内存,不会被换出外存

3.3 覆盖与交换技术小结

在这里插入图片描述

4 内存空间分配

内存空间分配可分为连续分配管理方式和非连续分配管理方式

连续分配:指为用户进程分配的必须是一个连续的内存空间

4.1 单一连续分配

在单一连续分配方式中,内存被分为系统区用户区
系统区通常位于内存的低地址部分,用于存放操作系统相关数据;用户区用于存放用户进程相关数据。
单一连续分配 内存中只能有一道用户程序,用户程序独占整个用户区空间。
在这里插入图片描述

优点:实现简单;无外部碎片;可以采用覆盖技术扩充 内存;不一定需要采取内存保护(eg:早期的PC操作系统MS-DOS)。
缺点:只能用于单用户、单任务的操作系统中;有内部碎片;存储器利用率极低。

4.2 固定分区分配

20世纪60年代出现了支持多道程序的系统,为了能在内存中装入多道程序,且这些程序之间又不会相互干扰,于是将整个用户空间划分为若干个固定大小的分区,在 每个分区中只装入一道作业,这样就形成了最早的、最 简单的一种可运行多道程序的内存管理方式。

固定分区分配可分为分区大小相等、分区.大小不等两种类型
在这里插入图片描述

分区大小相等:缺乏灵活性,但是很适合用于用一台计 算机控制多个相同对象的场合(比如:钢铁厂有n个相 同的炼钢炉,就可把内存分为n个大小相等的区域存放 n个炼钢炉控制程序)
分区大小不等:增加了灵活性,可以满足不同大小的进 程需求。根据常在系统中运行的作业大小情况进行划分 (比如:划分多个小分区、适量中等分区、少量大分区)

操作系统需要建立一个数据结构——分区说明表,来实现各个分区的分配与回收。每个表项对应一个分区,通常按分区大小排列。每个表项包括对应分区的 大小、起始地址、状态(是否已分配)。
在这里插入图片描述

分区号大小(MB)起始地址(M)状态
128未分配
2210未分配
3412已分配
····························
  1. 用数据结构 的数组(或 链表)即可 表示这个表
    当某用户程序要装入内存时,由操作系统内核程序根据用户程序大小检索该表, 从中找到一个能满足大小的、未分配的分区,将之分配给该程序,然后修改状 态为“已分配”。

优点:实现简单,无外部碎片。
缺点:a.当用户程序太大时,可能所有的分区都不能满足需求,此时不得不采用覆盖技术来解决,但这又会降低性能; b.会产生内部碎片,内存利用率低。

4.3 动态分区分配

动态分区分配又称为可变分区分配。这种分配方式不会预先划分内存分区,而是在进程装入内存时, 根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。因此系统分区的大小和数目是可变的。

动态分区分配核心问题:
1.系统要用什么样的数据结构记录内存的使用情况?
2.当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?
3.如何进行分区的分配与回收操作?

  1. 系统要用什么样的数据结构记录内存的使用情况?
    两种常用的数据结构:空闲分区表和空闲分区链
    每一时刻系统分配如下:
    在这里插入图片描述
    采用空闲分区表:
    空闲分区表:每 个空闲分区对应 一个表项。表项 中包含分区号、 分区大小、分区 起始地址等信息
分区号大小(MB)起始地址(M)状态
1208空闲
21032空闲
3460空闲

空闲分区链:
空闲分区链:每个分区的起始部分和末尾部分分别设置前向指 针和后向指针。起始部分处还可记录分区大小等信息
在这里插入图片描述


  1. 当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?

在这里插入图片描述
现有进程5(4MB)调入内存,应该用最大的分区进行分配?还是用最小的分区进行分配?又或是用地址最低的部分进行分配?
把一个新作业装入内存时,须按照一定的动态分区分配算法,从空闲分区表(或空闲分区链)中选出一个分区分配给该作业。


  1. 如何进行分区的分配与回收操作? 假设系统采用的数据结构是“空闲分区表”… 如 何 分 配 ?

情况一:回收区的后面有一个相邻的空闲分区
在这里插入图片描述

此时分区表是

分区号大小(MB)起始地址(M)状态
11032空闲
2460空闲

假设此时进程4运行结束,将进程4占用的4M内存空间回收,而后面有一块10M的相邻空闲区
在这里插入图片描述
此时空闲分区表:

分区号大小(MB)起始地址(M)状态
11428空闲
2460空闲

两个相邻的空闲分区合并为一个

情况二:回收区的前面有一个相邻的空闲分区
在这里插入图片描述

此时空闲分区表:

分区号大小(MB)起始地址(M)状态
1208空闲
21032空闲

假设此时进程3运行结束,将进程3占用的18M内存空间回收,而前面有一块10M的相邻空闲区
在这里插入图片描述

此时空闲分区表:

分区号大小(MB)起始地址(M)状态
1208空闲
22832空闲

两个相邻的空闲分区合并为一个

情况三:回收区的前、后各有一个相邻的空闲分区

在这里插入图片描述
此时空闲分区表:

分区号大小(MB)起始地址(M)状态
1208空闲
21032空闲
3460空闲

假设此时进程4运行结束,将进程4占用的4M内存空间回收,而后面有一块10M的相邻空闲区,前面有一块20M的内存空间
在这里插入图片描述

分区号大小(MB)起始地址(M)状态
1348空闲
2460空闲

三个相邻的空闲分区合并为一个

情况四:回收区的前、后都没有相邻的空闲分区

在这里插入图片描述
此时空闲分区表:

分区号大小(MB)起始地址(M)状态
1460空闲

假设此时进程2运行结束,将进程2占用的14M内存空间回收,而后面有一块4M的不相邻空闲区
在这里插入图片描述
此时空闲分区表:

分区号大小(MB)起始地址(M)状态
11428空闲
2460空闲

注:各表项的顺序不一定按照地址递增顺序排列,具体的排列方式需要依据动态分区分配算法来确定。

动态分区分配又称为可变分区分配。这种分配方式不会预先划分内存分区,而是在进程装入内存时, 根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。因此系统分区的大小和数目是可变的。

动态分区分配没有内部碎片,但是有外部碎片。
内部碎片,分配给某进程的内存区域中,如果有些部分没有用上。 外部碎片,是指内存中的某些空闲分区由于太小而难以利用。

如果内存中空闲空间的总和本来可以满足某进程的要求, 但由于进程需要的是一整块连续的内存空间,因此这些 “碎片”不能满足进程的需求。 可以通过紧凑(拼凑,Compaction)技术来解决外部碎片。

在这里插入图片描述
进程1如何分配内存空间?
紧凑法挪位
在这里插入图片描述
从而就可以将进程1调入内存
在这里插入图片描述

4.4 连续分配管理小结

在这里插入图片描述

4.5 动态分区分配算法

动态分区分配算法解决的问题:
在动态分区分配方式中, 当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?
在这里插入图片描述

4.5.1 首次适应算法

算法思想:每次都从低地址开始查找,找到第一个能满足大小的空闲分区。

如何实现:空闲分区以地址递增的次序排列。每次分配内存时顺序查找空闲分区链(或空闲分区 表),找到大小能满足要求的第一个空闲分区。

4.5.2 最佳适应算法

算法思想:由于动态分区分配是一种连续分配方式,为各进程分配的空间必须是连续的一整片区域。因此为了保证当“大进程”到来时能有连续的大片空间,可以尽可能多地留下大片的空闲区, 即,优先使用更小的空闲区。

如何实现:空闲分区按容量递增次序链接。每次分配内存时顺序查找空闲分区链(或空闲分区 表),找到大小能满足要求的第一个空闲分区。

缺点:每次都选最小的分区进行分配,会留下越来越多的、很小的、难以利用的内存块。因此这种方法会产生很多的外部碎片

4.5.3 最坏(大)适应算法

算法思想:为了解决最佳适应算法的问题——即留下太多难以利用的小碎片,可以在每次分配时优先使用最大的连续空闲区,这样分配后剩余的空闲区就不会太小,更方便使用。

如何实现:空闲分区=按容量递减次序链接。每次分配内存时顺序查找空闲分区链(或空闲分区 表),找到大小能满足要求的第一个空闲分区。

缺点:每次都选最大的分区进行分配,虽然可以让分配后留下的 空闲区更大,更可用,但是这种方式会导致较大的连续空闲区被 迅速用完。如果之后有“大进程”到达,就没有内存分区可用了。

4.5.4 邻近适应算法

算法思想:首次适应算法每次都从链头开始查找的。这可能会导致低地址部分出现很多小的空闲分区,而每次分配查找时,都要经过这些分区,因此也增加了查找的开销。如果每次都从上次查找结束的位置开始检索,就能解决上述问题。

如何实现:空闲分区以地址递增的顺序排列(可排成一个循环链表)。每次分配内存时从上次查找结束的位置开始查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。

首次适应算法每次都要从头查找,每次都需要检索低地址的小分区。 但是这种规则也决定了当低地址部分有更小的分区可以满足需求时, 会更有可能用到低地址部分的小分区,也会更有可能把高地址部分的大分区保留下来(最佳适应算法的优点)

邻近适应算法的规则可能会导致无论低地址、高地址部分的空闲分区都有相同的概率被使用,也就导致了高地址部分的大分区更可能被使用,划分为小分区,最后导致无大分区可用(最大适应算法的缺点)
综合来看,四种算法中,首次适应算法的效果反而更好

4.5.5 动态分区分配算法小结

在这里插入图片描述

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

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

相关文章

Nature长文:打破AI黑盒的“持久战”

来源:大数据文摘2020年2月,随着 COVID-19在全球迅速传播且抗原检测难以获得,一些医生转向人工智能(AI)来尝试诊断病例。一些研究人员采用深度神经网络通过查看X射线和胸部计算机断层扫描(CT)扫描来快速区分患有COVID-19肺炎的人和未患肺炎的人…

12 操作系统第三章 内存管理 非连续分配管理方式 基本分页存储管理 基本分段存储管理 段页式存储管理

文章目录1 基本分页存储管理1.1 什么是分页存储1.2 重要的数据结构——页表1.3 基本地址变换机构1.4 具有快表的地址变换机构1.4.1 什么是快表(TLB)1.4.2 引入快表后,地址的变换过程1.4.3 地址变换过程小结1.5 两级页表1.5.1 单级页表存在的问…

13 操作系统第三章 内存管理 虚拟内存 请求分页管理方式 页面置换算法 页面分配策略

文章目录1 虚拟内存1.1 传统存储管理方式的特征、缺点1.2 局部性原理1.3 虚拟内存主要特征1.4 如何实现虚拟内存技术1.5 虚拟内存的基本概念小结2 请求分页管理方式2.1 页表机制2.2 缺页中断机构2.3 地址变换机构2.4 请求分页管理方式小结3 页面置换算法3.1 最佳置换算法 OPT3.…

视觉意识的主动推理模型

来源:CreateAMind论文介绍:在这里,我们旨在通过推进全球神经元工作区的扩展(预测性全球神经元工作区(PGNW))来克服这些限制,该工作区将 GNW 的基本方面与更近期的(贝叶斯)主动推理方法相结合,以理解大脑功能。具体来说,我们提出了一个基于主动推理的视觉…

14 操作系统第四章 文件管理 文件逻辑结构 文件目录结构

文章目录1 初识文件管理1.1文件属性1.2 文件内部的数据应该怎样组织起来?1.3 文件之间应该怎样组织起来?1.4 操作系统应该向上提供哪些功能?1.5 文件应如何存放在外存?1.6 文件系统总览2 文件逻辑结构2.1 文件分类2.2 顺序文件2.3…

AlphaFold 和 AI 蛋白质折叠革命的下一步是什么

来源:ScienceAI编辑:萝卜皮十多年来,分子生物学家 Martin Beck 团队一直在努力拼凑世界上最难的拼图游戏之一:人类细胞中最大分子机器的详细模型。这种被称为核孔复合体的庞然大物控制着分子进出细胞核的流动,也就是基…

15 操作系统第四章 文件管理 文件的物理结构 文件存储空间管理

文章目录1 文件的物理结构 (文件分配方式)1.1 文件块、磁盘块1.2 文件分配方式——连续分配1.3 文件分配方式——链接分配1.3.1 链接分配——隐式链接1.3.2 链接分配——显式链接1.3.3 链接分配(总结)1.4 文件分配方式——索引分配…

专访微软Greg Yang,构建神经网络的底层语言,探索AI的“万物理论”

来源:智源社区为了进一步解读这一工作背后的意义,智源社区采访了论文一作、微软研究院高级研究员Greg Yang(杨格)。采访中,我们不仅了解了Transfer的背景,以及项目背后更为远大的目标,也了解到了…

16 操作系统第四章 文件管理 文件的基本操作 文件共享 文件保护 文件系统的层次结构

文章目录1 文件的基本操作1.1 创建文件1.2 删除文件1.3 打开文件1.4 关闭文件1.5 读文件1.6 写文件1.7 文件基本操作小结2 文件共享2.1 基于索引结点的共享方式(硬链接)2.2 基于符号链的共享方式(软链接)2.3 文件共享小结3 文件保…

人工智能与量子计算在有前途的新忆阻器中融合

来源:ScienceAI编辑:萝卜皮近年来,计算在两个主要方面取得了进步——机器学习方面的突破,以开发通过经验自动改进的算法,以及对理论上证明比任何超级计算机更强大的量子计算机的研究。现在,科学家们已经创建…

17 操作系统第四章 磁盘管理 磁盘的结构 磁盘调度算法 减少磁盘延迟时间的方法

文章目录1 磁盘的结构1.1 磁盘、磁道、扇区1.2 磁盘如何读取数据1.4 盘面、柱面、磁盘的物理地址1.5 磁盘的分类1.6 磁盘的结构小结2 磁盘调度算法2.1 一次磁盘读/写操作需要的时间2.2 先来先服务算法(FCFS)2.3 最短寻找时间优先(SSTF&#x…

深度学习准备「爆破」著名的欧拉方程

来源:ScienceAI编辑:绿萝250 多年来,数学家一直试图「爆破」物理学中一些最重要的方程:那些描述流体如何流动的方程。如果他们成功了,那么他们将会发现一种情况,在这种情况下,这些方程会被打破—…

18 操作系统第五章 设备管理 IO设备的基本概念和分类 IO控制器 IO控制方式 IO软件层次结构 IO核心子系统 假脱机技术 设备的分配与回收 缓冲区管理

文章目录1 IO设备的基本概念和分类1.1 什么是I/O设备1.2 I/O设备分类2 IO控制器2.1 I/O设备组成2.2 I/O控制器功能2.3 I/O控制器的组成2.4 寄存器编址方式2.5 IO控制器小结3 IO控制方式3.1 程序直接控制方式3.2 中断驱动方式3.3 DMA方式3.3.1 DMA控制器3.3.2 DMA方式3.4 通道控…

Nature发布第一张人类造血干细胞发育的全面路线图

来源:生物通加州大学洛杉矶分校(UCLA)的科学家创建了一份史无前例的路线图,追踪了人类胚胎中造血干细胞发育的每一步,为人们在实验室中生产功能齐全的造血干细胞提供了蓝图。来自胚胎主动脉壁的人类造血干细胞这项研究…

1 计算机组成原理第一章 计算机系统概述 计算机发展历程、层次结构、性能指标

文章目录1 计算机发展历程1.1 软硬件发展1.2 分类以及发展方向2 计算机系统层次结构2.1 计算机系统组成2.1.1 硬件的基本组成2.1.2 软件系统2. 2 CPU及其工作过程2.2.1 运算器2.2.2 控制器2.2.3 计算机的工作过程2.2.4 计算机系统层次结构2.2.5 存储器3 计算机性能指标3.1 容量…

Google 与 GitHub 结盟,为保护软件供应链而战!

出品:CSDN(ID:CSDNnews)整理:章雨铭 责编:屠敏4月7日,据谷歌透露,它一直在跟GitHub合作,创建一种防伪方法,用于签署源代码,解决像影响Solar…

5 计算机组成原理第四章 指令系统

文章目录1 指令格式1.1 指令定义1.2 指令格式1.3 指令格式-地址码1.4 指令格式-操作码1.5 操作码分类1.6 操作类型2 数据存放指令寻址2.1 数据存放方式2.2 指令寻址2.3 操作数类型2.4 数据寻址2.4.1立即寻址2.4.2 直接寻址2.4.3 间接寻址2.4.4 寄存器寻址2.4.5 寄存器间接寻址2…

【Brain】脑智前沿科普|用数学解释大脑学习的过程

来源:脑与心智毕生发展研究中心原文作者:Kate Nussenbaum,Alexandra O. Cohen原文编辑:David Sheinberg小小评阅人:Brown University Pre-College Stem I Program中文翻译版权:脑与心智毕生发展研究中心中文…

6 计算机组成原理第五章 中央处理器 CPU功能和结构 指令执行过程

文章目录1 CPU功能和基本结构1.1 CPU的功能1.2 运算器的基本结构1.3 控制器的基本结构1.4 CPU基本结构1.5 CPU的功能和基本结构小结2 指令周期和数据流2.1 指令执行过程2.2 指令周期流程2.3 指令周期的数据流-取指周期2.4 指令周期的数据流-间址周期2.5 指令周期的数据流-执行周…

7 计算机组成原理第五章 中央处理器 数据通路

文章目录1 数据通路的功能和基本结构单总线1.1 数据通路的功能1.2 数据通路-基本结构单总线2 数据通路-CPU内部单总线方式2.1 三种结构之间数据传送方式2.2 CPU内部单总线方式-例题3 专用通路3.1 专用数据通路方式3.2 专用数据通路方式-例题1 数据通路的功能和基本结构单总线 …