• 计算机操作系统的读书笔记


    计算机操作系统 操作系统的目标

    1、有效性 (提高系统资源利用率,提高系统的吞吐量)

    2、方便性

    3、可扩充性

    4、开发性 操作系统的作用

    1、os作为用户和计算机硬件系统之间的接口

    2、os作为计算机系统资源的管理者

    3、os实现了对计算机资源的抽象 os的定义 操作系统:是一组控制和管理计算机硬件和软件资源,合理地对各类作业进行调度,以方便用户使用的程序的集合。 实时系统 指系统能够即时响应外部事件的请求,在规定的实践内容完成对该事件的处理,并控制所有实时任务协调一致的运行。 操作系统的基本特性 分时系统具有允许用户和计算机进行人机交互特征,实时系统具有实时特性,但是它们都有并发、共享、虚拟和异步这四个基本特征。其中,并发特征是操作系统最重要的特征,其它三个特征都是以并发特征为前提的。

    并行与并发 并行性是指两个或多个事件在同一时刻发生,并发性是指两个或多个事件在同一个时间间隔内发生。 引入进程 为使多个程序能并发执行,系统必须分别为每个程序建立进程。简单来说,进程就是在系统中能独立语序并作为资源分配的基本单位,它是一组机器指令、数据和堆栈组成的,是一个能独立运行的活动实体。多个进程之间可以并发执行和交互信息。一个进程在运行是需要一定的资源,如cpu、存储空间及I/O设备。 线程:能更高效的提高系统内多个程序间并发执行的程度。 互斥共享方式:当A进程访问完并释放该资源后,才允许另一个进程对该资源进行访问。在一段时间内只允许一个进程访问的资源成为临界资源或者独占资源。 进程是以人们不可预知的速度向前推进,此为进程的异步性。 操作系统的主要功能 处理机管理,存储器管理,设备管理和文件管理。

    处理机管理功能 处理机的分配和运行都是以进程为基本单位,因而对处理机的管理归结为对进程的管理。在引入了线程的os中,有包含对线程的管理。处理机管理的主要功能是创建和撤销进程(线程),对诸进程(线程)的运行进行协调,实现进程(线程)之间的信息交换,以及按照一定的算法把处理机分配给进程(线程)。 存储器管理功能 内存分配 os在实现内存分配时,可以采取静态和动态两种方式。在静态分配方式中,每个作业的内存空间是在作业装入时确定的;在作业装入后的整个运行期间,不允许改作业再次申请新的内存空间,也不允许作业在内存中"移动"。在动态分配方式中,每个作业所要求的基本内存空间也是在装入时确定的,但允许作业在过程中继续申请新的附加内存空间,以适应程序和数据的动态增长,也允许作业在内存中移动。 设备管理器 设备管理应该具有缓冲管理、设备分配和设备处理以及虚拟设备等功能。

    模块的独立性 衡量模块的独立性有一下两个标准:

    1、内聚性 指模块内部各部分间联系的紧密程度。内聚性越高,模块的独立性越强。

    2、耦合度 指模块间互相联系和互相影响的程度。耦合度越低,模块的独立性越好。

    面向对象技术的优点

    1、通过"重用"提高产品的质量和生产率

    2、使系统具有更好的易修改性和易扩展性

    3、更易保证系统的正确性和可靠性 程序顺序执行及其特征 程序顺序执行的特征

      1、顺序性

      2、封闭性 程序是在封闭的环境下执行的,即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它。程序一旦开始执行,其执行结果不受外界因素影响。

        3、可再现性 程序并发执行时的特征 程序的并发执行,虽然提高了系统的吞吐量,但是也产生了一些与程序顺序执行时不同的特征

        1、间断性

        2、失去封闭性 程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行失去了封闭性。这样,程序在执行时,必然会受到其他程序的影响。

          3、不可再现 由于失去了封闭性,也将致使其再失去可再现性。 进程的特征和状态 进程的特征

    1、结构性 为使程序(含数据)能独立运行,应为之配置一进程控制块,即pcb(process control block),由程序段、相关数据段和pcb三部分便组成了进程实体。

    2、动态性 动态性是进程的最基本的特征,动态性还表现在:它由创建而产生,由调度而执行,由撤销而消亡。进程实体有一定的生命周期,而程序则只是一组有序指令的集合,并存放于某种介质上,其本身不具有运动的含义,因而是静态的。

    3、并发性

    4、独立性 独立性是指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。凡未建立pcb的程序都不能作为一个独立的单位参与运行。

    5、异步性 进程是程序的一次执行。

    进程是一个程序及其数据在处理机上顺序执行时所发生的活动。进程是程序在一个数据集合上运行的进程,它是系统进行资源分配和调度的一个独立单位。 进程的三种基本状态

    1、就绪状态 进程分配到除cpu以外的所有必要资源后,只要再获得cpu,便可立即执行。

    2、执行状态 进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态。在多处理机系统中,则有多个进程处于执行状态。

    3、阻塞状态 正在执行的进程由于发生某事件而暂时无法继续执行时,便放弃处理机而处于暂停状态,亦即进程的执行受到阻塞,也吧这种暂停状态称为阻塞状态,有时也称为等待或封锁状态。

    进程控制块 系统为每个进程定义了一个数据结构---进程控制块PCB(process control block),它是进程实体的一部分,是操作系统中最重要的记录型数据结构。 pcb是进程存在的唯一标志 pcb可以被操作系统中的多个模块读或修改,如调度程序、资源分配程序、中断处理程序以及监督和分析程序等读或修改。 进程标识符 进程标识符用于唯一地标识一个进程。

    一个进程通常有两种标识符:1、内部标识符

    2、外部标识符 进程控制 进程控制是进程管理最基本的功能。它用于创建一个新进程,终止一个已完成的进程,或终止一个因出现某事件而使其无法进行下去的进程,还可负责进程运行中的状态转换。 原语 原语是由若干条指令组成的,用于完成一定功能的一个过程。它与一般过程的区别是,它们是原子操作,它是一个不可分割的基本单位,因此,在执行过程中不允许被中断。原子操作在管态下执行,常驻内存。

      引起创建进程的事件

      1、用户登录

      2、作业调度 在批处理系统中,当作业调度程序按一定的算法调度到某作业时,便将该作业装入内存,为它分配必要的资源,并立即为它创建进程,再插入就绪队列中。

       3、提供服务

      4、应用请求

    进程的创建

    1、申请空白PCB

    2、为新进程分配资源

    3、初始化进程控制块

    4、讲新进程插入就绪队列 进程的阻塞是进程自身的一种主动行为。

    进程唤醒过程:首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪对列中。 进程的挂起与激活 进程的挂起 首先检查被挂起进程的状态,若处于活动就绪状态,便将其改为静止就绪;对于活动阻塞状态的进程,则将之改为静止阻塞。 进程的激活过程 系统将利用激活原语active()将指定进程激活。激活原语先将进程从外存调入内存,检查该进程的现行状态,若是静止就绪,便将之改为活动就绪;若为静止阻塞,便将之改为活动阻塞。 进程同步 进程同步的主要任务是对多个相关进程在执行次序上进行协调,以使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。

    进程两种形式的制约关系

    1、间接制约关系:源于资源共享。例子(打印机:AB进程,A进程提出打印请求,系统已经将唯一的一台打印机分配给了进程B,则此时进程A只能阻塞,B释放后才能将A的阻塞改为就绪状态。)

    2、临界资源 : 不允许消费者进程到一个空缓冲区去去产品,也不允许生产者进程向一个已装满产品且尚未被取走的缓冲区中投放产品。

      同步机制应遵循的规则

    1、空闲让进

    2、忙则等待

    3、有限等待 对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入死等状态。

    4、让权等待 当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入忙等。 经典进程的同步问题 消费者问题 利用互斥信号量mutex实现诸进程对缓冲池的互斥使用。利用信号量empty和full分别表示缓冲池中空缓冲区和满缓冲区的数量。 生产者--消费者问题中应注意:在每个程序中用于实现互斥的 wait(mutex)和signal(mutex)必须成对的出现。其次,对资源信号量empty 和full的wait和signal操作,同样需要成对地出现。 每个程序中的多个wait操作顺序不能颠倒,应先执行对资源信号量的wait操作,然后再执行对互斥信号量的wait操作,否则可能引起进程死锁。 线程 线程的基本属性 操作系统中引入线程,为了减少程序在并发执行时所付出的时空开销,使os具有更好的并发性。

    进程的基本属性:

    1、进程是一个可以拥有资源的独立单位。

    2、进程同时又是一个可独立调度和分派的基本单位。

    线程与进程的比较

    1、调度 在传统的操作系统中,作为拥有资源的基本单位和独立调度、分派的基本单位都是进程 在引入线程的操作系统中,则把线程作为调度和分派的基本单位,而进程作为资源的拥有的基本单位,把传统进程的两个属性分开,是线程基本上不拥有资源,这样线程便能轻装前进,从而显著的提高系统的并发程度。在同一个进程中,线程的切换不会引起进程的切换,但从一个进程中的线程换到另一个进程的线程时,讲会引起进程的切换。

    2、并发性 在引入线程的操作系统中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可并发执行,使得操作系统具有更好的并发性,从而能更加有效地提高系统资源的利用率和系统的吞吐量。可以显著的提高文件服务的质量和系统的吞吐量。

    3、拥有资源 进程都可以又有资源,是系统中拥有资源的一个基本单位。一般而言,线程自己不拥有系统资源(也有一点必不可少的资源),但是它可以访问其隶属进程的资源,即一个进程的代码段、数据段以及所拥有的系统资源,如已打开的文件、I/O设备等,可以改共进程所有的线程共享。

    4、系统开销 在创建或撤销进程时,系统都要为之创建和回收进程控制块,分配或回收资源,操作系统所有付出的开销明显大于线程创建或撤销时的开销。类似的,在进程切换时,谁寄到当前进程CPU环境的保存及新被调度运行进程的CPU环境的设置,而线程的切换则仅需保存和设置少量寄存器内容,不涉及存储器管理方面的操作,所以就切换代价而言,进程也是远高于线程的。 由于一个进程中的多个线程具有相同的地址空间,在同步和通信的实现方面线程也比进程容易。在一些操作系统中,线程的切换、同步和通信都无需操作系统内核的干预。

    线程的属性 每个线程都是作为利用CPU的基本单位,是话费最小开销的实体。线程具有以下属性

    1、轻型实体

    2、独立调度和分派的基本单位

    3、可并发执行

    4、共享进程资源 进程不是一个可执行的实体。 线程的实现方式

    a、内核支持线程(Macintosh和os/2操作系统)

    优点: 1. 在多处理器系统中,内核能够同时调度同一进程中的多个线程并执行

        2. 如果进程中的一个线程被阻塞了,内核可以调度该进程中的其它线程占有处理器运行,也可以运行其它进程中的线程;

        3. 内核支持线程具有很小的数据结构和堆栈,线程的切换比较快,切换开销小 4. 内核本身也可以采用多线程技术,可以提高系统的执行速度和效率。

    缺点: 1. 对于用户的线程切换而言,其模式切换的开销较大,在同一个进程中,从一个线程切换到另一个线程时,需要从用户态转到内核态进行,这是因为用户进程的线程在用户态运行,而线程调度和管理是在内核实现的,系统开销较大

    b、用户级线程(数据库管理系统如Infomix)

    优点: 1. 线程切换不需要转换到内核空间,节省了模式切换的开销,也节省了内核的宝贵资源

        2. 调度算法可以用进程专用。在不干扰操作系统调度的情况下,不同的进程可以根据自身需要,选择不同的调度算法对自己的线程进行管理和调度,而与操作系统的低级调度算法是无关的。

        3. 用户级线程的实现与操作系统平台无关,因为对于线程管理的代码是在用户程序内的,属于用户程序的一部分,所有的应用程序都可以对之进行共享。因此,用户级线程甚至可以在不支持线程机制的操作系统平台上实现。

    缺点: 1. 系统调用的阻塞问题,在基于进程机制的操作系统中,大多数系统调用将阻塞进程,因此,当线程执行一个系统调用时,不仅该线程被阻塞,而且进程内的所有线程都会被阻塞。而在内核支持线程方式中,则进程中的其他线程仍可运行

        2. 在单纯的用户级线程实现方式中,多线程应用不能利用多处理机进行多重处理的优点。内核每次分配给一个进程的仅有一个CPU,因此进程中仅有一个线程能执行,在该线程放弃CPU之前,其他线程只能等待。 一些系统如Solaris操作系统同时实现了这两种类型的线程 处理机调度与死锁 高级调度 高级调度又称为作业调度或长度调度,其主要功能是根据某种算法,把外存上处于后背队列中的那些作业调入内存,也就是说,它的调度对象是作业。 作业和作业步 作业:一个比程序更为广泛的概念,它不仅包含了通常的程序和数据,而且应该配备一份作业说明书,系统根据该说明书来对程序的运行进行控制。在批处理系统中,是以作业为基本单位从外存调入内存的。

    作业步:在作业运行期间,每个作业都必须经过若干个相对独立、又相互关联的顺序加工步骤才能得到结果,我们把其中的每一个加工步骤称为一个作业步,各作业步之间存在着相互联系。往往是把上一个作业步的输出作为下一个作业步的输入。 低级调度 低级调度称为进程调度或短程调度,它所调度的对象是进程(或内核级线程)。进程调度是最基本的一种调度,在多道批处理、分时和实时三种类型的os中,都必须配置这级调度。

    低级调度的功能 主要功能如下: 1. 保存处理机的现场信息。在进程调度进行调度时,首先需要保存当前进程的处理机的现场信息,如程序计数器、多个通用寄存器中的内容等,讲它们送入该进程的进程控制块(pcb)中的相应单元。

    2. 按某种算法选取进程。低级调度程序按某种算法如优先数算法、轮转法等,从就绪队列中选取一个进程,把它的状态改为运行状态,并准备把处理机分配给它。

    3. 把处理器分配给进程。由分配程序(Dispatcher)把处理器分配给进程。

    此时需要为选中的进程回复处理机现场,即把选中进程的进程控制块内有关处理现场的信息装入处理器相应的各个寄存器中,把处理器的控制权交给该进程,让他从取出的断点处开始继续运行。 进程调度中的三个基本机制 1、排队器 2、分派器(分派程序)

    3、上下文切换机制 进程调度方式

    a、非抢占方式 可能引起进程调度因素可归纳为如下:

       1. 正在执行的进程执行完毕,或因发生某事件而不能再继续执行;

       2. 执行中的进程因提出I/O请求而暂停执行

      3. 在进程通信或同步过程中执行了某种原语操作,如P操作(wait操作)、Block原语、Wakeup原语等。

    b、抢占方式 抢占调度方式是基本与一定原则,主要如下: 1. 优先权原则 允许优先权搞的新进到进程抢占当前进程的处理机

    2. 短作业(进程)优先原则

    3. 时间片原则 中级调度 中级调度又称中程调度。引入中级调度的主要目的是为了提高内存利用率和系统吞吐量。

    选择调度方式和调度算法的若干准则

    a、面向用户的准则

    1. 周转时间短,通常把周转时间的长短作为评价批处理系统的性能、选择作业调度方式与算法的重要准则之一。所谓周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔(称为作业周转时间)。

    它包括四部分时间:作业在外存后备队列上等待(作业调度)的时间,进程在就绪队列上等待进程调度的时间,进程在CPU上执行的时间,以及进程等待I/O操作完成的时间。

    2. 响应时间快

    3. 截止时间的保证

    4. 优先权准则

    b、面向系统的准则

    1. 系统吞吐量高

    2. 处理机利用率好

    3. 各类资源的平衡利用 调度算法 调度算法是指:根据系统的资源分配策略所规定的资源分配算法。对于不同的系统和系统目标,通常采用不同的调度算法。

    先来服务和短作业(进程)优先调度算法

    1、先来先服务(FCFS)调度算法 一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。 FCFS算法比较利于长作业(进程),而不利于短作业(进程)。

    2、短作业(进程)优先调度算法(SJ(P)F) 指对短作业或短进程优先调度的算法。可以分别作用于作业调度和进程调度。短作业优先的调度算法是从后背队列中选择一个或若干个估计运行最短的作业,将它们调入内存运行。

    缺点:

    a、该算法对长作业不利

    b、该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)会被及时处理。

    c、由于作业(进程)的长短只是根据用户所提供的估计执行时间而定,而用户又有可能会有意无意的缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业有点调度。 产生死锁的原因和必要条件 死锁:指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都讲无法向前推进。

    产生死锁的原因

    a、竞争资源 当系统中供多个进程共享的资源如打印机、公用队列等,其数目不足以满足诸进程的需要时,会引起诸进程对资源的竞争而产生死锁

    b、进程间推进顺序非法。进程在运行过程中,请求和释放的资源不当,也同样会导致产生进程死锁。 竞争资源硬气进程死锁 1、可剥夺和非剥夺性资源 系统中的资源分成两类:一类是可剥夺性资源,是指某进程在获得这类资源后,该资源可以再被其他进程或系统剥夺。

    CPU和主存均属于可剥夺性资源。 另一类资源是不可剥夺资源 ,当系统把这类资源分配给某进程后,再不能强行收回,只能在进程用完后自行释放,如磁带机、打印机等。

    2、竞争非剥夺性资源 在系统中所配置的非剥夺行资源,由于它们的数量不能满足诸进程运行的需要,会使进程在运行过程汇总。因争夺这些资源而陷入僵局。

    3、竞争临时性资源 是指由一个进程产生,被另一个进程使用一短暂时间后便无用的资源,也称之为消耗性资源,也能引起死锁。

    产生死锁的必要条件

    1、互斥条件 : 指进程对分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其他进程请求该资源,则请求者只能等待,直至占有该资源的进程用毕释放。

    2、请求和保持条件 : 指进程已经保持了至少一个资源,但有提出了新的资源请求,而该资源又已被其它进程占有,此时请求进程阻塞,但又对自己已获得的资源保持不放。

    3、不剥夺条件 : 只进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时自己释放。 4、环路等待条件:在发生死锁时,必然存在一个进程-----资源的环形链,即进程集合{P0,P1,P2。。。Pn},P0正在等待一个P1占用的资源,P1在等待P2的占有资源.....Pn正在等待的已被P0占用的资源。

    处理死锁的基本方法

    1、预防死锁 通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或几个条件,来预防发生死锁。预防死锁是一种较易实现的方法,已被广泛使用。但由于所施加的限制条件往往太严格,因而可能会导致系统资源利用率和系统吞吐量降低。

    2、避免死锁 同样属于事先预防的策略,在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。这种方法只需要事先施加较弱的限制条件,便可获得较高的资源利用率和系统吞吐量,但实现上有一定的难度。目前在比较完善的系统中使用该方法来避免发生死锁。

    3、检测死锁 允许系统在运行的过程中发生死锁。可通过系统所设置的检测机构,及时地检测出发死锁的发生,并精确的确定与死锁有关的进程和资源,然后采取适当措施,从系统中将已发生的死锁清除掉。

    4、解除死锁 与检测死锁配套的一种措施,当检测到系统中已发生死锁时,须将进程从死锁状态中解脱出来。常用的实施方法是撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已处于阻塞状态的进程,使之转为就绪状态,以继续运行。死锁的检测和接触措施有可能使系统获得较好的资源利用率和吞吐量,但在实现上难度也最大。 系统安全状态 系统的状态分为安全状态和不安全状态,只要能使系统时钟都处于安全状态,便可避免发生死锁。 安全状态 指系统能按照某种进程顺序(P1,P2,....Pn)(称(P1,P2,....Pn)序列为安全序列),来为每个进程Pi分配其所需要资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。如果系统无法找到这样一个安全序列,则系统处于不安全状态。 如果不按照安全序列分配资源,则系统可能会由安全状态进入不安全状态。

    死锁的检测与解除 死锁的检测 当系统为进程分配资源时,若未采取任何限制性措施,则系统必须提供检测和解除死锁的手段,为此,系统必须做到: 1、保存有关资源的请求和分配信息 2、提供一种算法,以利用这些信息来检测系统是否已进入死锁状态。 存储器管理 动态分区分配 动态分区分配是根据进程的实际需要,动态地为之分配内存空间。 在实现可变分区分配时,将涉及到分区分配中所用的数据结构,分区分配算法和分区的分配与回收操作三个问题。

    分区分配算法

    1、首次适应算法 倾向于优先利用内存中低址部分的空闲分区,从而保留了高址部分的大空闲区。 缺点是低址部分不断被划分,会留下许多难以利用、很小的空闲分区。无疑会增加查找可用空闲分区时的开销。

    2、循环首次适应算法 从上次找到的空闲分区的下一个空闲分区开始查找,直至一个能满足要求的空闲分区,从中划出一个块与请求大小相等的内存空间分配给作业。

    缺点:会缺乏大的空闲分区

    3、最佳适应算法 指每次为作业分配内存时,总是把能满足要求、又是最小的空闲分区分配给作业,避免“大材小用”。为了加速寻找,该算法要求所有的空闲分区按其容量以从小到大的顺序形成一个空闲分区链。 缺点:在存储器上留下许多难以利用的小空闲区

    4、最坏适应算法 要扫描整个空闲分区表或链表,总是挑选一个最大的空闲区分割给作业使用,其优点是可使剩下的空闲区不至于太小,产生碎片的几率最小,对中、小作业有利,同时最坏适应分配算法查找效率很高。 缺点:它会使存储器缺乏大的空闲分区。 最坏适应算法与首次适应算法、循环首次适应算法、最佳适应算法一起,也称为顺序搜索法。

    5、快速适应算法 又称为分类搜索法,将空闲分区根据其容量大小进行分类,对于每一类具有相同容量的所有空闲分区,单独设立一个空闲分区链表。 优点:查找效率高,保留大的分区,不会产生内存碎片。 缺点:分区归还主存时算法复杂,系统开销较大。

    分区分配操作 主要操作是分配内存和回收内存

    1、分配内存 设请求的分区大小为u.size,表中每个空闲分区的大小可表示为 m.size。若m.size-u.size<=size(size是实现规定的不可再分割的剩余分区的大小)

    2、回收内存 当进程运行完并释放内存时,系统根据回收区的首址,从空闲区链(表)中找到相应的插入点。 基本分页存储管理方式 如果离散分配的基本单位是页,则称为分页存储管理方式。如果离散分配的基本单位是段,则称为分段存储管理方式。 页面 分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页。相应的,把内存空间分成与页面相同大小的若干个存储块,也称为(物理)块或页框(frame),同样也为它们加以编号。 页面大小 页面的大小选择适中,且大小应为2的幂,通常为512B-8KB。 页表 页表的作用是实现从页号到物理块号的地址映射。 地址变换机构 为了能将用户地址空间中的逻辑地址变为内存空间中的物理地址,在系统中必须设置地址变换机构。该机构的基本任务是实现从逻辑地址到物理地址的转换。 因此,地址变换机构的实际任务就是讲逻辑地址中的页号,转换为内存的物理块号。 基本的地址变换机构 页表的功能可以由一组专门的寄存器来实现。一个页表用一个寄存器。由于寄存器具有较高的访问速度,因而有利于提高地址变换的速度。页表大多驻留在内存中。 若未出现越界错误,则讲页表始址与页号和页表长度的乘积相加,便得到该表项在页表中的位置,于是可从中得到该页的物理块号。 具有快表的地址变换机构 第一次是访问内存中的页表,从中找到指定页的物理块号,再将块号与业内偏移量W拼接,以形成物理地址。第二次访问内存时,才是从第一次所得地址中获得所需数据(或向此地址中写入数据) 为了提高地址变换速度,可在地址变换机构中增设一个具有并行查寻能力的特殊告诉缓冲寄存器 ,又称为“联想寄存器”,或称为“快表”。 在CPU开出有效地址后,由地址变换机构自动地将页号P送入高速缓冲寄存器,并将此页号与高速缓存中的所有页号进行比较,若其中有与此相匹配的页号,便表示所要访问的页表项在快表中。可直接从快表中读出该页所对应的物理块号,并送到物理地址寄存器中。如在快表中未找到相对应的页表项,则还须再访问内存中的页表,找到后,把页表项中读出的物理块号送地址寄存器。 两级与多级页表 为解决页表非常大,占用相当大的内存空间问题: 1. 采用离散分配方式来解决难以找到一块连续的大内存空间的问题

    2. 只将当前需要的部分分页表项调入内存,其余页表项仍驻留在磁盘上,需要时再调入。 段表: 在系统中为每个进程建立一张段映射表,简称“段表”。每个段在表中占有一个表项,其中记录了该段在内存中的起始地址(又称为基址)和段的长度。 分页和分段的主要区别 1、页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头。分页仅仅是由于系统管理的需要而不是用户的需要,段则是信息的逻辑单位。 2、页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,在系统中只能有一种大小的页面;而段的长度缺不固定,决定于用户所编写的程序。

    3、分页的作业地址空间是一维的,即单一的线性地址空间。 虚拟存储器的基本概念 前面介绍的各种存储器管理方式有一个共同的特点,即它们都要求将一个作业全部装入内存后方能运行,于是有下面两种情况: 1. 有的作业很大,其所要求的内存空间超过了内存总容量,作业不能全部被装入内存,致使该作业无法运行 2. 有大量作业要求运行,但由于内存容量不足以容纳所有这些作业,只能将少数作业装入内存让它们先运行,而将其他大量的作业留在外存上等待。 出现上述情况的原因是内存容量不够大。解决方法A、从物理上增加内存容量。B、从逻辑上扩充内存容量。(这正是虚拟存储技术所要解决的主要问题。) 常规存储器管理方式的特征 1、一次性 2、驻留性 局限性原理 1、时间局限性。如果程序中的某条指令一旦执行,则不久以后该指令可能再次执行;如果某数据被访问过,则不久以后该数据可能再次被访问。 2、空间局限性 一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内访问的地址,可能集中在一定的范围之内。 虚拟存储器的定义 仅须将那些当前要运行的少数页面或段先装入内存便可运行,其余部分暂留在盘上。 所谓虚拟存储器,是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。 虚拟存储器的实现方法

    1、分页请求系统 a、硬件支持 主要的硬件支持有:

    1、请求分页的页表机制 ,它是在纯分页的页表机制上增加若干项而形成的,作为请求分页的数据结构 2、缺页中断机构:即每当用户程序要访问的页面尚未调入内存时,便产生一缺页中断,以请求OS将所 缺的页调入内存; 3、地址变换机构 ,他同样是在纯分页地址变换机构的基础上发展形成的。0 b、实现请求分页的软件 用于实现请求调页的软件和实现页面置换的软件。 2、请求分段系统 一般需要下列支持: a、请求分段的段表机制。这是在纯分段的段表机制基础上增加若干项而形成的。

    b、缺段中断机构 每当用户程序所要访问的段尚未调入内存时,产生一个缺段中断,请求OS将所缺的段调入内存。 c、地址变换机构。 与请求调页相似,实现请求掉段和段的置换功能也须得到相应的软件支持。 虚拟存储器的特征 虚拟存储器具有多次性、对换性和虚拟性三大主要特征。 虚拟性是指能够从逻辑行扩充内存容量,使用户所看到的内存容量远大于实际内存容量。 请求分页便成为目前最常用的一种实现虚拟存储器的方式。 请求分页中的硬件支持 1、页表机制

    2、缺页中断机构 与一般的中断相比,有明显的区别,主要表现在一下方面:

    a、在指令执行期间产生和处理中断信号。 缺页中断是在指令执行期间,发现所要访问的指令或数据不在内存时所产生和处理的。 b、一条指令在执行期间,可能产生多次缺页中断。

    3、地址变换机构 内存分配策略和分配算法

    1、量小物理块数的确定

    2、物理块的分配策略

    a、固定分配局部变量置换

    b、可变分配全局置换

    c、可变分配局部置换

    3、物理块分配算法 a、平均分配算法 b、按比例分配算法 c、考虑优先权的分配算法 最佳置换算法和先进先出的置换算法 最佳置换算法 其所选择的被淘汰页面,将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面。 先进先出(FIFO)页面置换算法 总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。 最近最久未使用(LRU)置换算法 LRU(Least Recently Used)置换算法的描述 LRU置换算法是选择最近最久未使用的页面予以淘汰。 LRU置换算法的硬件支持 须有两类硬件之一的支持:寄存器或栈 I/O系统 I/O系统是实现数据输入、输出及数据存储的系统。 缓冲池 缓冲池的组成 1、空(闲)缓冲区 2、装满输入数据的缓冲区 3、装满输出数据的缓冲区 SPOOLing技术 SPOOLing技术是讲一台物理I/O设备虚拟为多台逻辑I/O设备,同样允许多个用户共享一台物理I/O设备。 外存分配方式 外存分配方法有连续分配、链接分配和索引分配三种。 采用连续分配方式的文件物理结构,将是顺序式的文件结构;链接分配方式将形成链接式文件结构;而索引分配方式则将形成索引式文件结构。 连续分配方式 连续分配要求为每一个文件分给一组相邻的盘块。这种分配方式保证了逻辑文件中的记录顺序与存储器中文件占用盘快的一致性。

    连续分配的主要优点

    1、顺序访问容易

    2、顺序访问速度快

    缺点: 1、要求有连续的存储空间 2、必须事先知道文件的长度

    OSI/RM的低三层

    1、物理层(TCP/IP的网络访问层)

    2、数据链路层 (TCP/IP的网络访问层)

    3、网络层 (TCP/IP的网络互连层)

    OSI/RM的高四层

    1、传输层 (TCP/IP的传输层 TCP,UDP)

    2、会晤层 (TCP/IP的应用层 各种应用层协议,如TELNET,FIP,SMTP)

    3、表示层 (TCP/IP的应用层 各种应用层协议,如TELNET,FIP,SMTP)

    4、应用层。 (TCP/IP的应用层 各种应用层协议,如TELNET,FIP,SMTP)

    负重前行
  • 相关阅读:
    asp.net core 使用 signalR(一)
    实现一个基于码云的Storage
    架构设计原则
    给 asp.net core 写个中间件来记录接口耗时
    [svc]ext4文件删除&访问原理
    [svc]为何linux ext4文件系统目录默认大小是4k?
    [svc]traceroute(udp+icmp)&tracert(icmp)原理
    [jk]服务器远控卡及kvm切换器
    [svc]find+xargs/sed&sed后向引用+awk多匹配符+过滤行绝招总结&&产生随机数
    [svc]linux正则及grep常用手法
  • 原文地址:https://www.cnblogs.com/astride/p/11084163.html
Copyright © 2020-2023  润新知