2024年物联网嵌入式最新《操作系统》考前秘籍_通道能够完成什么之间的传输(1),2024年最新物联网嵌入式开发面试基础知识

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

相比于单道程序设计(内存中仅有一道作业),多道程序设计按照一定的作业调度算法将作业队列中的作业调入内存,使他们共享CPU和各种资源。因此需要更大的内存以容纳超过一道的作业。

  • Unix操作系统的进程控制块中常驻内存的是 proc结构

Unix把进程分成两大类:
一类是系统进程,另一类是用户进程。系统进程执行操作系统程序,提供系统功能,工作于核心态。用户进程执行用户程序,在操作系统的管理和控制下执行,工作于用户态。进程在不同的状态下执行时拥有不同的权力。
在Unix系统中进程由三部分组成,分别是进程控制块、正文段和数据段。
Unix系统中把进程控制块分成proc结构和user结构两部分
proc存放的是系统经常要查询和修改的信息,需要快速访问,因此常将其装入内存

进程状态变化

就绪态:进程已经准备好运行的状态,即进程分配到除CPU以外的所有必要资源。

执行态:进程获得CPU,其程序正在执行的状态。

阻塞态:正在执行的进程由于发生某事件(如:IO请求、申请缓冲区失败)暂时无法继续执行的状态,亦即进程的执行收到阻塞。此时引起进程调度,OS把处理机分配给另一个就绪进程。

  • 时间片到 进程从执行状态转变为就绪状态。

就绪状态—>运行状态:
获得处理机资源(分派处理机的时间片)
运行状态—>就绪状态:
1)处于运行状态的进程时间片用完
2)当有更高优先级的进程就绪时
运行状态—>阻塞状态:
1)进程请求资源(外设)使用和分配
2)等待某一事件的发生(IO操作完成)
阻塞状态—>就绪状态:
当进程等待事件到来(IO操作结束或者中断的结束)

  • 一个正在运行的进程,当所分配的时间片用完后,将其挂在 就绪队列
    在这里插入图片描述
  • 某进程在运行过程中需要等待从磁盘上读入数据,此时该进程的状态将从运行变为阻塞
  • 一个进程被唤醒意味着 进程变为就绪状态
  • 下列性质中,哪一个不是分时系统的特征 成批性
  • 在进程状态转换时,下列(阻塞态→运行态)转换是不可能发生的
  • 下列各项工作步骤中,(作业调度程序为进程分配CPU)不是创建进程所必需的步骤。分配cpu时间片是执行的过程
  • 创建进程的步骤(不需要立马分配CPU)

1,申请空白PCB(进程控制块);
2,为新进程分派资源;
3,初始化PCB;
4,将新进程插入就绪队列;

  • 进程通过进程调度程序而获得CPU

进程优先级可以改变
CPU可以空转没有进程运行
得不到满足转为就绪状态

  • 从资源管理的角度看,进程调度属于 处理机管理

处理机管理其实就是给进程控制和分配资源,考虑进程创建、进程撤销、如何避免冲突、如何死锁处理,其主要任务就是处理进程通信、进程调度等

  • 一个进程释放一种资源将有可能导致一个或几个进程 由就绪变运行
  • 一次I/O操作的结束,有可能导致 一个进程由睡眠变运行
  • 当一个进程从CPU上退下来时,它的状态应变为 静止睡眠
  • 为使进程由活动就绪变为静止就绪,应利用( Suspend )原语
  • 一个进程可创建一个或多个线程
    一个线程可创建一个或多个线程
    一个线程可创建一个或多个线程
  • 若系统中只有用户级线程,则处理机调度单位是 线程
  • 一个进程是 PCB结构与程序和数据的组合

一个进程包括控制结构和执行结构;控制结构是进程控制块PCB,执行结构包括程序以及需要操纵的数据集合。

  • 进程不是程序

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。进程的概念主要有两点:
第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈 (stackregion)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。
第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。

  • 引入线程可提高程序并发执行的程度,可进一步提高系统效率

线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

  • 不管系统中是否有线程,进程都是拥有资源的独立单位

用户级线程是指有关线程的所有管理工作都由用户态运行的线程库(如POSIX的pthread库)完成,系统内核并不知道线程的存在。应用程序可以根据需要,在同一个进程中创建线程,自己设计调度单位,调度指定线程运行。由于内核是单线程,仍以进程为单位进行调度。核心级线程(系统支持线程)是指有关线程的所有管理工作都是由系统内核完成的。

对于普通的操作系统,未引入线程的话,进程是系统进行资源分 配和调度的独立单位

在多处理机操作系统中,引入线程后,进程是资源的分配单 位或者叫做资源的容器,线程是处理机的调度单位。

  • 线程的切换,可能引起进程的切换

属于同一进程的多个线程之间的切换不会引起进程的切换,只有属于不同进程的线程之间的切换才会引起进程的切换。

  • 进程的控制信息和描述信息存放在 PCB
  • 进程依靠("合作"进程的唤醒)从阻塞状态过渡到就绪状态。

引起进程阻塞和唤醒的事件:
1、向系统请求共享资源失败。进程转变为阻塞状态。
2、等待某种操作完成。比如进程启动了I/O设备,必须等I/O操作完成后,进程才能继续。
3、新数据尚未到达。对于合作的进程,如果一个进程A需要先获得另一进程B提供的数据后,才能对该数据进程处理,只要数据尚未到达,进程A只能阻塞。当进程B提供数据后,便可以去唤醒进程A。
4、等待新任务到达,用于特定的系统进程。它们每当完成任务后,就把自己阻塞起来,等待新任务。

  • 在Windows NT中( 进程 )可以处于就绪状态。

作业:向计算机提交任务的任务实体;
作业是指用户在一次解决或一个事务处理过程中要求计算机系统所做的工作的集合,包括用户程序、数据、作业说明书等。
进程:执行实体,是资源分配的基本单位;
线程:处理机调试的基本单位;
程序:先简单粗暴地理解为代码吧。

  • 作用于一个进程只有一次的原语是 创建
  • 在Unix系统中,处于(内存就绪)状态的进程最容易被执行。
  • 从执行状态挂起的进程解除挂起时进入(就绪)状态。
  • 一个进程执行过程中不可能对应 多个PCB
  • 用P、V操作管理临界区时,信号量的初值一般应定义为 1
  • 有m个进程共享同一临界资源,若使用信号量机制实现对一临界资源的互斥访问,则信号量的变化范围是 1 ~ -m
  • 临界资源是互斥共享资源
  • 对进程间互斥的使用临界资源,进程可以互斥的进入各自的临界区
  • 设两个进程共用一个临界资源的互斥信号量mutex,当mutex=1时表示 没有一个进程进入临界区
  • 设两个进程共用一个临界资源的互斥信号量mutex,当mutex=-1时表示 一个进程进入了临界区,另一个进程等待
  • 当一进程因在记录型信号量S上执行P(S)操作而被阻塞后,S的值为 < 0
  • 当一进程因在记录型信号量S上执行V(S)操作而导致唤醒另一进程后,S的值为 <= 0
  • 如果信号量的当前值为-4,则表示系统中在该信号量上有(4)个进程等待
  • 若有4个进程共享同一程序段,而且每次最多允许3个进程进入该程序段,则信号量的变化范围是 3,2,1,0,-1
  • 若信号S的初值为2,当前值为-1,则表示有(1)个等待进程。
  • 并发进程之间 可能需要同步或互斥
  • 在操作系统中,有一组进程,进程之间具有直接相互制约性。这组并发进程之间 必定相关
  • 为进程分配处理机 操作不是P操作可完成的。

P操作分配的是我们申请的资源,并不是处理机

信号量

信号量是最早出现的用来解决进程同步与互斥问题的机制。
信号量(Saphore)值表示相应资源的使用情况。信号量S>=0时,S表示可用资源的数量。执行一次P操作意味着请求分配一个资源,因此S的值减1;当S<0时,表示已经没有可用资源,S的绝对值表示当前等待该资源的进程数。请求者必须等待其他进程释放该类资源,才能继续运行。而执行一个V操作意味着释放一个资源,因此S的值加1;若S<0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。

注意,信号量的值只能由PV操作来改变。

死锁

如果一组进程中的每一个进程都在等待该组其他进程所占用的资源就称为死锁。

  • 某系统采用了银行家算法, 系统处于不安全状态时可能会发生死锁

系统处于安全状态,一定不会发生死锁;

  • 强占式静态优先权法 可能导致进程饥饿

抢占式保证了高优先级的进程可以直接抢夺低优先级进程的资源,优先运行;
静态优先权是指:在进程运行前就已经分配了固定的优先权,在进程运行的过程中不再对优先权进行调整,这样就导致了低优先级的进程一直得不到资源,即“饥饿”状态!

1. 预防死锁。
这是一种较简单和直观的事先预防的方法。
方法是通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或者几个,来预防发生死锁。
预防死锁是一种较易实现的方法,已被广泛使用。但是由于所施加的限制条件往往太严格,可能会导致系统资源利用率和系统吞吐量降低。
2. 避免死锁。
该方法同样是属于事先预防的策略,但它并不须事先采取各种限制措施去破坏产生死锁的的四个必要条件,
而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。
3. 检测死锁。
这种方法并不须事先采取任何限制性措施,也不必检查系统是否已经进入不安全区,此方法允许系统在运行过程中发生死锁。
但可通过系统所设置的检测机构,及时地检测出死锁的发生,并精确地确定与死锁有关的进程和资源,然后采取适当措施,从系统中将已发生的死锁清除掉。
4. 解除死锁。
这是与检测死锁相配套的一种措施。
当检测到系统中已发生死锁时,须将进程从死锁状态中解脱出来。
常用的实施方法是撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已处于阻塞状态的进程,使之转为就绪状态,以继续运行。
死锁的检测和解除措施,有可能使系统获得较好的资源利用率和吞吐量,但在实现上难度也最大。

  • 银行家算法是避免死锁
  • 资源静态分配是预防死锁的方法

预防是破坏四大条件任意一条
避免是不破坏四大条件,对进程新的资源请求进行判断,如果有可能导致就不分配。

银行家算法 避免死锁
终止进程法、剥夺资源法 解除死锁
资源静态分配法 预防死锁
资源分配图简化法 检测死锁

进程调度算法

  • 为了照顾紧迫型作业,应采用 优先权调度算法
  • 在采用动态优先权的优先权调度算法中,如果所有进程都具有相同优先权初值,则此时的优先权调度算法实际上和(先来先服务调度算法)相同。
  • 作业从后备作业到被调度程序选中的时间称为 等待调度时间
  • 资源静态分配法可以预防死锁的发生,因为使死锁四个条件中的(请求和保持条件)不成立。

静态分配资源,所有进程在开始运行之前,一次性地申请其在整个运行过程所需的全部资源。但在分配资源时,只要有一种资源不能满足某进程的要求,即使它所需的其他资源都空闲,也不分配给该进程,而让进程等待。
在进程的等待期间,它并未占有任何资源,摒弃了“保持”条件,避免发生死锁。

作业调度算法

先来先服务(FCFS)

First Come First Serve

  1. 算法思想
    主要从“公平”的角度考虑(类似排队)
  2. 算法规则
    按照作业/进程到达的先后顺序进行服务
  3. 用于作业/进程调度
    用于作业调度时,考虑的是哪个作业先到达后备队列;
    用于进程调度时,考虑的是哪个进程先到达就绪队列
  4. 是否可抢占?
    非抢占式的算法
  5. 优缺点
    优点:公平、算法实现简单
    缺点:排在长作业(进程)后面的短作业需要等待很长时间,带权周转时间很大,对短作业来说用户体验不好。即,FCFS算法对长作业有利,对短作业不利。
  6. 是否会导致饥饿
    不会
  • 例题
    **加粗样式**

短作业优先(SJF)

Shortest Job First

  1. 算法思想
    追求最少的平均等待时间,最少的平均周转时间、最少的平均带权周转时间
  2. 算法规则
    最短的作业/进程优先得到服务(所谓“最短”,是指要求服务时间最短)
  3. 用于作业/进程调度
    既可用于作业调度,也可用于进程调度。用于进程调度时称为“短进程优先(SPF, Shortest Process First)算法”
  4. 是否可抢占?
    SJF和SPF是非抢占式的算法。但是也有抢占式的版本–最短剩余时间优先算法(SRTN, Shortest Remaining Time Next)
  5. 优缺点
    优点:“ 最短的”平均等待时间、平均周转时间
    缺点:不公平。对短作业有利,对长作业不利。可能产生饥饿现象。另外,作业/进程的运行时间是由用户提供的,并不一定真实,不一定能做到真正的短作业优先
  6. 是否会导致饥饿
    会。如果源源不断地有短作业/进程到来,可能使长作业/进程长时间得不到服务,产生“饥饿”现象。如果一直得不到服务,则称为“饿死”
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

高响应比优先(HRRN)

Highest Response Ratio Next

  1. 算法思想
    要综合考虑作业/进程的等待时间和要求服务的时间
  2. 算法规则
    在每次调度时先计算各个作业/进程的响应比,选择响应比最高的作业/进程为其服务
    在这里插入图片描述
  3. 用于作业/进程调度
    既可用 于作业调度,也可用于进程调度
  4. 是否可抢占?
    非抢占式的算法。因此只有当前运行的作业/进程主动放弃处理机时,才需要调度,才需要计算响应比
  5. 优缺点
    综合考虑了等待时间和运行时间(要求服务时间)
    ①等待时间相同时,要求服务时间短的优先(SJF 的优点)
    ②要求服务时间相同时,等待时间长的优先(FCFS 的优点)
    ③对于长作业来说,随着等待时间越来越久,其响应比也会越来越大,从而避免了长作业饥饿的问题
  6. 是否会导致饥饿
    不会

在这里插入图片描述

死锁预防

对于死锁的预防(deadlock prevention):死锁产生时,产生死锁的四个必要条件必定同时保持,如果至少能使其中一个条件不满足,那么死锁将是不可能产生的了。四个必要条件如下:
破坏互斥条件。
破坏保持和请求条件 : 进程在开始运行前,必须获得所需的全部资源。若系统不能满足,则该进程等待,这就是资源的静态分配。这种分配方式使资源利用率很低。而且,许多程序在开始运行之前,不能精确提出所需资源数量。
破坏非剥夺条件。
破坏循环等待条件。

死锁的预防即不允许死锁的发生,可以从破除死锁发生的四个必要条件入手。因为如果不具备上述四个必要条件,那么死锁就一定不会发生。
(1)互斥:不容易破除
(2)占有并等待(请求和保持):静态资源分配,资源不够不开始。
(3)不可抢占:外界撤销某些进程。
(4)环路等待:进程按顺序访问资源(执行)(给资源编号)。

页表寄存器

  • 分页存储管理的存储保护是通过(页表(页表寄存器))完成的。

在这里插入图片描述

  • 把作业地址空间中使用的逻辑地址变成内存中物理地址称为 重定位
  • 在可变分区存储管理中的紧凑技术可以集中空闲区
  • 在存储管理中,采用覆盖与交换技术的目的是 减少程序占用的主存空间

覆盖技术的实现是把程序划分为若干个功能上相对独立的程序段,按照其自身的逻辑结构使那些不会同时运行的程序段共享同一块内存区域。程序段先保存在磁盘上,当有关程序的前一部分执行结束后,把后续程序段调入内存,覆盖前面的程序段。
交换技术:在分时系统中,用户的进程比内存能容纳的数量更多,系统将那些不再运行的进程或某一部分调出内存,暂时放在外存上的一个后备存储区,通常称为交换区,当需要运行这些进程时,再将它们装入内存

1、固定分区存储管理
    其基本思想是将内存划分成若干固定大小的分区,每个分区中最多只能装入一个作业。
    当作业申请内存时,系统按一定的算法为其选择一个适当的分区,并装入内存运行。
    由于分区大小是事先固定的,因而可容纳作业的大小受到限制,而且当用户作业的地址空间小于分区的存储空间时,造成存储空间浪费。
    
    一、空间的分配与回收
    
    系统设置一张“分区分配表”来描述各分区的使用情况,登记的内容应包括:分区号、起始地址、长度和占用标志。
    其中占用标志为“0”时,表示目前该分区空闲;否则登记占用作业名(或作业号)。有了“分区分配表”,空间分配与回收工作是比较简单的。

    二、地址转换和存储保护

    固定分区管理可以采用静态重定位方式进行地址映射。

为了实现存储保护,处理器设置了一对“下限寄存器”和“上限寄存器”。
当一个已经被装入主存储器的作业能够得到处理器运行时,进程调度应记录当前运行作业所在的分区号,且把该分区的下限地址和上限地址分别送入下限寄存器和上限寄存器中。
处理器执行该作业的指令时必须核对其要访问的绝对地址是否越界。

    三、多作业队列的固定分区管理

    为避免小作业被分配到大的分区中造成空间的浪费,可采用多作业队列的方法。即系统按分区数设置多个作业队列,将作业按其大小排到不同的队列中,一个队列对应某一个分区,以提高内存利用率。

2、可变分区存储管理
    可变分区存储管理不是预先将内存划分分区,而是在作业装入内存时建立分区,使分区的大小正好与作业要求的存储空间相等。这种处理方式使内存分配有较大的灵活性,也提高了内存利用率。但是随着对内存不断地分配、释放操作会引起存储碎片的产生。

    一、空间的分配与回收

    采用可变分区存储管理,系统中的分区个数与分区的大小都在不断地变化,系统利用“空闲区表”来管理内存中的空闲分区,其中登记空闲区的起始地址、长度和状态。
    当有作业要进入内存时,在“空闲区表”中查找状态为“未分配”且长度大于或等于作业的空闲分区分配给作业,并做适当调整;当一个作业运行完成时,应将该作业占用的空间作为空闲区归还给系统。

    可以采用首先适应算法、最佳(优)适应算法和最坏适应算法三种分配策略之一进行内存分配。

    二、地址转换和存储保护

    可变分区存储管理一般采用动态重定位的方式,为实现地址重定位和存储保护,系统设置相应的硬件:基址/限长寄存器(或上界/下界寄存器)、加法器、比较线路等。

    基址寄存器用来存放程序在内存的起始地址,限长寄存器用来存放程序的长度。处理机在执行时,用程序中的相对地址加上基址寄存器中的基地址,形成一个绝对地址,并将相对地址与限长寄存器进行计算比较,检查是否发生地址越界。

    三、存储碎片与程序的移动

    所谓碎片是指内存中出现的一些零散的小空闲区域。由于碎片都很小,无法再利用。
    如果内存中碎片很多,将会造成严重的存储资源浪费。解决碎片的方法是移动所有的占用区域,使所有的空闲区合并成一片连续区域,这一技术称为移动技术(紧凑技术)。
    移动技术除了可解决碎片问题还使内存中的作业进行扩充。显然,移动带来系统开销加大,并且当一个作业如果正与外设进行I/O时,该作业是无法移动的。

3、页式存储管理

基本原理

    1.等分内存

    页式存储管理将内存空间划分成等长的若干区域,每个区域的大小一般取2的整数幂,称为一个物理页面有时称为块。内存的所有物理页面从0开始编号,称作物理页号。

    2.逻辑地址

    系统将程序的逻辑空间按照同样大小也划分成若干页面,称为逻辑页面也称为页。程序的各个逻辑页面从0开始依次编号,称作逻辑页号或相对页号。每个页面内从0开始编址,称为页内地址。程序中的逻辑地址由两部分组成:

逻辑地址
 页号p
 页内地址 d

3.内存分配

    系统可用一张“位示图”来登记内存中各块的分配情况,存储分配时以页面(块)为单位,并按程序的页数多少进行分配。相邻的页面在内存中不一定相邻,即分配给程序的内存块之间不一定连续。

    对程序地址空间的分页是系统自动进行的,即对用户是透明的。由于页面尺寸为2的整数次幂,故相对地址中的高位部分即为页号,低位部分为页内地址。

3.5.2实现原理

    1.页表

    系统为每个进程建立一张页表,用于记录进程逻辑页面与内存物理页面之间的对应关系。地址空间有多少页,该页表里就登记多少行,且按逻辑页的顺序排列,形如:

逻辑页号
 主存块号
 
0
 B0
 
1
 B1
 
2
 B2
 
3
 B3

2.地址映射过程

    页式存储管理采用动态重定位,即在程序的执行过程中完成地址转换。处理器每执行一条指令,就将指令中的逻辑地址(p,d)取来从中得到逻辑页号(p),硬件机构按此页号查页表,得到内存的块号B’,便形成绝对地址(B’,d),处理器即按此地址访问主存。

    3.页面的共享与保护

    当多个不同进程中需要有相同页面信息时,可以在主存中只保留一个副本,只要让这些进程各自的有关项中指向内存同一块号即可。同时在页表中设置相应的“存取权限”,对不同进程的访问权限进行各种必要的限制。

4、段式存储管理

基本原理

    1.逻辑地址空间

    程序按逻辑上有完整意义的段来划分,称为逻辑段。例如主程序、子程序、数据等都可各成一段。将一个程序的所有逻辑段从0开始编号,称为段号。每一个逻辑段都是从0开始编址,称为段内地址。

    2.逻辑地址

    程序中的逻辑地址由段号和段内地址(s,d)两部分组成。

    3.内存分配

    系统不进行预先划分,而是以段为单位进行内存分配,为每一个逻辑段分配一个连续的内存区(物理段)。逻辑上连续的段在内存不一定连续存放。

3.6.2实现方法

    1.段表

    系统为每个进程建立一张段表,用于记录进程的逻辑段与内存物理段之间的对应关系,至少应包括逻辑段号、物理段首地址和该段长度三项内容。

    2.建立空闲区表

    系统中设立一张内存空闲区表,记录内存中空闲区域情况,用于段的分配和回收内存。

    3.地址映射过程

段式存储管理采用动态重定位,处理器每执行一条指令,就将指令中的逻辑地址(s,d)取来从中得到逻辑段号(s),硬件机构按此段号查段表,得到该段在内存的首地址S’, 该段在内存的首地址S’加上段内地址d,便形成绝对地址(S’+d),处理器即按此地址访问主存。

5、段页式存储管理

    页式存储管理的特征是等分内存,解决了碎片问题;段式存储管理的特征是逻辑分段,便于实现共享。为了保持页式和段式上的优点,结合两种存储管理方案,形成了段页式存储管理。

    段页式存储管理的基本思想是:把内存划分为大小相等的页面;将程序按其逻辑关系划分为若干段;再按照页面的大小,把每一段划分成若干页面。程序的逻辑地址由三部分组成,形式如下:

逻辑地址
 段号s
 页号p
 页内地址d

内存是以页为基本单位分配给每个程序的,在逻辑上相邻的页面内存不一定相邻。

    系统为每个进程建立一张段表,为进程的每一段各建立一张页表。地址转换过程,要经过查段表、页表后才能得到最终的物理地址。

  • 存储管理方法中,( 单一连续区 )用户可采用覆盖技术

在单道连续分配中,当存储空间容不下程序时,可采用覆盖方法来解决;
覆盖基本思想:由于程序运行时并非各个部分都要访问,因此可以将用户空间分成一个固定区和多个覆盖区。
将经常活跃的放入固定区,将那些将要用的段放入覆盖区,在需要时提前调入覆盖区,替换原有的段。
覆盖技术是早期在单一连续存储管理中使用的扩大存储器容量的一种技术。

  • 在内存分配的"最佳适应法"中,空闲块是按 块的大小从小到大排序

最优适应算法:通常将空闲区按长度递增顺序排列。查找时总是从最小一个空闲区开始,直到找到满足要求的分区为止。此算法保证不会分割一个更大的区域,使得装入大作业的要求容易得到满足。
补充:
首次适应算法:通常将空闲区按地址从小到大排列。查找时总是从低地址开始,可使高地址尽量少用,以保持一个大空闲区,有利于大作业的装入;缺点是内存低地址和高地址两端的分区利用不平衡,回收分区较麻烦。
最坏适应算法:通常将空闲区按长度递减顺序排列
查找时从最大的一个空闲区开始,总是挑选一个最大的空闲区分割给作业使用,其优点是使剩下的空闲区不致于太小,这样有利于中小型作业,但不利于大作业。

  • 段的逻辑地址形式是段号10位,段内地址20位,内存1MB,辅存10GB。那么虚拟存储器最大实际容量可能是:

虚拟存储器最大实际容量= min(计算机地址,内存+辅存)。计算机地址= 2^ 10 * 2^20=1024M

段内地址20位说白了就是段内偏移量,对应2^20个地址,如果按字节编址就是1024*1024B=1MB
10位段号说白了就是最多2^10个段,也就是1024段,每段内部又对应1MB,总共就是1024MB=1GB

  • 用空白链记录内存空白块的主要缺点是 分配空间时可能需要一定的查链时间

C 首次适应,是按地址排序,然后依次找到大小满足要求(比需要的大即可)的内存块,划分出一定大小,剩下空闲块的还在链上。
D最佳适应,空闲块还是从小到大排序,找到大小最接近的内存块。摘链,多出来的再插入链表。
对于选项C,D,空间地址是递增的,每个空白块的大小不确定,所以这两个算法只需在链表中查找所需大小的空白块,没有好不好实现一说。
对于选项A,指针大小4字节(32位),和指针所指向的空白块相比,其大小基本可以忽略,就算指针很多,占用了空间,但也说明了空白块也很多,所以对比下,指针所占空间基本可以忽略。
B选项:在分配空间的时候,会进行空白块的查找。根据算法的不同,欲分配空间大小的不同,其查找的时间总是不容易计算的。

  • 一般而言,计算机中(虚拟存储器)容量(个数)最多

一般情况下虚拟内存的大小大于物理内存与外部存储的大小总和。比如对于一台80x86上运行的32位Linux,其可寻址的物理地址空间为4GB,虚存大小上限为 4GB * 进程数上限。
允许设置的虚拟内存最小值为2MB,最大值不能超过当前硬盘的剩余空间值,同时也不能超过32位操作系统的内存寻址范围——4GB。

分页与分区

  • 分区管理和分页管理的主要区别是 分区要求一道程序存放在连续的空间内而分页没有这种要求

一、分区存储管理
1、固定分区:
优点:易于实现、开销小
缺点:存在内部碎片(分区内未被利用空间)、分区总数固定,限制了并发执行的程序数量。
2、动态创建分区:按照程序申请要求分配。
优点: 没有内部碎片
缺点:有外部碎片(难以利用的小空闲分区)
二、页式存储管理
优点:没有外部碎片,最后一页可能有内碎片但不大; 程序不必连续存放;便于改变程序占用空间大小。
缺点: 程序仍需要全部装入内存。

重定位

  • 静态重定位的时机是 程序装入时

对程序进行重定位的技术按重定位的时机可分为两种:静态重定位和动态重定位
静态重定位:是在目标程序装入内存时,由装入程序对目标程序中的指令和数据的地址进行修改,即把程序的逻辑地址都改成实际的地址。对每个程序来说,这种地址变换只是在装入时一次完成,在程序运行期间不再进行重定位。
优点:是无需增加硬件地址转换机构,便于实现程序的静态连接。在早期计算机系统中大多采用这种方案。
缺点
(1)程序的存储空间只能是连续的一片区域,而且在重定位之后就不能再移动。这不利于内存空间的有效使用。(2)各个用户进程很难共享内存中的同一程序的副本。
动态重定位:是在程序执行期间每次访问内存之前进行重定位。这种变换是靠硬件地址变换机构实现的。通常采用一个重定位寄存器,其中放有当前正在执行的程序在内存空间中的起始地址,而地址空间中的代码在装入过程中不发生变化。
优点
(1)程序占用的内存空间动态可变,不必连续存放在一处。
(2)比较容易实现几个进程对同一程序副本的共享使用。
缺点:是需要附加的硬件支持,增加了机器成本,而且实现存储管理的软件算法比较复杂。 现在一般计算机系统中都采用动态重定位方法。

  • 采用动态重定位方式装入作业,在执行中允许(操作系统有条件的)将其移走。

绝对装入方式:绝对装入需要实现知道程序驻留在内存的位置,程序按照装入模块中的地址,将程序和数据装入内存。所以程序中的逻辑地址与实际地址完全相同,当操作系统把程序装入内存时,不需要对程序和数据进行地址修改;

  • 把逻辑地址转变为内存的物理地址的过程称作 重定位或地址映射
  • 采用可重定位分区分配方式,解决了碎片问题

可重定位分区分配方式也是属于连续分配方式的,只是它在内存碎片很多而导致的程序不能放入内存时,进行“紧凑”(可能会移动原来的数据的,所以此时就需要重定位啦紧凑完了,就能放进去啦~)

连续分配方式是指为一个用户程序分配一个连续的内存空间。在连续分配方式中,必须把一个系统或用户程序装入一连续的内存空间,如果在系统中只有若干个小的分区,即使他的容量总和大于要装入的程序,但由于这些分区不相邻接的小分区,他们单独的容量不能满足作业大小但它们的容量总和大于作业的要求时,若想把作业装入,可采用的可重定位分区分配方式。

可重定位分区分配方式与拼接方式不同在于拼接时机的不同。前者是在某个分区回收时立即进行拼接,这样在内存中总是只有一个连续的空闲区。但由于拼接很费时间,拼接频率过高会使系统开销加大。后者是当找不到足够大的空闲区且空闲区的容量可以满足作业要求时进行拼接。拼接的频率比第一种要小得多,但空闲区的管理稍微复杂一些。

动态重定位是指在虚拟地址空间向物理地址空间装换的过程中利用的技术。

存储保护

  • 通常所说的"存储保护"的基本含义是 防止程序间相互越界访问

存储保护
在采用虚拟存储技术的存储系统中,一个多任务的操作系统经常将多个不同的程序同时调入主存执行,因此,首先需要保证这些程序间不会相互覆盖,并且,一个程序不能访问其他程序的数据以及不是分配给他的主存区域。其次,一个程序出错不会破坏其他用户程序和系统程序。通过一些限制方式保护主存中程序的技术被称为存储保护。简单的说,存储保护就是对主存中的程序和数据进行保护。为了降低开销,在进行存储保护的时候,通常不会直接保护单个存储单元,而是以页或者段为单位进行保护。存储保护主要包括以下两个方面内容。
存储区域保护: 存储区域保护主要是为了防止地址越界。常用的存储区域保护方式有基于页表或段表的保护,键保护和环保护。
(1)基于页表或段表的保护。在分页式虚存中,每个程序的虚页号是固定的经过地址变换后的实存页号也是固定的。这样,程序只能访问或影响到相应的主存页面,不会影响或访问其他程序空间。
在分段式虚存中,段表和页表的保护功能类似,但段表还需要记录段的上界,下界和段长,这样就很容易保证程序访问的地址不越界。
(2)键保护方式:操作系统为主存中的每一页分配一个键,通常被称为存储键,用于指明保护的等级。!存储键相当于一把锁,只有拥有打开这把锁的钥匙才能访问相应的页面。而钥匙就是操作系统为每道程序分配的!访问键,该访问键通常保存在!该道程序的《状态寄存器》中。当程序要访问主存的某一页时,程序的访问键要与该页的存储键!进行比较。若两键相符,则允许访问该页,否则拒绝访问。
(3)环保护方式:操作系统按照系统程序和用户程序的重要性及对整个系统正常运行的影响程度,将程序分为多个保护级别(层),每个级别称为一个环,这样,各个级别就构成了同心环。在现行程序运行前由操作系统为程序设置!个页的环号,并置入页表中。并将该道程序的开始环号保存在CPU的<现行环号寄存器》中。程序可以访问任何外层空间。访问内层空间则需要由操作系统的环控《例行程序》判断这个向内访问是否合法。pentium微处理器采用环保护方式。
访问方式保护
访问方式保护是为了保证程序不能对主存执行非授权的操作,通常,通过对页表或者段表设置访问权限标志位来实现。
对内存信息的使用可以有以下三种方式:读(R),写(w)和执行(E),因此相应的访问权限就是R,W,E三种方式形成的逻辑组合。例如,R+W+E表示可以进行任何访问(全权限),(R+W)*E表示能够读和写但不能执行。
通常,操作系统对每个程序访问方式保护的规定如下:《对本程序所在存储区域拥有全权限。对共享!数据区域(或获得授权的其他用户数据区域)可读不可写。对共享程序区域(或获得授权的其他用户程序区域)!可执行。对操作系统内核等非授权区域不可访问。
这种访问方式经常和存储区域保护结合起来实现。例如基于页表和段表的保护方式下,通常将访问方式“位”保存在段表和页表中,使得同一个段内的不同页有不同的访问方式。这样可以提高保护的灵活性。
存储保护一般以硬件保护为主,以降低系统实现开销,提高保护效率。当发生访问越界等非法操作时,硬件产生中断,进入操作系统处理。

虚存管理和实存管理的区别

  • 虚存管理和实存管理的主要区别是 实存要求一程序全部装入内存才开始运行,虚存允许程序在执行的过程中逐步装入

虚存之所谓称之为虚,就是因为逻辑内存要大于物理内存。
假如程序要求全部装入才可以执行,根本没必要有虚存的存在了。
所以是否要求程序一次性全部装入内存,是实存和虚存的根本区别。

  • 能够装入内存任何位置的代码程序必须是 可动态链接的

程序的链接有以下三种方式:
静态链接:在程序运行之前,先将各目标模块及它们所需的库函数链接成一个完整的可执行程序,以后不再拆开。
装入时动态链接:将用户源程序编译后所得到的一组目标模块,在装入内存时,釆用边装入边链接的链接方式。
运行时动态链接:对某些目标模块的链接,是在程序执行中需要该目标模块时,才对它进行的链接。其优点是便于修改和更新,便于实现对目标模块的共享。

内存的装入模块在装入内存时,同样有以下三种方式:

绝对装入。在编译时,如果知道程序将驻留在内存的某个位置,编译程序将产生绝对地址的目标代码。绝对装入程序按照装入模块中的地址,将程序和数据装入内存。由于程序中的逻辑地址与实际内存地址完全相同,故不需对程序和数据的地址进行修改。

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

可重定位装入。在多道程序环境下,多个目标模块的起始地址通常都是从0开始,程序中的其他地址都是相对于起始地址的,此时应釆用可重定位装入方式。根据内存的当前情况,将装入模块装入到内存的适当位置。装入时对目标程序中指令和数据的修改过程称为重定位,地址变换通常是在装入时一次完成的,所以又称为静态重定位
静态重定位的特点是在一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。此外,作业一旦进入内存后,在整个运行期间不能在内存中移动,也不能再申请内存空间。

动态运行时装入,也称为动态重定位,程序在内存中如果发生移动,就需要釆用动态的装入方式。装入程序在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址均为相对地址。这种方式需要一个重定位寄存器的支持,如上图B所示。

动态重定位的特点是可以将程序分配到不连续的存储区中;在程序运行之前可以只装入它的部分代码即可投入运行,然后在程序运行期间,根据需要动态申请分配内存;便于程序段的共享,可以向用户提供一个比存储空间大得多的地址空间。

请求分页管理

在页表中要有"状态位"、"访问位"等信息

在请求分页系统中,只要求将当前需要的一部分页面装入内存,便可以启动作业运行。在作业执行过程中,当所要访问的页面不在内存时,再通过调页功能将其调入,同时还可以通过置换功能将暂时不用的页面换出到外存上,以便腾出内存空间。
为了实现请求分页,系统必须提供一定的硬件支持。除了需要一定容量的内存及外存的计算机系统,还需要有页表机制、缺页中断机构和地址变换机构。请求分页系统的页表机制不同于基本分页系统,请求分页系统在一个作业运行之前不要求全部一次性调入内存,因此在作业的运行过程中,必然会出现要访问的页面不在内存的情况,如何发现和处理这种情况是请求分页系统必须解决的两个基本问题。为此,在请求页表项中增加了四个字段:
在这里插入图片描述
增加的四个字段说明如下:
状态位P:用于指示该页是否已调入内存,供程序访问时参考。
访问字段A:用于记录本页在一段时间内被访问的次数,或记录本页最近己有多长时间未被访问,供置换算法换出页面时参考。
修改位M:标识该页在调入内存后是否被修改过。
外存地址:用于指出该页在外存上的地址,通常是物理块号,供调入该页时参考。

在请求分页系统中,每当所要访问的页面不在内存时,便产生一个缺页中断,请求操作系统将所缺的页调入内存。此时应将缺页的进程阻塞(调页完成唤醒),如果内存中有空闲块,则分配一个块,将要调入的页装入该块,并修改页表中相应页表项,若此时内存中没有空闲块,则要淘汰某页(若被淘汰页在内存期间被修改过,则要将其写回外存)。

  • 在请求分页系统中,页表中的修改位是供 页面置换

页表项(页描述子)中各个位的作用:

  1. 页号
  2. 块号(页框号)
  3. 中断位: 用于判断该页是不是在内存中,如果是0,表示该页面不在内存中,会引起一个缺页中断
  4. 保护位(存取控制位):用于指出该页允许什么类型的访问,如果用一位来标识的话:1表示只读,0表示读写
  5. 修改位(脏位):用于页面的换出,如果某个页面被修改过(即为脏),在淘汰该页时,必须将其写回磁盘,反之,可以直接丢弃该页
  6. 访问位:不论是读还是写(get or set),系统都会设置该页的访问位,它的值用来帮助操作系统在发生缺页中断时选择要被淘汰的页,即用于页面置换
  7. 高速缓存禁止位(辅存地址位):对于那些映射到设备寄存器而不是常规内存的页面有用,假设操作系统正在循环等待某个I/O设备对其指令进行响应,保证硬件不断的从设备中读取数据而不是访问一个旧的高速缓存中的副本是非常重要的。即用于页面调入。
  • 在请求分页系统中,页表中的辅存始地址是供(页面调入)参考的。

1)状态位P:用于指示该页是否已调入内存,供程序访问时参考;
2)访问字段A:用于记录本页在一段时间内被访问次数,供选择置换页面时参考;
3)修改位M:表示该页在调入内存后是否被修改过,供换出页面时参考;
4)外存地址:用于指出该页在外存上的地址,通常是物理块号,供调入该页时参考;

  • 在请求分页管理中,已修改过的页面再次装入时应来自 磁盘对换区

未被修改的页直接从文件区读入,而被置换时不需要调出;已被修改的页面,被置换时需要调出到交换区,以后从交换区调入。
请求分页系统,缺页时,如果页面未被修改是直接从磁盘文件区调入,对于那些可能修改的页面,在将它们换出时,便须调到对换区,以后需要时,再从对换区调入。(对换区采用连续分配方式,故磁盘I/O速度要较快一些。)

  • 在请求页式存储管理中,若页面尺寸变小,则缺页中断的次数可能增加也可能减少

1.Belady现象:是指当所分配的物理块数增大而页故障数不减反增的异常现象。
2.抖动现象:是指刚刚换出的页面马上又要换入内存,刚刚换入的页面马上又要换出主存,这种频繁的页面调度行为称为抖动,或者颠簸。

  • 请求分页管理中,若把页面尺寸增大一倍而且可容纳的最大页数不变,则在程序顺序执行时缺页中断次数会(B)
    A.增加 B.减少 C.不变 D.可能增加也可能减少
    因为在请求分页存储器中,由于页面尺寸增大,存放程序需要的页帧数就会减少,因此缺页中断的次数也会减少。
  • 在硬件和环境相同的条件下,一个作业在(分页)存储管理系统中运行的时间最长。

分页式存储管理可能将连续的指令放置在不同的页中,会发生换页中断,而分段、段页都是逻辑分配空间,段长可变,逻辑上相对连续的指令放在同一段中,不会像分页那样频繁换页操作。

  • 计算题在这里插入图片描述

地址偏移量=逻辑地址%页面大小(1024)=0A1F(H)(2591)%1024=543
页号=逻辑地址/页面大小=2591/1024=2
查页表得到块号为3,
故物理地址=3*1024+543=3615=0E1F(H)

  • 在页式存储管理中,当CPU形成一个有效地址时,要查页表。这一工作是由(硬件自动)实现的。

这是地址映射的知识点,为了提高系统效率,逻辑地址到物理地址的映射,是由处理机中设置的专门硬件完成,即地址管理部件。
当进程要访问某个逻辑地址中的数据时,分页地址变换机构会自动地将有效地址分为页号和页内地址两个部分,再以页号为索引去检索页表,查找操作由硬件执行。

缺页中断

  • 在请求分页存储管理的系统中,若采用FIFO页面淘汰算法,则当进程分配到的页面数增加时,缺页中断的次数 可能增加也可能减少

随着内存的增大:缺页次数增加的现象:称之为 Belady 现象(异常现象); 我们都知道常用的页面淘汰算法有五种:
1 : FIFO: 先进先出 页面淘汰算法会产生Belady现象

2 :LRU 最近最久未用置换算法

3 : LFU 最近访问频率最低的

4 : NUR 最近没有使用页面淘汰算法( NUR )

5: 理想的淘汰算法:( OPT )
这五种算法可见简单的将其分为两类,堆栈型算法和非堆栈型算法; 注意:堆栈型算法:最新压入到堆栈中的永远在栈顶;栈顶是刚刚访问过的,栈底是最久没有访问过的; LRU和LFU都 是堆栈型算法, OPT 也是堆栈算法; 但是 FIFO非堆栈型算法 ; 非堆栈式算法可能出现 Belady 问题,是栈式算法不会出现类似问题;

缺页中断的次数是由页面数量,页面置换算法与页面走向三个因素决定的,题目中采用FIFO,页面数增大,但是页面走向不确定,所以缺页次数可能增大页可能减小,比如Belady异常

  • 在请求分页存储管理中,当访问的页面不在内存时,便产生缺页中断,缺页中断是属于 程序中断

中断

中断类型分为如下两大类:
一、强迫性中断:正在运行的程序所不期望的,来自硬件故障或外部请求。
1、I/O 中断:来自外部设备通道;
2、程序性中断:运行程序本身的中断,如 溢出、缺页中断、缺段中断、地址越界。
3、时钟中断
4、控制台中断
5、硬件故障

二、自愿性中断:用户在编程时要求操作系统提供的服务,使用访管指令或系统调用使中断发生。也称为访管中断。包括执行I/O,创建进程,分配内存,信号量操作,发送/接收消息。

访管中断是用户程序在运行中请求操作系统为其提供服务而执行一条“访管指令”所引起的中断,又称软件中断。访管中断是进程所期待的,它是自愿性的中断,又称自愿中断,其它几种中断不是运行进程所期望的,它属于强迫性中断事件。

外部中断一般是由计算机外设发出的中断请指求,如:键盘中断、打印机中断、定时器中断等

  • 分页式存储系统中,页面的大小与可能产生的缺页中断次数 无关

一种说法:

由于内存的大小是固定的,所以无论页面是大是小,可以进入内存的大小也是固定的,最多不超过内存的大小。实际上,分页的大小并不影响进入内存作业的数量。从宏观上看,进入内存的页面内容是没有变化的。
所以分页式虚拟存储管理系统中,页面的大小与可能产生的缺页中断次数关系不大。

在分页存储管理系统中,页面的大小是由计算机系统的地址结构所决定的,一般由软硬件共同决定。
对于某一种系统一般采用一种大小的页面(也有部分现代操作系统采用双页面系统的)。
在确定地址结构时,若选择的页面较小,一方面可使内碎片减小,并减少了内碎片的总空间,有利于提高内存利用率。
另一方面,也会使每个进程要求较多的页面,从而导致页表过长,占用大量内存。此外还会降低页面换进换出的效率。
若选择的页面较大,虽然可减少页表长度,提高换进换出效率,但却又会使页内碎片增大。由于内存的大小是固定的,所以无论页面是大是小,可以进入内存的作业大小也是固定的,最多不超过内存的大小。
实际上,分页的大小并不影响进入内存作业的数量。从宏观上看,进入内存的页面内容是没有变化的。所以分页式虚拟存储管理系统中,页面的大小与可能产生的缺页中断次数关系并没有确定的关系。

Belady现象

Belady现象是指:在分页式虚拟存储器管理中,发生缺页时的置换算法采用FIFO( 先进先出 )算法时,如果对—个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多但缺页率反而提高的异常现象。

1.Belady现象:是指当所分配的物理块数增大而页故障数不减反增的异常现象。
2.抖动现象:是指刚刚换出的页面马上又要换入内存,刚刚换入的页面马上又要换出主存,这种频繁的页面调度行为称为抖动,或者颠簸。

请求段的分配管理

适应于请求段的内存分配方法是 最佳适应和可变分区

请求分段系统是在分段系统的基础上,增加了请求调段功能和分段置换功能所形成的分段式虚拟存储系统。分段式存储管理方式分配算法与可变分区的分配算法相似,可以采用最佳适应法、最坏适应法和首次适应法等分配算法。显然仍然要解决外碎片的问题。

首次 适应分配算法: 这种算法按分区序号从空闲分区表的第一个表目开始查找该表, 把最先找到的大于或等于作业大小的空闲分区分给要求的作业。然后,再按照作业的大小,从该分区中划出一块内存空间分配给作业,余下的空闲分区仍留在空闲分区表中。如果查找到分区表的最后仍没有找到大于或等于该作业的空闲区,则此次分配失败。
优点:优先利用内存中低址部分的空闲分区,而高址部分的空闲分区很少被利用,从而保留了高址部分的大空闲区。为以后到达的大作业分配大的内存空间创造了条件。
缺点:低址部分不断被划分,致使留下许多难以利用的、很小的空闲分区。
循环 首次 适应分配算法
这种算法是由最先适应分配算法经过改进而形成的。在为作业分配内存时,不再每次从空闲分区表的第一个表项开始查找,而是从上次找到的空闲区的下一个空闲区开始查找,直至找到第一个能满足要求的空闲区为止,并从中划分出一块与请求大小相等的内存空间分配给作业。为实现该算法,应设置一起始查找指针,以指示下一次开始查找的空闲分区,并采用循环查找方式。即如果最后一个空闲分区的大小仍不能满足要求,则返回到第一个空闲分区进行查找。
优点 :内存中的空闲区分布得更均匀,减少查找空闲分区的开销。
缺点 :系统中缺乏大的空闲分区,对大作业不利。
最佳适应分配算法:该算法从所有未分配的分区中挑选一个 最接近作业大小且大于或等于作业的空闲分区分配给作业
,目的是使每次分配后剩余的碎片最小。为了查找到大小最合适的空闲分区,需要查遍整个空闲分区表,从而增加了查找时间。因此,为了加快查找速度,要求将所有的空闲分区,按从小到大递增的顺序进行排序。这样,第一次找到的满足要求的空闲分区,必然是最佳的。
缺点 :每次分配之后形成的剩余部分,却是一些小的碎片,不能被别的作业利用。因此,该算法的内存利用率是不高的。 最坏适应分配算法:
该算法从所有未分配的分区中挑选一个 最大的空闲分区分配给作业
,目的是使分配后剩余的空闲分区足够大,可以被别的作业使用。为了查找到最大的空闲分区,需要查遍整个空闲分区表,从而增加了查找时间。因此,为了加快查找速度,要求将所有的空闲分区按从大到小递减的顺序进行排序。这样,第一次找到的空闲分区,必然是最大的。优点:最坏适应分配算法在分配后剩余的空闲分区可能比较大,仍能满足一般作业的要求,可供以后使用。从而最大程度地减少系统中不可利用的碎片。缺点:这种算法使系统中的各空闲分区比较均匀地减小,工作一段时间以后,就不能满足对较大空闲分区的分配要求。

  • 例题
    在这里插入图片描述

最佳适应算法(Best Fit): 它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小

LRU置换算法所基于的思想

在最近的过去很久未使用的在最近的将来也不会使用

LRU是最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的页面!

LFU是最近最不常用页面置换算法(Least Frequently Used),也就是淘汰一定时期内被访问次数最少的页!

LRU:仅与上一次的使用时间有关,选择距离最远的;

LFU:与一定时间内的使用频率有关,选择频率最小的;

  • 选择在最近的过去使用次数最少的页面予以淘汰的算法称为 LFU
  • 选择在最近的过去很久未访问的页面予以淘汰的算法称为 LRU

LRU 最近最久未使用 recently:也就是首先淘汰最长时间未被使用的页面!

LFU 最不频繁被使用 frequenly:也就是淘汰一定时期内被访问次数最少的页!

虚拟存储

在下面关于虚拟存储器的叙述中,正确的是 要求程序运行前不必全部装入内存且在运行过程中不必一直驻留在内存

虚拟存储的基本原理是:在程序装入时不必将其全部读到内存,而只需将当前需要执行的部分页或段读到内存,就可让程序开始执行。在程序执行过程中,如果需执行的指令或访问的数据尚未在内存,则由处理器通知操作系统将相应的页或段调入到内存,然后继续执行程序。另一方面,操作系统将内存中暂时不使用的页或段调出保存在外存上,从而腾出空间存放将要调入的页或段

  • 虚存的可行性基础是计算机中著名的局部性原理
  • 虚存最基本的特征是 多次性

虚拟内存的特征是:
1.虚拟扩充 即不是物理上而是逻辑上扩充了内存容量
2.部分装入 即每个作业不是全部一次性地装入内存,而是只装入一部分
3.离散分配 即不必占用连续的内存空间,而是“见缝插针”
4.多次对换 即所需的全部程序和数据要分成多次调入内存

  • 虚存的实际存储容量=min(内、外存容量之和,CPU逻辑地址给出的空间大小)
  • 实现虚存最主要的技术是 对换技术

根据程序执行的互斥性和局部性两个特点,我们允许作业装入的时候只装入一部分,另一部分放在磁盘上,当需要的时候再装入到主存,这样以来,在一个小的主存空间就可以运行一个比它大的作业。因此虚拟存储的主要技术是部分对换。

  • 实现虚拟存储的目的是 扩充主存容量

根据程序执行的互斥性和局部性两个特点,我们允许作业装入的时候只装入一部分,另一部分放在磁盘上,当需要的时候再装入到主存,这样以来,在一个小的主存空间就可以运行一个比它大的作业。同时,用户编程的时候也摆脱了一定要编写小于主存容量的作业的限制。也就是说,用户的逻辑地址空间可以比主存的绝对地址空间要大。对用户来说,好像计算机系统具有一个容量很大的主存储器,称为“虚拟存储器”。
虚拟存储(Storage Virtualization)是指将多个不同类型、独立存在的物理存储体,通过软、硬件技术,集成转化为一个逻辑上的虚拟的存储单元,集中管理供用户统一使用。这个虚拟逻辑存储单元的存储容量是它所集中管理的各物理存储体的存储量的总和,而它具有的访问带宽则在一定程度上接近各个物理存储体的访问带宽之和。

  • 静态页式管理内存管理方法不能实现虚存

页式管理有: 静态页式管理; 动态页式管理;
其中,静态页式管理是在作业或进程执行前,把作业或进程全部装进内存中,如果内存中可用页面数小于请求页面数,该作业或进程等待。
动态页式管理不会把作业或进程一次性全部装进内存,只装入被反复调用或执行的部分,其他部分在执行过程中动态装入。

静态页式管理是一次性为要求内存的进程分配足够多的页面,无法将外存的空间利用起来实现虚存

虚存是 充分利用了地址空间

把辅存作为对主存的扩充,向用户提供了一个比实际主存大得多的地址空间,即充分利用了辅存的地址空间。

  • 虚拟存储器的最大容量是由(计算机系统的地址结构和外存空间)决定的。

虚拟存储器的最大容量 = min(内存+外存,2^n)。n为计算机的地址总线位数。

  • 若处理器有32位地址,则它的虚拟地址空间4G

页式虚拟存储管理

页式虚拟存储管理的主要特点是不要求将作业同时全部装入到主存的连续区域

程序动态链接

程序动态链接的时刻是 装入时 调用时

动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过程的一部分。在这些系统上,可执行文件包含一个叫做import
directory的表,该表的每一项包含一个库的名字。根据表中记录的名字,装载程序在硬盘上搜索需要的库,然后将其加载到内存中预先不确定的位置,之后根据加载库后确定的库的地址更新可执行程序。可执行程序根据更新后的库信息调用库中的函数或引用库中的数据。这种类型的动态加载成为装载时加载
,被包括Windows和Linux的大多数系统采用。 操作系统在加载应用软件时要完成的最复杂的工作之一就是加载时链接。

其他操作系统可能在运行时解析引用。在这些系统上,可执行程序调用操作系统API,将库的名字,函数在库中的编号和函数参数一同传递。操作系统负责立即解析然后代表应用调用合适的函数。这种动态链接叫做运行时链接
。因为每个调用都会有系统开销,运行时链接要慢得多,对应用的性能有负面影响。现代操作系统已经很少使用运行时链接。
可以动态链接的库,在Windows上是dynamic link library (DLL),在UNIX或Linux上是Shared
Library。库文件是预先编译链接好的可执行文件,存储在计算机的硬盘上。大多数情况下,同一时间多个应用可以使用一个库的同一份拷贝,操作系统不需要加载这个库的多个实例。

  • 下面哪种内存管理方法有利于程序的动态链接?
    分段存储管理

动态链接 是指在作业运行之前,并不把几个 目标程序 段链接起来。要运行时,先将主程序所对应的 目标程序
装入内存并启动运行,当运行过程中又需要调用某段时,才将该段(目标程序)调入内存并进行链接。可见, 动态链接 也要求以段作为管理的单位。

首次适应算法的空闲区

首次适应算法(First Fit):
从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的空闲区。

最差适应算法

在可变式分区分配方案中,只需要进行一次比较就可以判定系统是否能满足作业对主存空间要求的算法是 最差适应算法

最先适应算法:依次判定后找到第一个满足要求的哈 最佳适应算法:对空闲区按从小到大排序,第一个满足的就是啦
最差适应算法:对空闲区按从大到小排序,第一个满足的就是啦

固定式分区算法:是分区的

内存碎片

  • 采用(分段式存储管理)不会产生内部碎片

在内存管理中,内部碎片是已经被分配出去的的内存空间大于请求所需的内存空间。
外部碎片是指还没有分配出去,但是由于大小太小而无法分配给申请空间的新进程的内存空间空闲块。
固定分区存在内部碎片,可变式分区分配会存在外部碎片; 页式虚拟存储系统存在内部碎片;段式虚拟存储系统,存在外部碎片
为了有效的利用内存,使内存产生更少的碎片,要对内存分页,内存以页为单位来使用,最后一页往往装不满,于是形成了内部碎片。
为了共享要分段,在段的换入换出时形成外部碎片,比如5K的段换出后,有一个4k的段进来放到原来5k的地方,于是形成1k的外部碎片。

在内存管理中,内部碎片是已经被分配出去的的内存空间大于请求所需的内存空间。
外部碎片是指还没有分配出去,但是由于大小太小而无法分配给申请空间的新进程的内存空间空闲块。

段式存储管理会出现外部碎片。

  • 解决碎片问题,以及使程序可浮动的最好的办法是采用动态重定位技术

静态重定位:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变。

动态重定位即在程序运行过程中要访问数据时再进行逻辑地址与物理地址的变换(即在逐条指令执行时完成地址映射。

动态内存分配是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不象数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。

内存的静态分配和动态分配的区别主要是两个: 一是时间不同。静态分配发生在程序编译和连接的时候。动态分配则发生在程序调入和执行的时候。
二是空间不同。堆都是动态分配的,没有静态分配的堆。

抖动

系统"抖动"现象的发生是由 置换算法选择不当

在请求分页存储管理中,刚被替换出去的页,立即又要被访问,此时因无空闲内存,又要替换另一页,而后者又是下一次要被访问的页,于是系统需花费大量的时间忙于进行这种频繁的页面交换,致使系统的实际效率很低,这种现象称为抖动现象。一般都是由于置换算法不佳引起

在固定分区分配中

在固定分区分配中,每个分区的大小是 可以不同但预先固定

固定分区分配,是满足多道程序设计的存储技术,可以将内存划分成多个区,每个区运行一个作业,从而达到多道程序设计的多个作业同时在内存中的设计。
但是固定分区分配是提前将内存划分成多个区,区的大小可以不同,但是划分好后,个数和大小都不能发生改变。
作业到来,选择一个合适大小的区放置,但是作业长度不一,不会有太合适的区恰好满足其大小,从而会造成区空间的浪费,并且此浪费非常严重。

在可变式分区分配方案

在可变式分区分配方案中,某一作业完成后,系统收回其主存空间,并与相邻空闲区合并,为此需修改空闲区表,造成空闲区数减2的情况是 有上邻空闲区,也有下邻空闲区

作业归还分区,要调整空闲区表,把空闲区表调整成空闲区长度递减的次序排列登记。
可变分区分配方式下,当收回主存时,应检查是否有与归还区相邻的空闲区,若有,则应合并成一个空闲区。
相邻可能有上邻空闲区、下邻空闲区、既上邻又下邻空闲区、既无上邻又无下邻空闲区。
若有上邻空闲区,只修改上邻空闲区长度(为收回的空闲区长度与原上邻区长度之和)即可;
若有下邻空闲区,改记录这个下邻空闲区记录的地址为收回空闲区的地址,长度为下邻空闲区的长度和收回空闲区的长度即可;
若既有上邻又有下邻空闲区,改记录上邻区记录的长度(为上邻区长度、下邻区长度和收回区长度之和),再把下邻区记录的标志位改为空即可;
若既无上邻区又无下邻区,那么找一个标志位为空的记录,记下该回收区的起始地址和长度,且改写相应的标志位为未分配,表明该登记栏中指示了一个空闲区。
还有一种情况,合并后空闲区数不变,是有下邻区,没有上邻区

  • 在可变式分区分配方案中,某一作业完成后,系统收回其主存空间,并与相邻空闲区合并,为此需修改空闲区表,造成空闲区数减 1 的情况是 有上邻空闲区,也有下邻空闲区
  • 在可变分区存储管理中的拼接技术可以 集中空闲区

用“拼接”技术把存储空间内的碎片合并成一个更大的空间。

可重入码

如果一个程序为多个程序所共享,那么该程序的代码在执行的过程中不能被修改,即程序应该是可重入码

可重入码:当被多个线程调用的时候,不会引用任何共享数据,他们是线程安全的。(注意与线程安全做区别 可重入是线程安全的真子集)

重入代码(Reentry code)也叫纯代码(Pure
code)是一种允许多个进程同时访问的代码。为了使各进程所执行的代码完全相同,故不允许任何进程对其进行修改。程序在运行过程中可以被打断,并由开始处再次执行,并且在合理的范围内(多次重入,而不造成堆栈溢出等其他问题),程序可以在被打断处继续执行,且执行结果不受影响。

页式存储管理

在这里插入图片描述

物理地址=内存块号*块长+页内地址 ;
块的大小与叶大小一致;
由于页面大小是4K = 2^12 ,所以逻辑地址的后12位为 页内地址;
所以物理地址 = 2 *(2^12) + 0 = 8192;

逻辑地址=页号页面大小+页内地址=04096+0=0 页号=逻辑地址/页面大小; 0/4096=0
页内地址=逻辑地址%页面大小;0%4096=0 通过页号0找出对应的块号为2,另外,块大小=页面大小=4096
物理地址=块号块大小+页内地址=24096(4KB)+0=8192

  • 由连续分配方式发展为分页存储管理方式的主要动力是 提高内存利用率

存储模型

存储模型可以分为六种方式:

  1. 单一连续区:一段时间内只能有一个进程在内存中,因此内存利用率低
  2. 固定分区:把内存空间分割成若干区域,成为分区,每个分区装载一个且只能有进程
  3. 可变分区:根据进程的需要,把内存空间分割出一个分区,分配给进程,剩余的部分成为新的空闲区。 缺点:产生外部碎片,内存利用率低
  4. 页式存储
  5. 段式存储
  6. 段页式存储

这里的连续区应该就是单一连续区,页式存储改善了内存利用率低的特点
引入段式分配才是为了满足用户的需求
那么应该是引入多道序程序提高系统利用率,而基于段页式不连续的内存分配的交换技术更好地满足了多道程序的运行需要。

段式存储管理

  • 某段表的内容如表所示。480KB+154
    在这里插入图片描述

段号为2,那么查表可以知道段首地址为480KB,也就是说段号为2的这个段的段首在存储区中的位置为480KB,然后154为逻辑地址中的偏移量,也就是相对于地址480KB的相对位置,那么物理地址就是 480KB+154

  • 在段页式存储管理系统中其虚拟地址空间是 二维
    段页式存储是二维的,段号+页号 页内位移不算一维

首先,页式存储是一维的,段式存储是二维的。 其次,这是两种存储管理的设计初衷决定的,跟逻辑地址的结构没有关系。
在程序员的角度,你想操作一个内存地址,
(1)页式存储,你直接给一个逻辑地址就行,所以是一维的。虽然这个逻辑地址包含(页号,偏移量),但是,分页那是系统自己完成的事,我们不知道也不用关心最终地址到底在哪个页上。
(2)段式存储,你必须给出(段号,偏移量),所以是二维的。 因为分段的好处就是程序模块化,不同的段权限不同,所以在哪个段上,是我们关心的。

  • 分段尺寸受内存空间的限制,但作业总的尺寸不受内存空间的限制。

分段对应的是内存具体存储管理的一种方式,是对具体内存进行管理,段号+基地址,分段尺寸最大为具体内存。
在动态链接时先将主程序所对应的目标程序装入内存并启动运行,运行过程中需要调用某段时才将该段内存合并进行链接。
而作业的大小不受内存大小限制,由虚拟存储器解决空间不够问题,允许作业装入的时候只装入一部分,另一部分放在 磁盘上,当需要的时候再装入到主存,这样以来,在一个小的主存空间就可以运行一个比它大的作业。同时,用户编程的时候也摆脱了一定要编写小于主存容量的作业的限制。

IO控制方式

在下面的I/O控制方式中,需要CPU干预最少的方式是 I/O通道控制方式

程序IO方式

程序IO方式,是采用busy-waiting的方式,即CPU会采用轮询的方式来询问数据的方式来询问数据-------效果最差

中断IO方式

中断IO方式,是设备控制器当取出一个数据之后向CPU发送一个中断,然后CPU将数据从控制器中取到CPU寄存器,再然后转移到内存中。这种方式,CPU是以字节的方式来响应数据的。

DMA方式

DMA方式,是CPU通过向DMA控制器设定若干参数,然后DMA打开了一条内存到设备的通道,这样,设备(内存)中的数据可以不通过CUl来进行数据交互。缺点是,DMA是多少设备就需要多少DMA,而且,DMA方式下,CPU的访问设备是以数据块为周期的。

IO通道方式

IO通道方式,IO通道相当于一个简单的处理机,有自己的指令,也可以执行指令。指令存储在内存。

IO通道相当于一条PCI总线,一条IO通道可以连接所有的设备控制器。然后CPU向IO通道发出指令,IO通道将会自动进行获取数据。

另外,IO通道是以一组块为单位进行获取的。
所以,IO通道方式需要最少的CPU干预

一个独立于CPU的专门I/O控制的处理机,控制设备与内存直接进行数据交换。
它有自己的通道命令,可由CPU执行相应指令来启动通道,并在操作结束时向CPU发出中断信号。
通道指令的格式一般由:操作码,记数段,内存地址段,结束标志组成
一个系统中可设立三种类型的通道:字节多路通道、数组多路通道、选择通道

  • 利用通道实现了(内存和外设)之间数据的快速传输。

DMA控制器的出现已经减轻了CPU对数据输入输出的控制、使得CPU的效率合显著的提高.
通道的出现进一步提高了CPU的效率.这是因为通道一个特殊功能的处理器.
它有自己的指令和程序专门负责数据输入输出的传输控制.而CPU将“传输控制”的功能下放给通道后只负责“数据处理”功能.这样.通道与CPU分时使用内存,实现了CPU内部运算与I/O设备的平行工作.

缓冲技术

CPU输出数据的速度远远超过打印机的打印速度,影响程序执行速度,为解决这一问题,可以采用 缓冲技术

通道

通道是一个独立与CPU的专管输入/输出控制的处理机,它控制设备与内存直接进行数据交换。引入通道的目的是让数据的传输独立于CPU,使CPU从繁重的I/O工作中解脱出来。它有自己的通道指令,这些指令受CPU启动,并在操作结束向CPU发出中断信号。通道技术主要是为了减轻CPU的工作负担,增加了计算机系统的并行工作程度。

  • 下列关于通道、设备、设备控制器三者间关系的叙述中正确的是 通道控制设备控制器,设备控制器控制设备

CPU要完成一组I/O操作,只需要向I/O通道发送一条I/O指令,通道接到指令,通过执行通道程序,并且与设备控制器一起共同来实现对I/O设备的控制和操作。

CPU控制I/O通道,I/O通道控制设备控制器,设备控制器控制设备

通道是一种特殊的处理机,具有(执行I/O指令集)能力。

I/O通道的目的是为了建立独立的I/O通道,使得原来一些由CPU处理的I/O任务由通道来承担,从而解脱cpu。
通道所能执行的命令局限于I/O操作的指令,也就是执行I/O指令集。

虚拟存储器

虚拟存储器:它使得应用程序认为它拥有连续的可用的内存,而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。

并行技术

并行技术可以分为多进程编程和多线程编程。通常用IPC的形式来实现进程间的同步,如管道,信号量,消息队列或者共享存储。在所有IPC敏感词享存储器是最快的。

缓冲技术

缓冲技术是为了缓和CPU和I/O设备速度不匹配的矛盾,提高CPU和I/O设备的并行性,在现代操作系统中,几乎所以的I/O设备在与处理机交换数据时都用了缓存区,并提供获得和释放缓冲区的手段。
总的来说,缓冲区技术用到了缓冲区,而缓冲区的引入是为了缓和CPU和I/O设备速度不匹配,从而可以有效的减少CPU的终端频率,提高CPU和I/O设备的并行性。

单缓冲技术

  • 设从磁盘将一块数据传送到缓冲区所用实际为80μs,将缓冲区中数据传送到用户区所用时间为40μs,CPU处理数据所用的时间为30μs。则处理该数据,采用单缓冲传送磁盘数据,系统所用总时间为(120μs)。

max(磁盘到缓冲区,CPU处理) + 缓冲区到用户区 = max(80, 30) + 40 = 120

在这里插入图片描述
在这里插入图片描述
T和C并行。max(t,c)+m

缓存区存在的意义是:使用户输入数据的速度与cpu处理数据的速度相协调; 因而,用户输入数据的过程与cpu处理的过程可以并行;

双缓冲技术

在这里插入图片描述

  • 为了实现CPU与外部设备间最大的并行性,应采用 通道设备

缓冲是进一步提高两者的并行,而通道就是为了解放CPU才提出来的,如果没有通道,CPU需要对设备进行较多的控制,如何能并行?

  • 操作系统采用缓冲技术,能够减少对CPU的 中断 次数,从而提高资源的利用率。

缓冲区的作用是提高了IO速度,减少了中断的可能性

  • 在现代操作系统中采用缓冲技术的主要目的是 提高CPU与设备之间的并行程度

磁盘设备

磁盘设备的特点
传输速率较高,以数据块为传输单位
I/O控制方式常采用DMA方式
可以寻址,随即地读/写任意数据块
一段时间内只允许多个用户(进程)访问

磁盘允许一段时间内,多个进程交叉访问,对于每一时刻而言,只允许一个进程访问。
在这里插入图片描述

磁盘寻址

在这里插入图片描述

SPOOLing假脱机技术

假脱机又称为Spooling,是用来保存设备输出的缓冲区,这些设备不能接受交叉的数据流。例如打印机虽然只能一次打印一个任务,但是可能有多个程序希望希望并发打印而又不能将其输出混在一起。应用程序的输出先是假脱机到一个独立的磁盘上。当应用程序完成打印时,假脱机系统将响应的待送打印机的假脱机文件进行排队。

  • 假脱机技术中,对打印机的操作实际上是用借助磁盘存储实现的,这样实现的打印机构是 共享设备

虚拟设备是种技术,将独占设备变成共享设备

spooling技术又称“假脱机”技术 :是用软件的方式实现脱机技术 脱机技术:脱离主机的控制进行的输入/输出 操作
例子:共享打印机:打印机原本是一种“独占式”设备,使用spooling技术
可以变为逻辑上的共享设备,当多个用户进程提出打印请求时,系统会答应它们的请求,但不会真正把打印机分配给它们,而是把数据放到磁盘的输出井中,然后把该进程用户打印请求表挂到假脱机队列中,当打印机空闲时,才进行打印

  • 使用SPOOLing系统的目的是为了提高(I/O设备)的使用效率。

SPOOLing (即 外部设备 联机并行操作),即Simultaneous Peripheral Operation
On-Line的缩写,它是关于慢速 字符设备 如何与计算机主机交换信息的一种技术,通常称为“ 假脱机 技术”。 SPOOLing 技术特点:
(1)提高了I/O速度.从对低速I/O设备进行的I/O操作变为对输入井或输出井的操作,如同脱机操作一样,提高了I/O速度,缓和了CPU与低速I/O设备速度不匹配的矛盾.
(2)设备并没有分配给任何进程.在输入井或输出井中,分配给进程的是一存储区和建立一张I/O请求表.
(3)实现了虚拟设备功能.多个进程同时使用一独享设备,而对每一进程而言,都认为自己独占这一设备,不过,该设备是逻辑上的设备.

SPOOLing系统(假脱机)的特点

①提高了I/O的速度。
②将独占设备改造为共享设备。
③实现了虚拟设备功能。

虚拟设备是种技术。假脱机对设备本身而言实现了将独占设备变成共享设备

使用SPOOLing系统的目的是为了提高(I/O设备)的使用效率。

SPOOLing (即外部设备联机并行操作),即Simultaneous Peripheral Operation On-Line的缩写,它是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”。
该技术是在通道技术和多道程序设计基础上产生的,它由主机和相应的通道共同承担作业的输入输出工作,利用磁盘作为后援存储器,实现外围设备同时联机操作。
SPOOLing系统由专门负责I/O的常驻内存的进程以及输入井、输出井组成;它将独占设备改造为共享设备,实现了虚拟设备功能。

缓和CPU与低速I/O设备速度不匹配的矛盾; 实现了 虚拟设备 功能 。

虚拟设备

虚拟设备是指把一个物理设备变换成多个对应的逻辑设备。

通过SPOOLing技术可将一台物理I/O设备虚拟为多台逻辑I/O设备,允许多个用户共享一台物理I/O设备,如打印机。

IO重定向

是指将命令的执行结果重新导出到其他的设备或者文件。主要包括输入重定向和输出重定向

I/O重定向,是指用于I/O操作的设备可以更换(重定向),而不必改变应用程序。比如调试程序,可将所有输出送屏幕显示,而程序调试完后,如需正式打印出来,需将I/O重定向中的数据结构—逻辑设备表中的显示终端改为打印机。

  • 在调试程序时,可以把所有输出送到屏幕显示,而不必正式输出到打印设备,其运用了 IO重定向
  • 一计算机系统配备了三台HP1000激光打印机、一台绘图机。为此该系统需在内存中配置(2)个设备驱动程序。

分时操作系统

把计算机与许多终端用户连接起来,分时操作系统将系统 处理机
时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。分时操作系统的特点是可有效增加资源的使用率。例如UNIX系统就采用剥夺式动态优先的CPU调度,有力地支持分时操作。——百度百科词条:分时操作系统

分时会导致进程切换,效率反而不高。 应该是多道程序的出现是为了提高系统资源的利用率

  • 推动分时操作系统形成和发展的主要动力是 方便用户

分时系统可以很好的将一台计算机提供给多个用户使用,主要用于查询系统。
用户需求表现:
1人机交互
2 共享主机
3 便于用户上机

系统开销

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

技术特点:

(1)提高了I/O速度.从对低速I/O设备进行的I/O操作变为对输入井或输出井的操作,如同脱机操作一样,提高了I/O速度,缓和了CPU与低速I/O设备速度不匹配的矛盾.
(2)设备并没有分配给任何进程.在输入井或输出井中,分配给进程的是一存储区和建立一张I/O请求表.
(3)实现了虚拟设备功能.多个进程同时使用一独享设备,而对每一进程而言,都认为自己独占这一设备,不过,该设备是逻辑上的设备.

SPOOLing系统(假脱机)的特点

①提高了I/O的速度。
②将独占设备改造为共享设备。
③实现了虚拟设备功能。

虚拟设备是种技术。假脱机对设备本身而言实现了将独占设备变成共享设备

使用SPOOLing系统的目的是为了提高(I/O设备)的使用效率。

SPOOLing (即外部设备联机并行操作),即Simultaneous Peripheral Operation On-Line的缩写,它是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”。
该技术是在通道技术和多道程序设计基础上产生的,它由主机和相应的通道共同承担作业的输入输出工作,利用磁盘作为后援存储器,实现外围设备同时联机操作。
SPOOLing系统由专门负责I/O的常驻内存的进程以及输入井、输出井组成;它将独占设备改造为共享设备,实现了虚拟设备功能。

缓和CPU与低速I/O设备速度不匹配的矛盾; 实现了 虚拟设备 功能 。

虚拟设备

虚拟设备是指把一个物理设备变换成多个对应的逻辑设备。

通过SPOOLing技术可将一台物理I/O设备虚拟为多台逻辑I/O设备,允许多个用户共享一台物理I/O设备,如打印机。

IO重定向

是指将命令的执行结果重新导出到其他的设备或者文件。主要包括输入重定向和输出重定向

I/O重定向,是指用于I/O操作的设备可以更换(重定向),而不必改变应用程序。比如调试程序,可将所有输出送屏幕显示,而程序调试完后,如需正式打印出来,需将I/O重定向中的数据结构—逻辑设备表中的显示终端改为打印机。

  • 在调试程序时,可以把所有输出送到屏幕显示,而不必正式输出到打印设备,其运用了 IO重定向
  • 一计算机系统配备了三台HP1000激光打印机、一台绘图机。为此该系统需在内存中配置(2)个设备驱动程序。

分时操作系统

把计算机与许多终端用户连接起来,分时操作系统将系统 处理机
时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。分时操作系统的特点是可有效增加资源的使用率。例如UNIX系统就采用剥夺式动态优先的CPU调度,有力地支持分时操作。——百度百科词条:分时操作系统

分时会导致进程切换,效率反而不高。 应该是多道程序的出现是为了提高系统资源的利用率

  • 推动分时操作系统形成和发展的主要动力是 方便用户

分时系统可以很好的将一台计算机提供给多个用户使用,主要用于查询系统。
用户需求表现:
1人机交互
2 共享主机
3 便于用户上机

系统开销

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
[外链图片转存中…(img-NLYPoQxL-1715661369368)]
[外链图片转存中…(img-JOl9FtCl-1715661369369)]

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值