操作系统
LaVine
这个作者很懒,什么都没留下…
展开
-
1.1_6_系统调用
库函数是高级编程语言提供的接口系统调用是操作系统提供应用程序使用内核程序的接口应用程序可以通过系统调用来请求获得操作系统的内核程序凡是涉及共享资源有关的操作,都需要使用到系统调用,保证系统的稳定性和安全性系统调用的过程应用程序事前将参数放入寄存器当中然后执行陷入指令最后中断处理程序根据参数执行系统调用...原创 2020-11-03 16:56:17 · 70 阅读 · 0 评论 -
1.1_5_中断和异常
用户态 -> 内核态:需要“中断”引起,硬件自动变态,操作系统强行夺取CPU控制权内中断 vs 外中断引发内中断:非法操作 除0用户态执行特权指令应用程序想请求内核服务,主动让出CPU控制权,执行陷入指令引发外中断:与当前执行的指令无关外部设备或者时钟中断判别要素:是否和当前指令有关陷入故障:可修复的问题终止:致命错误,终止应用程序中断机制:根据中断信号类型来决定执行哪一个中断处理程序,属于内核程序...原创 2020-11-03 16:45:47 · 75 阅读 · 0 评论 -
1.1_4_操作系统的运行机制
内核程序 vs 应用程序内核是最核心的部分特权指令 vs 非特权指令内核态 vs 用户态只有在内核态才能执行特权指令,处于内核态说明执行的是内核程序内核态、用户态的切换内核 -> 用户:需要修改PSW的标志位,主动让出CPU使用权用户 -> 内核:由“中断”引发,硬件自动完成,但凡需要操作系统进行介入,或者想使用特权指令,都需要引发中断信号...原创 2020-11-03 16:25:01 · 90 阅读 · 0 评论 -
4.1_4+4.1_5_文件的物理结构
对非空闲磁盘块的管理(存放了数据的磁盘块)通常磁盘块和内存块的大小相等连续分配通常磁盘块和内存块的大小相等。文件的内存块是连续存放的,文件目录中记录存放了文件在物理的起始块号和长度逻辑地址是,逻辑块号和块内地址。实现逻辑地址到物理地址的映射只需要转换逻辑块号到物理块号即可根据文件目录中存放的文件的起始块号加上逻辑块号,就能得到最终的物理地址。要检查逻辑块号和长度是否合法连续分配支持随机访问因为磁盘在物理上是连续的,所以连续分配的读写速度是最快的连续分配的总结优点:顺序存储,因为连续存放原创 2020-08-22 07:03:30 · 129 阅读 · 0 评论 -
4.1_3_文件目录
文件目录 - 文件夹文件控制块目录表表示文件下面的文件有结构文件,记录了物理地址FCB的集合就是文件目录,包含了文件的基本信息文件名和物理地址文件目录单级目录文件:不可以对文件命名重名两级目录结构:不同用户可以重名,但不能对文件分类多级目录结构当前目录 vs 绝对路径树形结构不便于实现共享有向无环图、可以有不同的文件名指向同一个文件,共享同一个目录。共享文件设置共享计数器,共享计数器为0彻底删除索引结点,外存中,磁盘索引结点,内存索引结点...原创 2020-08-21 22:32:28 · 113 阅读 · 0 评论 -
4.1_2_文件的逻辑结构
无结构文件:流式文件有结构文件:每一个数据项有一个关键字(ID)定长记录,可变长记录顺序文件顺序存储或者链式存储串结构,顺序结构(顺序和关键字有关)只有顺序存储的定长文件索引文件索引表本身是定长记录的顺序文件每个记录对应一个表项索引顺序文件分组对应一个索引项多级索引表计算平均查找次数...原创 2020-08-21 10:10:42 · 99 阅读 · 0 评论 -
4.1_1_初识文件管理
文件的属性文件名,同一目录下不允许有重命名文件标识符,标识符是唯一的类型位置,文件存放路径文件的保护信息流式文件,记录式文件向上提供的功能:readdeletecreatewriteopenclose外存也会存放一个个块,块号和块内地址“块”作为分配单元...原创 2020-08-19 10:25:41 · 94 阅读 · 0 评论 -
3.2_4_页面分配策略
驻留集:驻留集一般小于进程的总大小。可以使用的物理块的总和固定分配:驻留集不变可变分配:驻留集大小不变局部置换:只能选自己的物理块置换全局置换:用其他人的物理块页面分配、置换策略固定分配、局部置换:缺少了只在自己的驻留集中调页,缺点是无法预估可变分配、全局置换:当缺页就增加驻留集可变分配、局部置换:当缺页的时候,在自己的驻留集中调页,如果缺页率很高,会动态增加驻留集如果发生全局置换:一旦发生缺页,驻留集一定会增加如果是局部置换,要根据缺页的频率来调整进程驻留集的大小何时调入页面原创 2020-08-18 16:36:43 · 105 阅读 · 0 评论 -
3.2_3_页面置换算法
因为页面置换需要启动I/O磁盘,会有较大的开销,应该追求更少的缺页率最佳置换算法每次淘汰的都是以后永不使用的或者是最长时间不使用的因为未来调用哪一页是不可预知的是理想化的缺页不一定发生页面置换先进先出置换算法belady异常:页面更多反而缺页率更低最近最久未使用LRU需要专门的硬件,性能最好,算法开销大时间置换算法CLOCK最近未用算法简单的CLOCK算法:如果访问过设置为1,则设置为0,如果是0,则淘汰该页面,然后把访问位改成1改进型的时钟置换算原创 2020-08-18 16:16:41 · 106 阅读 · 0 评论 -
3.2_2_请求分页管理方式
请求分页和基本分页的区别当需要的信息不在内存,需要操作系统从外存调入内存当内存吃紧的时候,需要将一些暂时用不到的信息换出到外存请求页表,用于记录在外存中的地址,还有页面相关信息,页面置换的时候用作参考如果页面没有被修改过,换出外存的时候就没有必要重新写回外存内存块号状态外(是否在内存当中)访问字段(上次访问的时间)修改位(页面是否被修改过)外存地址缺页中断机构如果想要访问的界面不在内存中,产生缺页中断,进入阻塞,放入阻塞队列,调页完成后再将其唤原创 2020-08-18 15:08:40 · 448 阅读 · 0 评论 -
3.2_1_虚拟内存的基本概念
传统存储管理的特征、缺点一次性:作业必须一次性全部装入内存才能投入运行当大量的程序在运行,并发度下降驻留性:一旦装入内存,就会一直驻留在内存。eg.玩游戏并不需要加载全部的场景局部性原理时间局部性:一条指令访问过后,过不久很有可能再次访问空间局部性:一旦程序访问了某个存储单元,附近的程序也很有可能再次访问虚拟内存定义:将很快要用的部分装入内存,暂时用不到的放在外存。需要的部分不在内存时,需要由操作系统负责将所需信息从外存调入内存当内存吃紧的时候,将暂时不需要的信息换出到外存如原创 2020-08-18 14:36:22 · 84 阅读 · 0 评论 -
3.1_11_段页式管理方式
分页、分段的优缺点优点缺点分页管理没有外部碎片,会少量的内部碎片分段管理很方便的实现共享和保护会产生一定的外部碎片段页式管理先按照逻辑地址来分段,然后再分页逻辑地址为段号 + 页号 + 页内偏移量段号的位数决定了每个进程最多可以有几个段页号位数决定每个段最多可以有多少页页内偏移量决定了页面大小、内存块大小段表、页表1个进程对应1个段表1个段表项对应一个页表段表项结构是:页表长度+内存块号段页式管理流程先将PCB的信息调入段表寄存器当原创 2020-08-18 07:40:59 · 216 阅读 · 0 评论 -
3.1_10_基本分段存储管理方式
分段类似分页的操作,不过是程序员根据程序自身的逻辑关系,类似函数块来划分,每个段都有一个段名,每段都是从0开始编址操作系统会根据段名翻译成段号每个段在内存中占用连续的空间段号保证了最多可以有多少段段内地址保证了一个段的最大长度是多少段表对应页表,相比于页表多了一个段长因为页长是固定的,段长不固定,但各个段表项是固定的段号是隐含的,不占存储空间逻辑地址转换段表寄存器:段表始址+段表长度将逻辑地址划分成段号和段内地址将段号和段表长度进行对比是否越界(==也是越界)根原创 2020-08-17 23:35:20 · 207 阅读 · 0 评论 -
3.1_9_两级页表
单级页表的几个问题1、因为页表的特性,需要连续存放,当进程需要很多个页面,就需要很大的页表,就需要很大一块连续的区域去存放页表2、根据局部性原理,没必要让页表常驻内存第一个问题因为页表太大,需要连续一大片内存的解决方法是重新建立起对一级页表的页表,页目录表将逻辑地址进程拆分成一级页号和二级页号地址转换的流程根据一级页号在页目录表中的位置,找到二级页表所在的内存块号根据所得的内存块号和二级页号,找到真正的物理块号将最终的物理块号和页内偏移量进行相加,得到最终的物理地址第二个问题在原创 2020-08-17 15:41:55 · 898 阅读 · 0 评论 -
3.1_8_具有快表的地址变换机构
引入快表之后,地址转变的流程根据页号先判断是否越界查询快表,如果命中,直接访问内存,一次访存如果未命中,去内存中的页表找到表项,并复制一份到快表,然后访问内存,一共两次访存如果快表已满,需要一定的置换算法重新写入快表记得区分,是否如果未命中,查询慢表和快表是否同时进行局部性原理时间局部性原理,访问后很可能再次访问空间局部性原理,附近的数据可能会也被访问TLB只有页表项的副本,而普通的Cache可能有其他数据TLB是高速缓存,不是内存...原创 2020-08-17 13:29:59 · 1093 阅读 · 0 评论 -
3.1_7_基本地址变换机构
本章主要概述了再分页存储管理当中,如何实现逻辑地址转换成物理地址的过程系统中有专门的硬件来存放页表的相关信息(页表在内存中的起始地址和页表长度)一开始这些信息是存放在PCB当中的,当进程被调度的时候这些信息就会放在页表寄存器当中一些概念,注意别混淆页表长度 :表示有多少个页表项页表项大小:表示一个页表项占多少个字节(表示在内存中有多少个页表)页面大小:一个内存块占用多大的空间地址转换的流程首先将页号划分出来,对比页表寄存器当中是否越界,如果等于也是越界的如果没有越界,根据页表始址 + 页原创 2020-08-17 11:51:13 · 245 阅读 · 0 评论 -
3.1_6_基本分页存储管理的基本概念
非连续分配:为用户分配的可以是一些分散的内存空间分页存储 页框:在内存中分为一个个大小相等的分区,每一个分区都有一个编号,就是页框号,从0开始页 页:进程在逻辑上划分一块块和页框大小相同的分区,每个页面都有一个编号,就是页号 操作系统以页框为单位,为每个进程分配内存空间,各个页可以不必存放在连续的页框当中 页框不能过大,否则会产生过多内部碎片 页面:进程在逻辑上被划分为与页框大小相等的一个个部分,每个页面都有一个编号进程被分成一个个页面后,因为是离散分配到内存,所以需要建立内存和原创 2020-08-17 11:19:37 · 179 阅读 · 0 评论 -
3.1_5_动态分区分配算法
当有多个空闲分区的时候,如何解决分配问题。采用四种分配策略首次适应算法:从低地址开始查找遍历,找到第一个大小满足的空闲分区,然后进行分配最佳适应算法算法思想:将空闲表重新调整,按递增次序链接,分配的时候遍历找出第一个满足要求的空闲区缺点:每次都找最少的,会留下越来越多外部碎片最坏适应算法:算法思想:按照容量递减的序列,每次分配完成后都需要调整空闲分区链缺点:如果有“大进程”会无法分配邻近适应算法:算法思想:每次都是从上次分配开始的首次邻近适应算法不需要重新排列空闲分区链,原创 2020-08-17 09:10:46 · 312 阅读 · 0 评论 -
3.1_4_连续分配管理方式
本章讲述的是如何对内存进行分配与回收连续分配:分配一片的内存地址非连续分配:分配可以是不在同一片内存单一连续分配内存:系统区和用户区只能有一道用户程序,用户程序独占整个用户区优点:实现简单,没有外部碎片缺点:只适合单用户,但任务特点:可以不设置内存保护,有内部碎片内部碎片:给程序分配的地址,用不完利用率低固定分区分配将整个用户空间划分为若干个固定大小的分区,每个分区只装入一道作业固定分区分配分区大小相等分区大小不等,但固定,可以灵活划分建立分区说明表说明各个分区的原创 2020-08-16 15:42:31 · 103 阅读 · 0 评论 -
3.1_3_覆盖与交换
内存空间的扩充覆盖技术将程序分为多个段一个固定区,若干个覆盖区常驻内存的段放在固定区,调入后不再调出,不常用的段放在覆盖区,需要时调入内存,用不到的时候调出内存覆盖区采用最大的覆盖区覆盖结构需要程序员声明对用户不透明交换技术:当内存吃紧的时候将一些进程调出内存中级调度(内存调度)把某些进程换入换出内存,进程PCB常驻内存就绪挂起,阻塞挂起交换技术的几个问题调出的内存放在磁盘中的哪里?将磁盘划分为文件区和交换区;文件区:为了更好的利用率,采用离散分配;交换区:原创 2020-08-16 15:12:11 · 213 阅读 · 0 评论 -
3.1_2_内存管理的概念
内存管理的几个功能内存空间的分配与回收内存空间进行扩充地址转换,逻辑地址与实际地址的转换3种装入方式内存保护上下限寄存器,存放进程的界限重定位寄存器和界地址寄存器进行越界比较...原创 2020-08-16 09:40:26 · 82 阅读 · 0 评论 -
3.1_1_内存的基础知识
内存程序需要先放到内存才能被CPU处理–缓和CPU和硬板之间的速度矛盾如何区分各个程序的数据放在哪里内存从0开始,每个分配的地址对应一个存储单元如果是按照字节编址的,一个地址代表一个字节,1B如果按字编址的,一个存储单元代表一个字,存储单元大小代表一个字长装入模块(可执行文件)指令表明的地址一般是逻辑地址在内存中的为物理地址主要问题:如果实现逻辑地址到物理地址的映射三种装入方式tips:装入:把可执行文件装入内存绝对装入开始就知道程序在内存中什么位置,逻辑地址 == 物理原创 2020-08-16 09:06:39 · 108 阅读 · 0 评论