目录
1.计算机系统概述
1.1 说明库函数与系统调用的区别和联系?
库函数是语言或应用程序的一部分,可以运行在用户空间中。而系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在内核空间中,而且许多库函数都会使用系统调用来实现功能。未使用系统调用的库函数,其执行效率通常要比系统调用的高。因为使用系统调用时,需要上下文的切换及状态的转换(由用户态转向核心态)。
1.2 批处理操作系统,分时操作系统和实时操作系统各有什么特点?
批处理操作系统的用户脱机使用计算机,作业是成批处理的,系统内多道程序并发执行,交互能力差。
分时操作系统可让多个用户同时使用计算机,人机交互性较强,具有每个用户独立使用计算机的独占性,系统响应及时。
实时操作系统能对控制对象做出及时反应,可靠性高,响应及时,但资源利用率低。
1.3 处理器为什么要区分核心态和用户态两种操作方式?在什么情况下进行两种方式的切换?
区分执行态的主要目的是保护系统程序。用户态到核心态的转换发生在中断产生时,而核心态到用户态的转换则发生在中断返回用户程序时。
2.进程与线程
2.1 什么是进程?进程由什么组成?
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码本身,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
一个进程实体由程序段、相关数据段和PCB三部分构成,其中PCB是标志一个进程存在的唯一标识,程序段是进程运行的程序的代码,数据段则存储程序运行过程中相关的一些数据。
2.2 在什么情况下进程和程序之间可以形成一对一、一对多、多对一、多对多的关系?
执行一条命令或运行一个应用程序时,进程和程序之间形成一对一的关系。进程在执行过程中可以加载执行不同的应用程序,从而形成一对多的关系;以不同的参数或数据多次执行同一个应用程序时,形成多对一的关系;并发地执行不同的应用程序时,形成多对多的关系。
2.3 父进程创建子进程和主程序调用子程序有和不同?
父进程创建子进程后,父进程与子进程同时执行(并发)。主程序调用子程序后,主程序暂停在调用点,子程序开始执行,直到子程序返回,主程序才开始执行。
2.4 为何进程之间的通信必须借助于操作系统内核功能?简单说明进程通信的几种主要方式。
每个进程有自己独立的地址空间。在操作系统和硬件的地址保护机制下,进程无法访问其他进程的地址空间,所以必须借助于操作系统的系统调用函数来实现进程之间的通信。进程通信的主要方式有:
共享内存区。通过系统调用创建共享内存区。多个进程可以(通过系统调用)连接同一个共享内存区,通过访问共享内存区实现进程之间的数据交换。使用共享内存区时需要信号量解决同步互斥问题。
消息传递。通过发送/接收消息,系统调用实现进程之间的通信。当进程发送消息时,系统将消息从用户缓冲区复制到内核中的消息缓冲区,然后将消息缓冲区挂入消息队列。进程发送的消息保持在消息队列中,直到被另一进程接收。当进程接收消息时,系统从消息队列中解挂消息缓冲区,将消息从内核的消息缓冲区中复制到用户缓冲区,然后释放消息缓冲区。
管道系统。管道是先进先出的信息流,允许多个进程向管道写入数据,允许多个进程从管道读出数据。在读/写过程中,操作系统保证数据的写入顺序和读出顺序是一致的。进程通过读/写管道文件或管道设备实现彼此之间的通信。
共享文件。利用操作系统提供的文件共享功能实现进程之间的通信。这时,也需要信号量来解决文件共享操作中的同步和互斥问题。
2.5 什么是多线程?多线程和多任务有什么区别?
多线程是指在一个程序中可以定义多个线程并同时运行它们,每个线程可以执行不同的任务。
多线程与多任务的区别:多任务是针对操作系统而言的,代表操作系统可以同时执行的程序个数;多线程是针对一个程序而言的,代表一个程序可以同时执行的线程个数,而每个线程可以完成不同的任务。
2.6 调度算法有哪几种?哪种调度算法比较适合分时操作系统和实时操作系统?
先来先服务调度算法、短作业优先调度算法、优先级调度算法、高响应比优先调度算法、时间片轮转调度算法、多级反馈队列调度算法等。
优先级调度算法按照任务的优先级进行调度,对于更紧急的任务给予更高的优先级,适合实时操作系统。
高响应比优先调度算法、时间片轮转调度算法、多级反馈队列调度算法都能保证每个任务在一定时间内分配到时间片,并轮流占用CPU,适合分时操作系统。
2.7 不同的进程之间会存在什么关系?
进程之间存在同步与互斥的制约关系。
同步是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。
互斥是指当一个进程进入临界区使用临界资源时,另一个进程必须等待,当占用临界资源的进程退出临界区后,另一个进程才允许去访问此临界资源。
2.8 什么是管程?由哪几部分组成?说明引入管程的必要性。
一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据。
管程由四部分组成:管程的名称、局部于管程的共享变量说明、对数据结构进行操作的一组过程、对局部于管程的数据设置初始值的语句。
管程的引入是为了解决临界区分散所带来的管理和控制问题。管程将分散在各进程中的临界区集中起来,并加以控制和管理,管程一次只允许一个进程进入管程内,从而既便于系统管理共享资源,又能保证互斥。
2.9 为什么会产生死锁?产生死锁有什么条件?
由于系统中存在一些不可剥夺资源,当两个或两个以上的进程占有自身的资源并请求对方的资源时,会导致每个进程都无法向前推进,这就是死锁。死锁产生的必要条件有4个,分别是互斥条件、不剥夺条件、请求并保持条件和循环等待条件。
互斥条件是指进程要求分配的资源是排他性的,即最多只能同时供一个进程使用。
不剥夺条件是指进程在使用完资源之前,资源不能被强制夺走。
请求并保持条件是指进程占有自身本来拥有的资源并要求其他资源。
循环等待条件是指存在一种进程资源的循环等待链。
2.10 有什么办法可以解决死锁问题?
死锁的处理策略可以分为预防死锁、避免死锁及死锁的检测与解除。
死锁预防是指通过设立一些限制条件,破坏死锁的一些必要条件,让死锁无法发生。
死锁避免指在动态分配资源的过程中,用一些算法防止系统进入不安全状态,从而避免死锁。
死锁的检测和解除是指在死锁产生前不采取任何措施,只检测当前系统有没有发生死锁,若有,则采取一些措施解除死锁。
3.内存管理
3.1 覆盖技术与虚拟存储技术有何本质上的不同?
覆盖程序段的最大长度要受内存容量大小的限制,而虚拟存储器中程序的最大长度不受内存容量的限制,只受计算机地址结构的限制。另外,覆盖技术中的覆盖段由程序员设计,且要求覆盖段中的各个覆盖具有相对独立性,不存在直接联系或相互交叉访问;而虚拟存储技术对用户的程序段没有这种要求。
3.2 交换技术与虚拟存储技术中使用的调入/调出技术有何相同与不同之处?
交换技术就是把暂时不用的某个程序及数据从内存移到外存中,以便腾出必要的内存空间,或把指定的程序或数据从外存读到内存中的一种内存扩充技术。交换技术与虚存中使用的调入/调出技术的主要区别是:交换技术调入/调出整个进程,因此一个进程的大小要受内存容量大小的限制;而虚存中使用的调入/调出技术在内存和外存之间来回传递的是页面或分段,而不是整个进程,从而使得进程的地址映射具有更大的灵活性,且允许进程的大小比可用的内存空间大。
3.3 分页管理方式与分段管理方式的比较。
分页管理方式和分段管理方式在很多地方是相似的,比如在内存中都是不连续的、都有地址变换机构来进行地址映射等。
分页管理方式和分段管理方式的区别如下表所示:
分页 | 分段 | |
目的 | 分页仅是系统管理上的需要,是为离散的分配方式,以提高内存的利用率。而不是用户的需要 | 段是信息的逻辑单位,它含有一组意义相对完整的信息。分段的目的是更好地满足用户的需要 |
长度 | 页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的 | 段的长度不固定,决定于用户所编写的程序,通常由编译程序在编译时根据信息的性质来划分 |
地址空间 | 分页的程序地址空间是一维的,即单一的线性地址空间,程序员利用一个记忆符即可表示一个地址 | 分段的程序地址空间是二维的,程序员在标识一个地址时,既需要给出段名,又需给出段内地址 |
碎片 | 有内部碎片,无外部碎片 | 有外部碎片,无内部碎片 |
4.文件管理
4.1 什么是文件?
文件是以计算机硬盘为载体的存储在计算机上的信息集合,它的形式多样。
4.2 简述文件的外存分配中,连续分配、链接分配和索引分配各自的主要优缺点。
连续分配方式的优点是可以随机访问(磁盘),访问速度快;缺点是要求有连续的存储空间,容易产生碎片,降低磁盘空间利用率,并且不利于文件的增长补充。
链接分配方式的优点是不要求连续的存储空间,能更有效地利用磁盘空间,并且有利于扩充文件;缺点是只适合顺序访问,不适合随机访问;另外,链接指针占用一定的空间,降低了存储效率,可靠性也差。
索引分配方式的优点是既支持顺序访问又支持随机访问,查找效率高,便于文件删除;缺点是索引表会占用一定的存储空间。
4.3 什么是文件系统?
操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:与文件管理有关的软件、被管理文件及实施文件管理所需的数据结构。
4.4 文件系统要完成哪些功能?
对于用户而言,文件系统最主要的功能是实现对文件的基本操作,让用户可以按名存储和查找文件,组织成合适的结构,并应当具有基本的文件共享和文件保护功能。对于操作系统本身而言,文件系统还需要管理与磁盘的信息交换,完成文件逻辑结构和物理结构上的变换,组织文件在磁盘上的存放,采取好的文件排放顺序和磁盘调度方法以提升整个系统的性能。
5.输入/输出管理
5.1 I/O管理要完成哪些功能?
状态跟踪。要能实时掌握外部设备的状态。
设备存取。要实现对设备的存取操作。
设备分配。在多用户环境下,负责设备的分配与回收。
设备控制。包括设备的驱动、完成和故障的中断处理。
5.2 DMA方式与中断控制方式的主要区别是什么?
中断控制方式在每个数据传送完成后中断CPU,而DMA控制方式则在所要求传送的一批数据全部传送结束时中断CPU。
中断控制方式的数据传送在中断处理时由CPU控制完成,而DMA控制方式则在DMA控制器的控制下完成。不过,在DMA控制方式中,数据传送的方向、存放数据的内存始址及传送数据的长度等仍然由CPU控制。
DMA方式以存储器为核心,中断控制方式以CPU为核心。因此DMA方式能与CPU并行工作。
DMA方式传输批量的数据,中断控制方式的传输以字节为单位。
5.3 DMA方式与通道方式的主要区别是什么?
在DMA控制方式中,在DMA控制器控制下设备和主存之间可以成批地进行数据交换而不用CPU干预,这样既减轻了CPU的负担,又大大提高了I/O数据传送的速度。通道控制方式与DMA控制方式类似,也是一种以内存为中心实现设备与内存直接交换数据的控制方式。不过在通道控制方式中,CPU只需发出启动指令,指出通道相应的操作和I/O设备,该指令就可以启动通道并使通道从内存中调出相应的通道程序执行。与DMA控制方式相比,通道控制方式所需的CPU干预更少,并且一个通道可以控制多台设备,进一步减轻了CPU的负担。另外,对通道来说,可以使用一些指令灵活改变通道程序,这一点DMA控制方式无法做到。
5.4 什么是设备的独立性?引入设备的独立性有什么好处?
设备独立性是指用户在编程序时使用的设备与实际设备无关,一个程序应独立于分配给它的某类设备的具体设备,即在用户程序中只指明I/O使用的设备类型即可。
设备独立性有以下优点:方便用户编程、使程序运行不受具体机器环境的限制、便于程序移植。
5.5 用于设备分配的数据结构有哪些?它们之间的关系是什么?
用于设备分配的数据结构有系统设备表(SDT)、设备控制表(DCT)、控制器控制表(COCT)和通道控制表(CHCT)。
SDT整个系统中只有一张,它记录系统中全部设备的情况,是系统范围内的数据结构。每个设备有一张DCT,系统为每个设备配置一张DCT,以记录本设备的情况。每个控制器有一张COCT,系统为每个控制器都设置一张用于记录本控制器情况的COCT。系统为每个通道配置一张CUCT,以记录通道情况。SDT中每个表目有一个指向DCT的指针,DCT中的每个表目有一个指向COCT的指针,COCT中有一个CHCT指针,CHCT中有一个COCT指针。
5.6 在磁盘上进行一次读写操作需要哪几部分时间?其中哪部分时间最长?
在磁盘上进行一次读写操作花费的时间由寻道时间、延迟时间和传输时间决定。其中寻道时间是将磁头移动到指定磁道所需要的时间,延迟时间是磁头定位到某一磁道的扇区(块号)所需要的时间,传输时间是从磁盘读出或向磁盘写入数据所经历的时间。一般来说,寻道时间因为要移动磁臂,所以占用时间最长。