共计 5054 个字符,预计需要花费 13 分钟才能阅读完成。
存储器治理
存储器层次结构
存储档次至多具备三级:最高层为 CPU 寄存器,两头为主存,最底层是辅存。
程序的装入和链接
程序装入形式:
- 相对装入形式:相对装入程序依照装入模块的地址,将程序和数据装入内存。
- 可重定位形式:在采纳可重定位装入程序将装入模块装入内存后,会使装入模块中的所有逻辑地址与理论装入内存的物理地址不同。
- 动静运行时装入形式:装入内存后的所有地址都依然是绝对地址,而将绝对地址转换为相对地址是在程序真正执行的时候。
程序链接形式:
内存治理
内存调配形式
繁多间断调配:将内存分为零碎区、用户区,将零碎区的内存交给操作系统应用,而用户区内存调配给用户应用。
固定分区调配:内存空间被划分为若干个固定大小的区域,每个分区提供给某个过程应用。
动静分区调配:依据过程理论须要,联合数据结构动静分配内存。
- 位图:由位图标记相干分区是否被应用
- 闲暇链表:由双向链表将闲暇区域作为节点相连
相干调配算法
- 首次适应算法:从头部程序查找,分配内存应用。
- 最佳适应算法:闲暇区链表依照容量大小排序,遍历闲暇区链表找到最佳闲暇区,分配内存应用。
- 疾速适应算法:领有多个闲暇区链表,每个闲暇区链表存储一种容量的闲暇区,疾速找到适合的内存调配应用。
内存回收过程
- 回收区和一块闲暇区相邻,且回收区在闲暇区下边:将回收区蕴含进闲暇区
- 回收区和一块闲暇区相邻,且闲暇区在回收区下边:将回收区和闲暇区合并,新的闲暇区采纳回收区的地址
- 回收区在两块闲暇区两头:将三个区域合并,新的闲暇区应用顶部的闲暇区地址
- 独自的回收区:转为闲暇区插入闲暇区链表
内存存储管理
页式存储管理 :将过程逻辑空间等分为若干个页面,物理内存空间分为若干个物理块,以页面为单位将过程装入物理块。 由页表记录过程逻辑空间与物理空间的映射
- 毛病:因为页面大小的起因,会导致碎片多,繁多的页式存储也会导致页表占用内存空间大。
- 长处:合乎计算机的存储管理要求
- 解决方案:采纳多级页表,避免一次页表的页表项过大
段式存储管理 :将过程逻辑空间划分为若干段(非等分), 由段表记录逻辑空间到物理空间的映射。
- 长处:适宜用户需要,满足程序的共享
段页式存储管理:联合了进步内存利用率的分页治理、满足用户需要的分段,将过程先分为段,再分为页。
页面置换算法
当产生缺页异样的时候,须要相干的页面置换算法。
最优页面置换算法:将不再须要或者很久当前才须要的页面置换进来,这是一种现实的置换算法。
先进先出页面置换算法:由操作系统保护一个所有在以后内存中的页面的链表,缺页时移除头部的页,并且把新的页增加到表尾。
最近起码应用页面置换算法:在缺页中断时,置换未应用工夫最长的页面。
虚拟地址空间
将物理内存地址裸露给过程的毛病:
- 用户程序能够寻址内存中的字节,容易毁坏操作系统
- 多个用户程序容易发生冲突,并发艰难
虚拟地址空间:创立了一种形象内存供程序应用。地址空间是过程能够用来寻址内存的地址集。每个过程都有它本人的地址空间,独立于其余过程的地址空间。
在没有虚拟内存的计算机上,零碎间接将虚拟地址送到内存中线上,读写操作都应用同样地址的物理内存。在应用虚拟地址空间技术时,虚拟地址不会间接发送到内存总线上 。相同,会应用 MMU 内存治理单元
把虚构地址映射为物理内存地址。
基址寄存器和变址寄存器 :采纳了虚拟地址空间后,要理论定位到程序的物理内存地址,采纳 动静重定位办法,应用 CPU 中的基址寄存器、变址寄存器 来对地址空间转换为物理内存地址。
- 基址寄存器:存储数据内存的起始地位
- 变址寄存器:存储应用程序的长度。
虚拟地址空间由固定大小的单元组成,这种固定大小的单元称为 页 (pages)
。而绝对的,物理内存中也有固定大小的物理单元,称为 页框(page frames)
。
映射关系由页表进行治理,如果 MMU 留神到该页面没有被映射,于是 CPU 会 陷入 (trap)
到操作系统中。这个陷入称为 缺页中断 (page fault)
或者是 缺页谬误
。操作系统会抉择一个很少应用的页并把它的内容写入磁盘。
针对虚拟地址到物理地址映射速度优化次要有:TLB(转换检测缓冲区)位于 MMU 外面。
TLB
TLB 是一个内存治理单元用于改良虚拟地址到物理地址转换速度的缓存。
TLB 是位于内存中的 页表的 cache,如果没有 TLB,则每次取数据都须要两次拜访内存, 即查页表取得物理地址和取数据.
虚拟内存
替换技术 :针对于内存不足以程序运行的状况,有两种形式,第一种是 替换 ,将过程放入内存中执行后,再把它放回磁盘。故闲暇过程会寄存在磁盘中。第二种是 虚拟内存。
虚拟存储器,是指具备申请调入性能和置换性能,能从逻辑上对内存容量加以裁减的一种存储器零碎。
具备屡次性、对换性和虚拟性三大次要特色。
- 屡次性:屡次性是指一个作业被分成屡次调入内存运行
- 对换性:对换性是指容许在作业的运行过程中进行换进、换出
- 虚拟性:虚拟性是指可能从逻辑上裁减内存容量
虚拟内存次要由虚拟存储器实现,具体内存治理也大体一样,分为:请求分页、申请分段、申请段页式,
相干置换算法:
- 先进先出算法(FIFO)
- 最不常常应用算法(LFU)
- 最近起码应用算法(LRU)
文件系统
文件系统存储在 磁盘
中。大部分的磁盘可能划分出一到多个分区,叫做 磁盘分区
。每个分区都有独立的文件系统,每块分区的文件系统能够不同。磁盘的 0 号分区称为 主疏导记录 (MBR)
,用来 疏导 (boot)
计算机。在 MBR 的结尾是 分区表(partition table)
。
当计算机开始引 boot 时,BIOS 读入并执行 MBR。
疏导块
MBR 做的第一件事就是 确定流动分区
, 读入疏导块(boot block)
并执行。疏导块中的程序将加载分区中的操作系统。为了一致性,每个分区都会从疏导块开始,即便疏导块不蕴含操作系统。疏导块占据文件系统的前 4096 个字节,从磁盘上的字节偏移量 0 开始。疏导块可用于启动操作系统。
超级块
超级块 的大小为 4096 字节,从磁盘上的字节偏移 4096 开始。超级块蕴含文件系统的所有要害参数
- 文件系统的大小
- 文件系统中的数据块数
- 批示文件系统状态的标记
- 调配组大小
在计算机启动或者文件系统首次应用时,超级块会被读入内存。
闲暇空间块
用位图或者链表治理闲暇块。
inode
索引节点。它是一个数组的构造,每个文件有一个 inode,inode 十分重要,它阐明了文件的方方面面。
- 模式 / 权限(爱护)
- 所有者 ID
- 组 ID
- 文件大小
- 文件的硬链接数
- 上次访问工夫
- 最初批改工夫
- inode 上次批改工夫
文件分为两局部,索引节点和块。一旦创立后,每种类型的块数是固定的。
文件的实现
间断调配:依照间断数据块进行调配。
- 长处:实现简略、高性能
- 毛病:碎片问题
链表调配:依照链表形式调配数据块,节点的是磁盘指针
- 长处:充分利用数据块
- 毛病:不反对随机拜访,IO 代价大
inode:给每个文件赋予一个称为 inode(索引节点)
的数据结构,每个文件都与一个 inode
进行关联,inode 由整数进行标识。只有在文件关上时,其 inode 才会在内存中。
* 文件的字节数
* 文件拥有者的 User ID
* 文件的 Group ID
* 文件的读、写、执行权限
* 文件的工夫戳,共有三个:ctime 指 inode 上一次变动的工夫,mtime 指文件内容上一次变动的工夫,atime 指文件上一次关上的工夫。* 链接数,即有多少文件名指向这个 inode
* 文件数据 block 的地位
目录的实现
目录项提供了查找文件磁盘块所须要的信息。目录零碎的次要性能就是 将文件的 ASCII 码的名称映射到定位数据所需的信息上。
对于采纳 inode 的零碎,每个目录项,由两局部组成:所蕴含文件的文件名,以及该文件名对应的 inode 号码。
共享文件
硬链接:多个文件名指向同一个 inode 号码。【inode 链接数会发生变化】
ln 源文件 指标文件
软链接:文件 A 和文件 B 的 inode 号码尽管不一样,然而文件 A 的内容是文件 B 的门路。
ln -s 源文文件或目录 指标文件或目录
磁盘调度算法:
- 先来先服务:磁盘臂依照 FIFO 准则挪动
- 最短门路优先:磁盘臂依照最短门路优先准则挪动
- 电梯算法:磁盘臂向一端挪动后回来
晋升性能
- 高速缓存:块高速缓存、缓冲区高速缓存
- 块提前读:提前预读下一个块【针对程序读取的文件】
- 缩小磁盘臂静止:把有可能程序拜访的块放在一起,当然最好是在同一个柱面上,从而缩小磁盘臂的挪动次数
IO
I/O 分为两种:物理 I /O 和 逻辑 I /O(Logical I/O)
。
物理 I/O 通常是从磁盘等存储设备理论获取数据。逻辑 I/O 是对存储器(块,缓冲区)获取数据。
大部分 物理 IO(physical I/O)
是异步的。CPU 传输实现后会转而做其余事件,等到中断产生后,CPU 才会回到传输这件事件上来。
比拟条件 | 同步传输 | 异步传输 |
---|---|---|
概念 | 块头序列开始 | 它别离在字符后面和前面应用开始位和进行位。 |
传输方式 | 以块或帧的模式发送数据 | 发送字节或者字符 |
同步形式 | 同步时钟 | 无 |
传输速率 | 同步传输比拟快 | 异步传输比较慢 |
工夫距离 | 同步传输通常是恒定工夫 | 异步传输工夫随机 |
开销 | 同步开销比拟低廉 | 异步传输开销比拟小 |
是否存在间隙 | 不存在 | 存在 |
实现 | 硬件和软件 | 只有硬件 |
示例 | 聊天室,视频会议,电话对话等。 | 函件,电子邮件,论坛 |
缓冲
通常状况下,从一个设施收回的数据不会间接达到最初的设施。其间会通过一系列的校验、查看、缓冲等操作能力达到。长处:先达到缓冲区,从而打消缓冲区填满速率和缓冲区过载。
共享和独占
有些 I/O 设施可能被许多用户独特应用,然而某些设施必须具备独占性,即只容许单个用户应用实现后能力让其余用户应用。
此时采纳 **SPOOLing 技术(假脱机技术)** 将物理设施虚构为多个逻辑设备,在队列中调用设施,从而实现共享。
一共有三种管制 I/O 设施的办法
- 应用程序控制 I/O
- 应用中断驱动 I/O
- 应用 DMA 驱动 I/O
应用程序控制 I/O
应用程序控制 I/O 又被称为 可编程 I /O
,它是指由 CPU 在驱动程序软件管制下启动的数据传输,来拜访设施上的寄存器或者其余存储器。CPU 会收回命令,而后期待 I/O 操作的实现。因为 CPU 的速度比 I/O 模块的速度快很多,因而可编程 I/O 的问题在于,CPU 必须期待很长时间能力等到处理结果。CPU 在期待时会采纳 轮询 (polling)
或者 忙等(busy waiting)
的形式,后果,整个零碎的性能被重大拉低。
- CPU 申请 I/O 操作
- I/O 模块执行响应
- I/O 模块设置状态位
- CPU 会定期检查状态位
- I/O 不会间接告诉 CPU 操作实现
- I/O 也不会中断 CPU
- CPU 可能会期待或在随后的过程中返回
应用中断驱动 I/O
在 CPU 期待 I/O 设施的同时,可能做其余事件,等到 I/O 设施实现后,它就会产生一个中断,这个中断会进行以后过程并保留以后的状态。
- CPU 进行读取操作
- I/O 设施从外围设备获取数据,同时 CPU 执行其余操作
- I/O 设施中断告诉 CPU
- CPU 申请数据
- I/O 模块传输数据
应用 DMA 的 I/O
DMA 即间接内存拜访,它意味着 CPU 授予 I/O 模块权限在不波及 CPU 的状况下读取或写入内存。即 IO 过程不须要 CPU 的参加。因为 DMA 设施能够间接在内存之间传输数据,而不是应用 CPU 作为中介,因而能够缓解总线上的拥塞。DMA 通过容许 CPU 执行工作,同时 DMA 零碎通过零碎和内存总线传输数据来进步零碎并发性。
中断处理程序
中断处理程序步骤:
- 保留所有没有被中断硬件保留的寄存器
- 为中断服务程序设置上下文环境,可能包含设置
TLB
、MMU
和页表 - 为中断服务程序设置栈
- 对中断控制器作出响应,如果不存在集中的中断控制器,则持续响应中断
- 把寄存器从保留它的中央拷贝到过程表中
- 运行中断服务程序,它会从收回中断的设施控制器的寄存器中提取信息
- 操作系统会抉择一个适合的过程来运行。如果中断造成了一些优先级更高的过程变为就绪态,则抉择运行这些优先级高的过程
- 为过程设置 MMU 上下文,可能也会须要 TLB,依据理论状况决定
- 加载过程的寄存器,包含 PSW 寄存器
- 开始运行新的过程
设施驱动程序
操作系统通常会将驱动程序归为 字符设施
和 块设施
提供 I/O 设施到设施控制器转换的过程的代码称为 设施驱动程序(Device driver)
设施驱动程序承受到读写申请后,会查看以后设施是否在应用,如果设施在应用,申请被排入队列中,期待后续的解决。如果此时设施是闲暇的,驱动程序会查看硬件以理解申请是否可能被解决。在传输开始前,会启动设施。期待设施就绪实现,再进行理论的管制。管制设施就是对设施收回指令。
设施控制器的次要主责是 管制一个或多个 I/O 设施,以实现 I/O 设施和计算机之间的数据交换。
设施控制器接收从 CPU 发送过去的指令,继而达到管制硬件的目标。
理解更多常识干货,🙋♂️关注公众号:学编程的文若