免费智能真题库 > 历年试卷 > 嵌入式系统设计师 > 2014年下半年 嵌入式系统设计师 上午试卷 综合知识
  第39题      
  知识点:   操作系统   设备管理
  关键词:   操作系统   外部设备        章/节:   嵌入式系统程序设计       

 
操作系统使用设备管理的方式管理外部设备,当驱动程序利用系统调用打开外部设备时,通常使用的标识是(39)。
 
 
  A.  物理地址
 
  B.  逻辑地址
 
  C.  逻辑设备名
 
  D.  物理设备名
 
 
 

 
  第20题    2017年下半年  
   38%
更适合用来开发操作系统的编程语言是(20)。
  第44题    2017年下半年  
   55%
微内核操作系统在嵌入式系统中得到越来越广泛的应用,以下关于微内核操作系统叙述中,错误的是(44)。
  第47题    2018年下半年  
   56%
中断响应是一个软硬件结合处理系统例外事件的机制。中断发生时,操作系统通过检査(47)来判断中断原因。
   知识点讲解    
   · 操作系统    · 设备管理
 
       操作系统
        编写嵌入式软件有两种选择:一是自己编写内核;二是使用现成的操作系统。如果嵌入式软件只需要完成一项非常小的工作,例如在电动玩具、空调中,就不需要一个功能完整的操作系统。但如果系统的规模较大、功能较复杂,那么最好还是使用一个现成的操作系统。可用于嵌入式系统软件开发的操作系统有很多,但关键是如何选择一个适合开发项目的操作系统,可以从以下几点进行考虑:
        (1)操作系统提供的开发工具。有些实时操作系统只支持该系统供应商的开发工具,因此,还必须从操作系统供应商处获得编译器、调试器等;而有的操作系统应用广泛,且有第三方工具可用,因此选择的余地比较大。
        (2)操作系统向硬件接口移植的难度。操作系统到硬件的移植是一个重要的问题,是关系到整个系统能否按期完工的一个关键因素。因此,要选择那些可移植性程度高的操作系统,以避免因移植带来的种种困难。
        (3)操作系统的内存要求,有些操作系统对内存有较大要求。
        (4)操作系统的可剪裁性、实时性能等。
 
       设备管理
        现代计算机系统中配置了大量外围设备。一般说,计算机的外围设备分为两大类:一类是存储型设备,如磁带机、磁盘机等。以存储大量信息和快速检索为目标,它在系统中作为主存储器的扩充,所以,又称为辅助存储器;另一类是输入输出型设备,如显示器、卡片机、打印机等。它们把外界信息输入计算机,把运算结果从计算机输出。
        为了方便用户使用各种外围设备,设备管理要达到提供统一界面、方便使用、发挥系统并行性,提高I/O设备使用效率等目标。为此,设备管理通常应具有以下功能:
        (1)外围设备中断处理。
        (2)缓冲区管理。
        (3)外围设备的分配。
        (4)外围设备驱动调度。
               I/O硬件原理
               作为操作系统的设计者,立足点主要是针对如何利用I/O硬件的功能为程序设计提供一个方便用户的实用接口,而并非研究I/O硬件的设计、制造和维护。
                      输入/输出系统
                      通常把I/O设备及其接口线路、控制部件、通道和管理软件称为I/O系统,把计算机的主存和外围设备的介质之间的信息传送操作称为输入输出操作。按照输入输出特性,I/O设备可以划分为输入型外围设备、输出型外围设备和存储型外围设备三类。
                      输入/输出控制方式
                      输入输出控制在计算机处理中具有重要的地位,为了有效地实现物理I/O操作,必须通过硬、软件技术,对CPU和I/O设备的职能进行合理分工,以调解系统性能和硬件成本之间的矛盾。按照I/O控制器功能的强弱以及和CPU之间联系方式的不同,可把I/O设备的控制方式分为四类:询问方式、中断方式、DMA方式、通道方式。
                      询问方式
                      询问方式又称为程序直接控制方式,在这种方式下,输入输出指令或询问指令测试一台设备的忙闲标志位,决定主存储器和外围设备是否交换一个字符或一个字。询问方式的主要缺点在于一旦CPU启动I/O设备,便不断查询I/O的准备情况,终止了原程序的执行。CPU在反复查询过程中,浪费了宝贵的CPU时间;另一方面,I/O准备就绪后,CPU参与数据的传送工作,此时CPU也不能执行原程序,可见CPU和I/O设备串行工作,使主机不能充分发挥效率,外围设备也不能得到合理使用,整个系统的效率很低。
                      中断方式
                      中断机构引入后,外围设备有了反映其状态的能力,仅当操作正常或异常结束时才中断中央处理机。实现了一定程度的并行操作,这叫程序中断方式。
                      DMA方式
                      虽然程序中断方式消除了程序查询方式的忙式测试,提高了CPU资源的利用率,但是在响应中断请求后,必须停止现行程序转入中断处理程序并参与数据传输操作。如果I/O设备能直接与主存交换数据而不占用CPU,那么,CPU资源的利用率还可提高,这就出现了直接存储器存取(Direct Memory Access,DMA)方式。
                      在DMA方式中,主存和I/O设备之间有一条数据通路,在主存和I/O设备之间成块传送数据过程中,不需要CPU干预,实际操作由DMA直接执行完成。
                      目前,在小型、微型机中的快速设备均采用这种方式,DMA方式线路简单,价格低廉,但功能较差,不能满足复杂的I/O要求。因而,在中大型机中使用通道技术。
                      通道方式
                      通道方式是DMA方式的发展,它又进一步减少了CPU对I/O操作的干预,是对多个数据块,而不是仅仅一个数据块,及有关管理和控制的干预。同时,为了获得中央处理器和外围设备之间更高的并行工作能力,也为了让种类繁多,物理特性各异的外围设备能以标准的接口连接到系统中,计算机系统引入了自成独立体系的通道结构。通道的出现是现代计算机系统功能不断完善,性能不断提高的结果,是计算机技术的一个重要进步。
                      通道又称输入输出处理器。它能完成主存储器和外围设备之间的信息传送,与中央处理器并行地执行操作。采用通道技术主要解决了输入输出操作的独立性和各部件工作的并行性。由通道管理和控制输入输出操作,大大减少了外围设备和中央处理器的逻辑联系。从而,把中央处理器从琐碎的输入输出操作中解放出来。
               I/O软件原理
               I/O软件的总体设计目标是:高效率和通用性。高效率是不言而喻的,在改善I/O设备的效率中,最应关注的是磁盘I/O的效率。通用性意味着用统一标准的方法来管理所有设备,为了达到这一目标,通常,把软件组织成一种层次结构,低层软件用来屏蔽硬件的具体细节,高层软件则主要向用户提供一个简洁、规范的界面。
               为了合理、高效地解决以上问题,操作系统通常把I/O软件组织成以下四个层次。
               (1) I/O中断处理程序(底层)。
               (2)设备驱动程序。
               (3)与设备无关的操作系统I/O软件。
               (4)用户层I/O软件。
                      输入/输出中断处理程序
                      中断是应该尽量加以屏蔽的概念,应该放在操作系统的底层进行处理,以便其余部分尽可能少地与之发生联系。
                      当一个进程请求I/O操作时,该进程将被挂起,直到I/O操作结束并发生中断。当中断发生时,中断处理程序执行相应的处理,并解除相应进程的阻塞状态。
                      输入输出中断的类型和功能如下:
                      (1)通知用户程序输入输出操作沿链推进的程度。此类中断有程序进程中断。
                      (2)通知用户程序输入输出操作正常结束。当输入输出控制器或设备发现通道结束、控制结束、设备结束等信号时,就向通道发出一个报告输入输出操作正常结束的中断。
                      (3)通知用户程序发现的输入输出操作异常,包括设备出错、接口出错、I/O程序出错、设备特殊、设备忙等,以及提前中止操作的原因。
                      (4)通知程序外围设备上重要的异步信号。此类中断有注意、设备报到、设备结束等。当输入输出中断被响应后,中断装置交换程序状态字引出输入输出中断处理程序。
                      设备驱动程序
                      设备驱动程序中包括了所有与设备相关的代码。每个设备驱动程序只处理一种设备,或者一类紧密相关的设备。
                      笼统地说,设备驱动程序的功能是从与设备无关的软件中接收抽象的请求并执行。一条典型的请求是读第n块。如果请求到来时驱动程序空闲,则它立即执行该请求。但如果它正在处理另一条请求,则它将该请求挂在一个等待队列中。
                      执行一条I/O请求的第一步,是将它转换为更具体的形式。例如对磁盘驱动程序,它包含:计算出所请求块的物理地址、检查驱动器电机是否在运转、检测磁头臂是否定位在正确的柱面等。简而言之,它必须确定需要哪些控制器命令以及命令的执行次序。
                      一旦决定应向控制器发送什么命令,驱动程序将向控制器的设备寄存器中写入这些命令。某些控制器一次只能处理一条命令,另一些则可以接收一串命令并自动进行处理。
                      与硬件无关的操作系统I/O软件
                      尽管某些I/O软件是设备相关的,但大部分独立于设备。设备无关软件和设备驱动程序之间的精确界限在各个系统都不尽相同。对于一些以设备无关方式完成的功能,在实际中由于考虑到执行效率等因素,也可以考虑由驱动程序完成。
                      下面罗列了一般由设备无关软件完成的功能:
                      (1)对设备驱动程序的统一接口。
                      (2)设备命名。
                      (3)设备保护。
                      (4)提供独立于设备的块大小。
                      (5)缓冲区管理。
                      (6)块设备的存储分配。
                      (7)独占性外围设备的分配和释放。
                      (8)错误报告。
                      设备无关软件的基本功能就是执行适用于所有设备的常用I/O功能,并向用户层软件提供一个一致的接口。
                      用户空间的I/O软件
                      尽管大部分I/O软件属于操作系统,但是有一小部分是与用户程序链接在一起的库例程,甚至是在核心外运行的完整的程序。系统调用,包括I/O系统调用通常先是库例程调用。如下C语言程序语句:
                      
                      中,所调用的库函数write将与程序链接在一起,并包含在运行时的二进制程序代码中。这一类库例程显然也是I/O系统的一部分。
                      此类库例程的主要工作是提供参数给相应的系统调用并调用之。但也有一些库例程,它们确实做非常实际的工作,例如格式化输入输出就是用库例程实现的。C语言中的一个例子是printf函数,它的输入为一个格式字符串,其中可能带有一些变量,它随后调用write,输出格式化后的一个ASCII码串。与此类似的scanf,它采用与printf相同的语法规则来读取输入。标准I/O库包含相当多的涉及I/O的库例程,它们作为用户程序的一部分运行。
               Spooling系统
               外围设备联机操作(Simultaneous Peripheral Operations On Line, Spooling),简称为Spooling系统或假脱机系统。所谓Spooling技术实际上是用一类物理设备模拟另一类物理设备的技术,是使独占使用的设备变成多台虚拟设备的一种技术,也是一种速度匹配技术。
               如下图所示为Spooling系统的组成和结构。为了实现联机同时外围操作功能,必须具有能将信息从输入设备输入到辅助存储器缓冲区域的“预输入程序”;能将信息从辅助存储器输出缓冲区域输出到输出设备的“缓输出程序”以及控制作业和辅助存储器缓冲区域之间交换信息的“井管理程序”。
               
               Spooling系统的组成和结构
               为了存放从输入设备输入的信息以及作业执行的结果,系统在辅助存储器上开辟了输入井和输出井。“井”是用作缓冲的存储区域,采用井的技术能调节供求之间的矛盾,消除人工干预带来的损失。
               预输入程序的主要任务是控制信息从输入设备输入到输入井存放,并填写好输入表以便在作业执行中要求输入信息量,可以随时找到它们的存放位置。
               系统拥有一张作业表用来登记进入系统的所有作业的作业名、状态、预输入表位置等信息。每个用户作业拥有一张预输入表用来登记该作业的各个文件的情况,包括设备类、信息长度及存放位置等。
               输入井中的作业有4种状态:
               (1)输入状态:作业的信息正从输入设备上预输入。
               (2)收容状态:作业预输入结束但未被选中执行。
               (3)执行状态:作业已被选中,它可从输入井读取信息可向输出井写信息。
               (4)完成状态:作业已经撤离,该作业的执行结果等待缓输出。
               作业表指示了哪些作业正在预输入,哪些作业已经预输入完成,哪些作业正在执行等。作业调度程序根据预定的调度算法选择收容状态的作业执行,作业表是作业调度程序进行作业调度的依据,是Spooling系统和作业调度程序共享的数据结构。
               磁盘调度
               磁盘是可供多个进程共享的设备。当多个进程都请求访问磁盘时,为了保证信息的安全,系统每一时刻只允许一个进程启动磁盘进行I/O操作,其余的进程只能等待。因此,操作系统应采用一种适当的调度算法,使各进程对磁盘的平均访问(主要是寻道)时间最小。磁盘调度分为移臂调度和旋转调度两类,首先是进行移臂调度,然后再进行旋转调度。由于访问磁盘最耗时的是寻道时间,因此磁盘调度的目标应使磁盘的平均寻道时间最少。
                      移臂调度
                      移臂调度有若干策略,“电梯调度”算法是简单而实用的一种算法。按照这种策略每次总是选择沿臂的移动方向最近的那个柱面;如果沿这个方向没有访问的请求时,就改变臂的移动方向,使用移动频率极小化。每当要求访问磁盘时,操作系统查看磁盘机是否空闲。如果空闲就立即移臂,然后将当前移动方向和本次停留的位置都登记下来。如果不空,就让请求者等待并把它要求访问的位置登记下来,按照既定的调度算法对全体等待者进行寻查定序,下次按照优化的次序执行。如果有多个盘驱动器的请求同时到达时,系统还必须有优先启动哪一个盘组的I/O请求决策。
                      旋转调度算法
                      当移臂定位后,有多个进程等待访问该柱面时,应如何决定这些进程的访问顺序?这就是旋转调度所要考虑的问题,显然系统应该选择延迟时间最短的进程对磁盘的扇区进行访问。当有若干等待进程请求访问磁盘上的信息时,旋转调度应考虑如下情况:
                      (1)进程请求访问的是同一磁道上的不同编号的扇区。
                      (2)进程请求访问的是不同磁道上的不同编号的扇区。
                      (3)进程请求访问的是不同磁道上具有相同编号的扇区。
                      对于(1)和(2)的情况,旋转调度总是让首先到达读写磁头位置下的扇区先进行传送操作;对于(3)的情况,旋转调度可以任选一个读写磁头位置下的扇区进行传送操作。
   题号导航      2014年下半年 嵌入式系统设计师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第39题    在手机中做本题