满分150分,数据结构45分,计算机组成原理45分,操作系统30分,计算机网络30分。
80分选择题和70分大题

数据结构

操作系统

第一章 计算机系统概述

  • 操作系统的基本类型:批处理操作系统、分时操作系统、实时操作系统

  • 多道程序操作系统和多任务操作系统
    多任务操作系统具有并发和并行的优点,可以在单CPU硬件平台上运行。【2018年 统考真题】
    多任务操作系统中,CPU与外部设备并行工作,CPU与内存并发工作。所以说他有并发和并行的特点。

  1. 多道程序操作系统允许多个程序同时驻留在内存中,提高资源利用率并减少空闲时间。
  2. 多任务操作系统使单个用户能够通过在多个任务或应用程序之间快速切换来同时处理多个任务或应用程序。
  3. 多道程序和多任务操作系统都以提高效率和生产力为目标,但侧重点不同,强调资源利用,多任务则注重用户体验。
  • 中断程序本身可能是用户程序,但是进入中断的处理程序一定是OS程序
  • 下列选项中,不可能在用户态发生的是:A.系统调用 B.外部中断 C.进程切换 D.缺页 ans:C【2012 统考真题】
  • 子程序调用只需要保存程序断点,即该指令下一条指令的地址;中断处理程序不仅如此,还需要保存程序状态字寄存器PSW的内容【2012 统考真题】

子程序调用指令是指调用子程序指令,包括调用指令(转子指令)和返回指令(返主指令)。在进行程序设计时,一般都把常用的程序段编写成独立的子程序或过程,在需要时随时调用,调用子程序需要用到调用指令。子程序执行完毕,就需要用返回指令返回到主程序

  • PC值(断点)由中断隐指令自动保存;
    而通用寄存器、中断屏蔽字由操作系统保存,中断向量表由操作系统初始化;
    psw的保存由硬件完成。【2015 2022 统考真题】
  • 微内核通常包含:
    • 与硬件处理紧密相关的部分
    • 一些比较基本的功能
    • 客户端与服务器之间的通信
  • 引导程序分为两种
    • 自举程序(BIOS的组成部分),位于ROM,用于启动具体设备
    • 操作系统的引导程序(启动管理器),位于装有操作系统硬盘的活动分区的引导扇区中的引导程序(称为启动管理器)
  • 常驻内存的只是操作系统内核,其他部分仅在需要时调入
  • 在操作系统初始化过程中需要创建中断向量表,以实现通电自检POST,CPU检查到中断信号后,根据中断号查询中断向量表,跳转到相应的中断处理程序


综合应用题

  • 说明库函数与系统调用的区别和联系。

库函数是语言或应用程序的一部分,可以运行在用户空间中。
而系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在内核空间中,而且许多库函数都会使用到系统调用来实现功能。未使用系统调用的库函数,其执行效率通常要比系统调用高。因为使用系统调用时,需要上下文切换及状态转换(由用户态转到核心态)

  • 批处理操作系统、分时操作系统和实时操作系统各有什么特点。

批处理操作系统的用户脱机使用计算机,作业是成批处理的,系统内多道程序并发执行,交互能力差;
分时操作系统可以让多个用户同时使用计算机,人机交互能力强,具有每个用户独立使用计算机的独占性,系统响应及时;
实时操作系统能对控制对象做出及时反应,可靠性高,响及时,但资源利用率低。

“计算机独占性” 是分时操作系统的一项关键特性,它使得每个用户感觉自己在独占整个计算机系统,尽管实际上计算资源是被多个用户共享的,并且系统能够及时地响应每个用户的操作。

  • 处理器为什么要区分核心态和用户态两种操作方式?什么情况下进行两种方式的切换?

区分执行态的主要目的是保护系统程序。用户到核心态的转换发生在中断产生时,而核心态到用户态的转换则发生在中断返回用户程序时。

  • 为什么说直到出现中断和通道技术后,多道程序概念才变得有用?

多道程序并发执行是指有的程序正在 CPU 上执行,而另一些程序正在 I/O 设备上进行传输,即通过 CPU 操作与外设传输在时间上的重叠必须有中断和通道技术的支持,原因如下:
(1)通道是一种控制一台或多台外部设备的硬件机构,它一旦被启动就独立于 CPU 运行,因而做到了输入/输出操作与 CPU 并行工作。但早期 CPU 与通道的联络方法是由 CPU 向通道发出询问指令来了解通道工作是否完成的。若未完成,则主机就循环询问直到通道工作结束为止。因此,这种询问方式是无法真正做到 CPU 与 I/O 设备并行工作的。
(2)在硬件上引入了中断技术。所谓中断,就是在输入/输出结束时,或硬件发生某种故障时,由相应的硬件(即中断机构)向 CPU 发出信号,这时 CPU 立即停下工作而转向处理中断请求,待处理完中断后再继续原来的工作。
因此,通道技术和中断技术结合起来就可实现 CPU 与 I/O 设备并行工作,即 CPU 启动通道传输数据后便去执行其他程序的计算工作,而通道则进行输入/输出操作;当通道工作结束时,再通过中断机构向 CPU 发出中断请求, CPU 则暂停正在执行的操作,对出现的中断进行处理,处理完后再继续原来的工作。这样,就真正做到了 CPU 与 I/O 设备并行工作。此时,多道程序的概念才变为现实。

  • 甘特图

1、横坐标写时间间隔,纵坐标写程序名字
2、表出任务执行时间点(执行到哪,虚线垂直到时间轴,下图没画)
3、用不同的线区分不同的资源(直线、波浪线、虚线),图中用颜色和图例,也可以把CPU、设备甲乙标在直线上面


第二章 进程与线程

  • 现在单处理机中有10个进程,边界情况有:10个都处于阻塞态,但不可能10个都处于就绪态(可以9个处于就绪态,1个处于运行态)
  • 系统进程请求一次I/O操作后,由运行态进入阻塞态(等待),I/O操作完成后,由阻塞态变为就绪态
  • 程序的封闭性是指进程执行结果只取决于进程本身
  • C语言编写的程序使用内存时一般分为三个段:正文段(即代码和赋值数据段)、数据堆段数据栈段;二进制和常量存放在正文段;动态分配的存储区在数据堆段,临时使用的变量在数据栈段。
  • 相同的程序代码经过多次创建可对于不同的进程,而同一系统的进程(或线程)可以由系统调用的方法被不同进程(或线程)使用。

例子:Web 服务器并发处理

假设你正在编写一个简单的 Web 服务器,用于处理客户端的请求并提供网页。在这个例子中,你可以考虑以下层次的结构:

  1. 进程(Process): 你的 Web 服务器整体作为一个进程运行。这个进程负责管理服务器的整个生命周期,包括监听连接、接受请求、处理请求等。这个进程拥有独立的资源,如内存、文件句柄等。
  2. 线程(Thread): 在主 Web 服务器进程中,你可以创建多个线程,每个线程负责处理一个客户端连接。这些线程共享进程的资源,如内存空间、文件句柄等。每个线程都独立地从客户端接受请求、处理请求并发送响应。这些线程可以在同一进程内并发执行,提高了服务器的并发性能。
  3. 子进程(Child Process): 在某些情况下,你可能需要为每个客户端连接创建一个独立的子进程。这样的子进程从父进程中派生出来,有自己独立的资源。每个子进程可以在不同的 CPU 核心上并行运行,处理不同的客户端连接。这种方式可以实现更高的并行性,但也需要更多的系统开销。
  4. 子线程(Child Thread): 在某个线程内,你可能需要创建更细粒度的子线程来处理特定任务。这些子线程仍然共享父线程的资源,但可以并发地执行不同的任务。例如,一个线程负责请求的处理,而在这个线程内部,你可以创建子线程来同时进行数据库查询和数据处理等操作。

总之,这个例子展示了进程、子进程、线程和子线程之间的关系。进程是整个 Web 服务器的执行环境,线程是在进程内部用于并发处理客户端连接的执行单元,子进程可以更进一步派生出独立的处理单元,而子线程可以在特定线程内部用于更细粒度的并发任务处理。根据需求,你可以灵活地选择如何组织这些执行单元以满足性能和资源利用等要求。

  • 就绪态:等待CPU;阻塞态:等待资源
  • 进程通信的方式主要有:管道、消息传递、共享内存、文件映射、套接字……
  • 进程的时间片用完可以降低其优先级
  • ✘ 操作系统为每个用户级线程建立一个TCB【2019 统考真题】
    在多线程模型中,用户级线程与内核级线程的连接方式有“一对一”、“多对一”、“多对多”
  • 用户级线程的管理工作可以只在用户空间进行,因此可以在不支持内核级线程的操作系统是进行
  • 为了节省开销,不同的进程可以根据自身需要,对自己的线程选择不同的调度算法。
  • FCFS 调度算法比较有利于长作业,而不利于短作业。CPU 繁忙型作业是指该类作业需要占用很长的CPU 时间,而很少请求 /0 操作,因此CPU 繁忙型作业类似于长作业,采用 FCFS 可从容完成计算。
    I/0 繁忙型作业是指作业执行时需频繁请求 I/O 操作,即可能频繁放弃 CPU,所以占用 CPU 的时间不会太长,一旦放弃 CPU,则必须重新排队等待调度,故采用 SJF 比较适合。
  • 中断向量本身是用于存放中断服务例行程序的入口地址,因此中断向量地址就应是该入口地址的地址
  • 临界资源共享资源的区别在于,在一段时间内能否允许被多个进程访问(并发使用),然磁盘属于共享设备。
  • 若代码可被多个进程在任意时刻共享,则要求任意一个进程在调用此段代码时都以同样的方式运行,而且进程在运行过程中被中断后再继续执行,其执行结果不受影响。这必然要求代码不能被任何进程修改,否则无法满足共享的要求。这样的代码就是可重入代码也称纯代码,即允许多个进程同时访问的代码。
  • 管程翻一下书,王道p93


综合应用题

  • 进程和线程之间可以形成 一对一、一对多、多对一、多对多 的关系请分别举例说明在什么情况下会形成这种关系。

执行一条命令或运行一个应用程序时,进程和程序之间形成一对一的关系。进程在执行过程中可以加载执行不同的应用程序,从而形成一对多的关系;以不同的参数或数据多次执行同一个应用程序时,形成多对一的关系;并发地执行不同的应用程序时,形成多对多的关系。

  • 父进程创建的子进程和主程序调用的子程序有何不同?

父进程创建子进程后,父进程与子进程同时执行(并发)。主程序调用子程序后,主程序暂停在调用点,子程序开始执行,直到子程序返回,主程序才开始执行。

  • 为何进程之间的通信必须借助于操作系统内核功能? 简单说明进程通信的几种主要方式。

每个进程有自己独立的地址空间。在操作系统和硬件的地址保护机制下,进程无法访问其他进程的地址空间,必须借助于系统调用函数实现进程之间的通信。
进程通信的主要方式有:
1)共享内存区。通过系统调用创建共享内存区。多个进程可以(通过系统调用)连接同一个共享内存区,通过访问共享内存区实现进程之间的数据交换。使用共享内存区时需要利用信号量解决同步互斥问题。
2)消息传递。通过发送/接收消息,系统调用实现进程之间的通信。当进程发送消息时,系2统将消息从用户缓冲区复制到内核中的消息缓冲区,然后将消息缓冲区挂入消息队列。进程发送的消息保持在消息队列中,直到被另一进程接收。当进程接收消息时,系统从消息队列中解挂消息缓冲区,将消息从内核的消息缓冲区中复制到用户缓冲区,然后释放消息缓冲区。
3)管道系统。管道允许两个进程按标准的生产者-消费者方式进行通信:生产者向管道的一端(写入端)写,消费者从管道的另一端(读出端)读。管道只允许单向通信。在读/写过程中,操作系统保证数据的写入顺序和读出顺序是一致的。
4)共享文件。利用操作系统提供的文件共享功能实现进程之间的通信。这时,也需要信号量来解决文件共享操作中的同步和互斥问题。

  • 什么是多线程? 多线程与多任务有什么区别?

多线程是指在一个程序中可以定义多个线程并同时运行它们,每个线程可以执行不同的任务
多线程与多任务的区别: 多任务是针对操作系统而言的,代表操作系统可以同时执行的程序个数; 多线程是针对一个程序而言的,代表一个程序可以同时执行的线程个数,而每个线程可以完成不同的任务。

  • 回答下列问题:
    1)若系统中没有运行进程,是否一定没有就绪进程? 为什么?
    2)若系统中既没有运行进程,又没有就绪进程,系统中是否就没有进程? 为什么?
    3)在采用优先级进程调度时,运行进程是否一定是系统中优先级最高的进程?

1)是。若系统中未运行进程,则系统很快会选择一个就绪进程运行。只有就绪队列中无进程时,CPU才可能处于空闲状态。
2)不一定。因为系统中的所有进程可能都处于等待态,可能处于死锁状态,也有可能因为等待的事件未发生而进入循环等待态。
3)不一定。因为高优先级的进程有可能正处在等待队列中,进程调度会从就绪队列中选择一个进程占用 CPU,这个被选中的进程可能优先级较低。

  • 现代操作系统一般都提供多进程 (或称多任务) 运行环境,回答以下问题:
    1)为支持多进程的并发执行,系统必须建立哪些关于进程的数据结构?
    2)为支持进程状态的变迁,系统至少应提供哪些进程控制原语?
    3)执行每个进程控制原语时,进程状态发生什么变化? 相应的数据结构发生什么变化?

1)为支持多进程的并发执行,系统为每个进程建立了一个数据结构: 进程控制块(PCB)用于进程的管理和控制。PCB 中记录了有关进程的一些描述信息和控制信息,包括进程标识符、进程当前的状态、优先级、进程放弃 CPU 时的现场信息,以及指示组成进程的程序和数据在存储器中存放位置的信息、资源使用信息、进程各种队列的连接指针和反映进程之间的隶属关系的信息等。
2)在进程的整个生命周期中,会经历多种状态。进程控制的主要职能是对系统中所有进实施有效的管理,它具有创建新进程、撤销已有进程、实现进程的状态转换等功能。在操作系统内核中,有一组程序专门用于完成对进程的控制,这些原语至少需要包括创建新进程原语、阻塞进程原语、唤醒进程原语、终止进程原语等操作。系统服务对用户开放,即用户可以通过相应的接口来使用它们。
3)进程创建原语:从PCB 集合中申请一个空白的PCB将用者参数(如外部标符初始 CPU状态、进程优先数、初始内存及申请资源清单等)添入该PCB,设置记账数据置新进程为“就绪”态。
终止进程原语: 用于终止完成的进程,回收其所占资源。包括消去其资源描述块,消去进程的PCB。
阻塞原语: 将进程从运行态变为阻塞态。进程被插入等待事件的队列,同时修改PCB中相应的表项,如进程状态和等待队列指针等。
唤醒原语: 将进程从阻塞态变为就绪态。进程从阻塞队列中移出,插入就绪队列,等待调度,同时修改PCB 中相应的表项,如进程状态等。

  • 为什么说多级反馈队列调度算法能较好地满足各类用户的需要?

多级反馈队列调度算法能较好地满足各种类型用户的需要。
对终端型作业用户而言,由于它们提交的作业大多属于交互型作业,作业通常比较短小,系统只要能使这些作业在第 1 级队列所规定的时间片内完成,便可使终端型作业用户感到满意;
对于短批处理作业用户而言,它们的作业开始时像终端型作业一样,若仅在第 1 级队列中执行一个时间片即可完成,便可获得与终端型作业一样的响应时间,对于长的作业,通常也只需要在第 2 级队列和第3 级队列中各执行一个时间片即可完成,其周转时间仍然较短;
对于长批处理作业用户而言,它们的长作业将依次在第 1,2.n 级队列中运,然后按时间片轮转方式运,用户不必心其作业长期得不到处理。

  • 何谓管程?管程由几部分构成?说明引入管程的必要性?

 当共享资源用共享数据结构表示时,资源管理程序可用对该数据结构进行操作的一组过程来表示,如资源的请求和释放过程 request 和release。把这样一组相关的数据结构和过程一并归为管程。Hansan 为管程所下的定义是:“一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据。”由定义可知,管程由三部分组成:
 1)局部于管程的共享变量说明
 2)该数据结构进行操作的一组过程
 3)对局部于管程的数据设置初始值的语句;此外,还需为该管程赋予一个名字。
 管程的引入是为了解决临界区分散所带来的管理和控制问题。在没有管程之前,对临界区的访问分散在各个进程之中,不易发现和纠正分散在用户程序中的不正确使用 PV操作等问题。管程将这些分散在各进程中的临界区集中起来,并加以控制和管理,管程一次只允许一个进程进入管程内,从而既便于系统管理共享资源,又能保证互斥。

  • 进程间存在哪几种制约关系?各是什么原因引起的?

 进程之间存在两种制约关系,即同步和互斥。
 同步是由于并发进程之间需要协调完成同一个任务时引起的一种关系,是一个进程等待另一个进程向它直接发送消息或数据时的一种制约关系。
 互斥是由并发进程之间竞争系统的临界资源引起的,是一个进程等待另一个进程已经占有的必须互斥使用的资源时的一种制约关系。


第三章 内存管理

  • 实现分页、分段和段页式存储管理需要特定的数据结构支持,如页表、段表等。为了提高性能,还需要硬件提供快存和地址加法器等,代价高。分区存储管理是满足多道程序设计的最简单的存储管理方案,特别适合嵌入式等微型设备。

  • 程序的动态链接与程序的逻辑结构相关,分段存储管理将程序按照逻辑段进行划分,因此有利于其动态链接。其他的内存管理方式与程序的逻辑结构无关。

  • 共享段的分配与回收

    (1)共享段的分配

    由于共享段是供多个进程所共享的,因此,对共享段的内存分配方法与非共享段的内存分配方法有所不同。在为共享段分配内存时,对第一个请求使用该共享段的进程,由系统为该共享段分配一物理区,再把共享段调入该区,同时将该区的始址填入请求进程的段表的相应项中,还须在共享段表中增加一表项,填写有关数据,把 count 置为 1;之后,当又有其它进程需要调用该共享段时,由于该共享段已被调入内存,故此时无须再为该段分配内存,而只需在调用进程的段表中增加一表项,填写该共享段的物理地址;在共享段的段表中,填上调用进程的进程名、存取控制等,再执行 count :=count+1 操作,以表明有两个进程共享该段。

    (2)共享段的回收

    当共享此段的某进程不再需要该段时,应将该段释放,包括撤消在该进程段表中共享段所对应的表项,以及执行 count :=count-1 操作。若结果为 0,则须由系统回收该共享段的物理内存,以及取消在共享段表中该段所对应的表项,表明此时已没有进程使用该段;否则(减 1 结果不为 0),只是取消调用者进程在共享段表中的有关记录。

  • 页缓冲队列是将被淘汰的页面缓存下来,暂时不写回磁盘,队列长度会影响页面置换的速度,但不会影响缺页率

  • 覆盖技术虚拟存储技术有何本质不同?交换技术与虚拟存储技术中使用的调入调出技术有何相同与不同之处?

1)覆盖技术与虚拟存储技术最本质的不同在于,覆盖程序段的最大长度要受内存容量大小的限制,而虚拟存储器中程序的最大长度不受内存容量的限制,只受计算机地址结构的限制。另外,覆盖技术中的覆盖段由程序员设计,且要求覆盖段中的各个覆盖具有相对独立性,不存在直接联系或相互交叉访问;而虚拟存储技术对用户的程序段没有这种要求。
2)交换技术就是把暂时不用的某个程序及数据从内存移到外存中,以便腾出必要的内存空间,或把指定的程序或数据从外存读到内存中的一种内存扩充技术。交换技术与虚存中使用的调入/调出技术的主要相同点是,都要在内存与外存之间交换信息。交换技术与虚存中使用的调入/调出技术的主要区别是:交换技术调入/调出整个进程,因此一个进程的大小要受内存容量大小的限制,而虚存中使用的调入/调出技术在内存和外存之间来回传递的是页面或分段,而不是整个进程,从而使得进程的地址映射具有更大的灵活性,且允许进程的大小比可用的内存空间大。


综合应用题

  • 动态分区与固定分区分配方式相比,是否解决了碎片问题

动态分区和固定分区分配方式相比,内存空间的利用率要高一些。但是,总会存在一些分散的较小空闲分区,即外部碎片,它们存在于已分配的分区之间,不能充分利用。可以采用拼接技术加以解决。固定分区分配方式存在内部碎片,而无外部碎片;动态分区分配方式存在外部碎片无内部碎片。


第四章 文件管理

  • UNIX 操作系统中,所有设备都被视为特殊的文件,因为UNIX 操作系统控制和访问外部设备的方式和访问一个文件的方式是相同的。

  • 系统级安全管理包括注册和登录

  • 磁带是一种顺序存储设备,用它存储文件时只能采用顺序存储结构

  • 无论是顺序存取还是随机存取,顺序文件通常都是速度最快的(因为多几次磁盘IO?)

  • 为了实现快速随机播放,要保证最短的查询时间,即不能选取链表和索引结构,因此连续结构最优。

  • 提前读是指在读当前盘块时,将下一个可能要访问的盘块数据读入缓冲区,以便需要时直接从缓冲区中读取,提高了文件的访问速度。

  • 从系统角度看,文件系统负贵对文件的存储空间进行组织、分配,负责文件的存储并对存入文件进行保护、检索。从用户角度看,文件系统根据一定的格式将用户的文件存放到文件存储器中适当的地方,当用户需要使用文件时,系统根据用户所给的文件名能够从文件存储器中找到所需要的文件。

  • 传统文件系统管理空闲磁盘的方法包括空闲表法、空闲链表法、位示图法和成组链接法。文件分配表(FAT的表项与物理磁盘块一一对应,并且可以用一个特殊的数字-1表文件的最后一块,用-2 表示这个磁盘块是空闲的(当然也可用-3-4 来表示),因此FAT 不仅记录了文件中各个块的先后链接关系,同时还标记了空闲的磁盘块,操作系统可以通过 FAT 对文件存储空间进行管理


综合应用题

  • 简述文件外存分配中,连续分配、链接分配和索引分配的主要优缺点

连续分配方式的优点是可以随机访问(磁盘),访问速度快;缺点是要求有连续的存储空间,容易产生碎片,降低磁盘空间利用率,并且不利于文件的增长扩充。
链接分配方式的优点是不要求连续的存储空间,能更有效地利用磁盘空间,并且有利于扩充文件;缺点是只适合顺序访问,不适合随机访问,另外,链接指针占用一定的空间,降低了存储效率,可靠性也差。
索引分配方式的优点是既支持顺序访问又支持随机访问,查找效率高,便于文件删除;缺点是索引表会占用一定的存储空间。


第五章 输入/输出(I/O)管理

  • 字符设备不可寻址到字节,独占设备可能引起死锁,共享设备不会,共享设备是一段时间内可同时访问,而不是同一时间。共享设备必须是可寻址和可随机访问的设备。
  • 字节多路通道,它通常含有许多非分配型子通道,其数量可达几十到几百个,每个通道连接一台 I/O 设备,并控制该设备的 I/O 操作。这些子通道按时间片轮转方式共享主通道。各个通道循环使用主通道,各个通道每次完成其 I/O 设备的一个字节的交换,然后让出主通道的使用权。这样,只要字节多路通道扫描每个子通道的速率足够快,而连接到子通道上的设备的速率不太高时,便不至于丢失信息。
  • 计算机系统为每台设备确定一个编号以便区分和识别设备,这个确定的编号称为设备的绝对号
  • 系统调用是操作系统提供给用户程序的通用接口,属于设备无关软件的功能,不会因为具体设备的不同而改变。而设备驱动程序负责执行操作系统发出的I/O 命,它因设备不同而不同。
  • 在缓冲机制中,无论是单缓冲、多缓冲还是缓冲池,由于缓冲区是一种临界资源,所以在使用缓冲区时都有一个申请和释放(即互)的问题需要考虑。
  • SPOOLing 系统主要包含三部分,即输入井和输出井、输入缓冲区和输出缓冲区以及输入进程和输出进程。这三部分由预输入程序、井管理程序和缓输出程序管理,以保证系统正常运行。
  • SPOOLing 技术需要使用磁盘空间(输入井和输出井和内存空间(输入/输出缓冲区),不需要外围计算机的支持。
  • 绝大多数操作系统为改善磁盘访问时间,以(文件系统)为单位进行空间分配

综合应用题

  • DMA方式与中断控制方式的主要区别是什么?

1)中断控制方式在每个数据传送完成后中断 CPU,而 DMA 控制方式则在所要求传送的一批数据全部传送结束时中断 CPU。
2)中断控制方式的数据传送在中断处理时由 CPU 控制完成,而DMA 控制方式则在DMA控制器的控制下完成。不过,在 DMA 控制方式中,数据传送的方向、存放数据的内存始址及传送数据的长度等仍然由 CPU 控制。
3)DMA方式以存储器为核心,中断控制方式以CPU为核心。因此DMA方式能与CPU并行工作。
4)DMA 方式传输批量的数据,中断控制方式的传输则以字节为单位

  • DMA方式与通道方式的主要区别是什么?

在 DMA 控制方式中,在 DMA 控制器控制下设备和主存之间可以成批地进行数据交换而不用 CPU 干预,这样既减轻了 CPU 的负担,又大大提高了 I/O 数据传送的速度。通道控制方式与 DMA 控制方式类似,也是一种以内存为中心实现设备与内存直接交换数据的控制方式。不过在通道控制方式中,CPU 只需发出启动指令,指出通道相应的操作和 I/O 设备,该指令就可以启动通道并使通道从内存中调出相应的通道程序执行。与DMA 控制方式相比,通道控制方式所需的 CPU 干预更少,并且一个通道可以控制多台设备,进一步减轻了 CPU 的负担。另外,对通道来说,可以使用一些指令灵活改变通道程序,这一点 DMA 控制方式无法做到。

  • 用于设备分配的数据结构有哪些?它们之间有什么关系?

用于设备分配的数据结构有系统设备表(SDT)设备控制(DCT)(COCT)和通道控制表(CHCT)。
SDT 整个系统中只有一张,它记录系统中全部设备的情况,是系统范围的数据结构。
每个设备有一张 DCT,系统为每个设备配置一张 DCT,以记录本设备的情况。
每个控制器有一张COCT,系统 每个控制器都设置一张用于记录本控制器情况的COCT。
系统为每个通道配置一张CHCT以记录通道情况。
SDT中每个表目有一个指向DCT的指针DCT中的每个表目有一个指向COCT的指针,COCT 中有一个 CHCT 指针,CHCT 中有一个 COCT 指针。

计算机组成原理

计算机网络