精华内容
下载资源
问答
  • 计算机操作系统面经(一) 计算机操作系统面经(二) 1.有哪几种文件目录结构,目前广泛采用的文件目录结构是哪种?它有什么优点? (1)目录结构有:单级目录结构,两级目录结构、多级目录结构(树形结构)、无...

    计算机操作系统面经(一)

    计算机操作系统面经(二)

    计算机操作系统面经(三)

    1.有哪几种文件目录结构,目前广泛采用的文件目录结构是哪种?它有什么优点?

        (1)目录结构有:单级目录结构,两级目录结构、多级目录结构(树形结构)、无环目录结构。

        (2)目前广泛采用的是多级目录结构(树形结构)。

        (3)优点:

            (3.1)允许文件重名;

            (3.2)便于实现文件共享;

            (3.3)能有效提高对目录的检索;

    2.有哪些常用文件分配方式?分别有什么优缺点?

        (1)连续分配:连续分配方法要求每个文件在磁盘上占有一组连续的块。

              优点:实现简单,存取速度快;

              缺点:文件长度不宜动态增加,因为一个文件末尾后的盘块可能己分配给其他文件,一旦需要增加,就需要大量移动盘块。

        (2)链接分配:链接分配采取离散分配的方式,可以分为隐式链接和显式链接两种形式。

             优点:可解决外存的碎片问题,提高外存空间的利用率,动态增长较方便

             缺点:只能按照文件的指针链顺序访问,查找效率低,指针信息存放消耗外存空间。

        (3)索引分配:把每个文件的所有的盘块号集中在一起构成索引块(表)

              优点:可以随机访问;易于文件的增删

              缺点:索引表增加了存储空间的开销;索引表的查找策略对文件系统效率影响较大。

    3.常用的磁盘调度算法有哪些?

        (1)先来先服务(First Come First Served, FCFS)算法:FCFS 算法根据进程请求访问磁盘的先后顺序进行调度,这是一种最简单的调度算法;

        (2)最短寻找时间优先( Shortest Seek Time First, SSTF ) 算法:SSTF算法选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,以便使每次的寻找时间最短

        (3)扫描( SCAN )算法(又称电梯调度算法):SCAN算法在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象,实际上就是在最短寻找时间优先算法的基础上规定了磁头运动的方向。

        (4)循环扫描(Circular SCAN, C-SCAN)算法:在扫描算法的基础上规定磁头单向移动来提供服务,回返时直接快速移动至起始端而不服务任何请求。 

    4.I/O控制方式有哪几种?简单介绍一下。

        (1)程序直接控制方式由CPU通过程序不断查询I/0设备是否己做好准备,从而控制I/0设备与主机交换信息。程序直接控制方式虽然简单且易于实现,但是由于CPU和I/0设备只能串行工作,导致CPU的利用率相当低。

        (2)中断驱动方式:只在I/O设备准备就绪并向CPU发出中断请求时才予以响应。

        (3)DMA方式:主存和I/0 设备之间有一条直接数据通路,当主存和I/O设备交换信息时,无须调用中断服务程序。

        (4)通道方式:在系统中设有通道控制部件,每个通道都挂接若干外设,主机在执行I/O 命令时,只需启动有关通道,通道将执行通道程序,从而完成I/O操作。

    5.I/O系统分为几层,并做个简单的介绍。

        (1)用户层I/0软件:实现与用户交互的接口,用户可直接调用在用户层提供的、与 I/O操作有关的库函数,对设备进行操作。

        (2)设备独立性软件:用于实现用户程序与设备驱动器的统一接口、设备命令、设备保护及设备分配与释放等,同时为设备管理和数据传送提供必要的存储空间。

        (3)设备驱动程序:与硬件直接相关,负责具休实现系统对设备发出的操作指令,驱动 I/O设备工作的驱动程序。

        (4)中断处理程序:用于保存被中断进程的 CPU 环境,转入相应的中断处理程序进行处理,处理完并恢复被中断进程的现场后,返回到被中断进程。

        (5)硬件设备:I/O设备通常包括一个机械部件和一个电子部件。

    6.I/O管理要完成哪些功能?

        (1)状态跟踪。要实现实时掌握外部设备的状态。

        (2)设备存取。要实现对设备的存取操作。

        (3)设备分配。在多用户环境下,负责设备的分配与回收。

        (4)设备控制。包括设备的驱动、完成和故障的中断处理。

    7.在设备管理子系统中,引入缓冲区的目的是什么?

        (1)缓和CPU与I/O设备之间速度不匹配的矛盾。

        (2)减少对 CPU 的中断频率,放宽对CPU中断响应时间的限制。

        (3)解决基本数据单元大小(即数据粒度)不匹配的问题。

        (4)提高CPU和I/O设备之间的并行性。

    8.什么是设备独立性?引入设备独立性有什么好处?

        (1)设备独立性是指用户在编程序时使用的设备与实际设备无关。一个程序应独立于分配给它的某类设备的具体设备,即在用户程序中只指明I/0使用的设备类型即可。

        (2)设备独立性有以下优点:

            (2.1)方便用户编程;

            (2.2)使程序运行不受具体机器环境的限制。

            (2.3)便于程序移植

    9.什么是SPOOLing技术(假脱机技术)?由哪几个部分组成?举出一个例子。

        (1)为了缓和CPU的高速性与I/O设备低速性之间的矛盾,引入了脱机输入/输出技术。该技术利用专门的外围控制机,将低速I/O设备上输入设备的数据传送到高速磁盘上,或者相反。

        (2)组成部分:

            (2.1)输入井和输出井:输入井和输出井是指在磁盘上开辟出的两个存储区域。输入井模拟脱机输入时的磁型,用于收容I/O设备输入的数据。输出井模拟脱机输出时的磁盘,用于收容用户程序的输出数据。

            (2.2)输入缓冲区和输出缓冲区:输入缓冲区和输出缓冲区是在内存中开辟的两个缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井。输出缓冲区用于暂存从输出井送来的数据,以后再传送到输出设备。

            (2.3)输入进程和输出进程

        (3)共享打印机是使用SPOOLing技术的一个实例,当用户进程请求打印输出时, SPOOLing系统同意为它打印输出,但并不真正立即把打印机分配给该用户进程,而只为它做两件事:

            (3.1)由输出进程在输出井中为之申请一个空闲磁盘块区,并将要打印的数据送入其中 。

            (3.2)输出进程再为用户进程申请一张空白的用户请求打印表,井将用户的打印要求填入其中,再将该表挂到请求打印队列上。

    10.什么是管态和目态?区分管态和目态的目的是什么?

        (1)管态又叫特权态,系统态或核心态。CPU在管态下可以执行指令系统的全集。如果程序处于管态,则该程序就可以访问计算机的任何资源,即它的资源访问权限不受限制。通常,操作系统在管态下运行。

        (2)目态又叫常态或用户态。机器处于目态时,程序只能执行非特权指令,不能直接使用系统资源,也不能改变CPU的工作状态,并且只能访问这个用户程序自己的存储空间。

        (3)区分管态和目态两种操作方式的目的是为了保护操作系统程序。通常CPU执行两种不同性质的程序,一种是操作系统内核程序,一种是用户自编程序或系统外层的应用程序,对操作系统而言,这两种程序的作用不同,前者是后者的管理者,因此,“管理程序”要执行一些特权指令,而“被管理程序”处于安全考虑不能执行这些指令。所谓特权指令,是指计算机中不允许用户直接使用的指令,比如I/O指令。

    11.怎么从目态(用户态)切换到管态(核心态)?

        (1)系统调用用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作。系统调用机制的核心是使用操作系统为用户特别开放的一个中断来实现。

        (2)异常。当CPU在执行用户态程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态。

        (3)I/O设备的中断。当I/O设备完成用户请求操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令,转而去执行与中断信号对应的处理程序。

    展开全文
  • 计算机操作系统面经(一) 1.什么是死锁?为什么会产生死锁?死锁产生的必要条件?怎么解决死锁? (1)所谓死锁,是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进...

    计算机操作系统面经(一)

    计算机操作系统面经(二)

    计算机操作系统面经(三)

    1.什么是死锁?为什么会产生死锁?死锁产生的必要条件?怎么解决死锁?

        (1)所谓死锁,是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。

        (2)死锁产生的原因:

            (2.1)系统资源的竞争:

            (2.2)进程推进顺序非法:进程在运行过程中,请求和释放资源的顺序不当

        (3)死锁产生的必要条件(缺一不可):

            (3.1)互斥条件:在一段时间内某资源仅为一个进程所占有;

            (3.2)不剥夺条件:进程所获得的资源在未使用完之前,不能被其他进程强行夺走;

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

            (3.4)循环等待条件:存在一种进程资源的循环等待链,链中每个进程已获得的资源同时被链中下一个进程所请求

        (4)死锁的处理策略:设法破坏产生死锁的4个必要条件之一,或允许死锁产生,但当 死锁发生时能检测出死锁,并有能力实现恢复。

            (4.1)死锁预防:设置某些限制条件,破坏产生死锁的4个必要条件中的一个或几个,以防止发生死锁。

            (4.2)避免死锁:在资源的动态分配过程中,用某种方法防止系统进入不安全状态, 从而避免死锁。

            (4.3)死锁的检测及解除:无须采取任何限制性措施,允许进程在运行过程中发生死锁。通过系统的检测机构及时地检测出死锁的发生,然后采取某种措施解除死锁。

    2.什么是内存管理?为什么要进行内存管理?

        (1)内存管理是指软件运行时对计算机内存资源的分配和使用的技术。

        (2)若不对内存进行管理,则容易导致内存数据的混乱,以至于限制进程的并发执行。因此,为了更好地支持多道程序并发执行,必须进行内存管理。

    3.为什么要引入动态重定位?如何实现?

        (1)在程序执行过程中,每当访问指令或数据时,将要访问的程序或数据的逻辑地址转换成物理地址,引入了动态重定位;

        (2)具体的实现方法是在系统中增加一个重定位寄存器,用来装入程序在内存中的起始位置,程序执行时,真正访问的内存地址是相对地址与重定向寄存器中的地址相加之和,从而实现了动态重定位。

    4.分区存储管理(属于连续分配管理)中常采用哪些分配策略?有何优缺点?

        (1)首次适应( First Fit)算法。空闲分区以地址递增的次序链接。分配内存时顺序查找,找到大小能满足要求的第一个空闲分区。

              优点:保留高地址部分的大空闲区,有利于后来的大型作业分配;

              缺点:低地址部分被不断划分,留下许多难以利用的小空闲区;每次分配时都要从低地址部分开始查找,增加了查找的系统开销

        (2)最佳适应 (Best Fit)算法。空闲分区按容量递增的方式形成分区链,找到第一个能满足要求的空闲分区。

              优点:每次分配的空闲区都是最适合的;

              缺点:在内存中留下许多难以利用的小空闲区;

        (3)最坏适应(Worst Fit)算法。又称最大适应( Largest Fit)算法,空闲分区以容量递减的次序链接,找到第一个能满足要求的空闲分区,即挑选出最大的分区。

             优点:产生碎片的几率最小,对中小型作业有利

             缺点:缺乏大的空闲区,对大型作业不利;

        (4)邻近适应 (Next Fit)算法。又称循环首次适应算法,由首次适应算法演变而成。 不同之处是,分配内存时从上次查找结束的位置开始继续查找。

             优点:使内存中的空闲分区分布更均匀,减少查找时的系统开销;

             缺点:缺乏大的空闲区,对大型作业不利;

    5.在具有快表的段页式存储管理方式中,如何实现地址变换?

        (1)CPU 给出逻辑地址后,由硬件进行地址转换,将页号送入高速缓存寄存器,并将此页号与快表中的所有页号进行比较。

        (2)若找到匹配的页号,说明所要访问的页表项在快表中,则直接从中取出该页对应的页框号,与页内偏移量拼接形成物理地址。这样,存取数据仅一次访存便可实现。

        (3)若未找到匹配的页号,则需要访问主存中的页表,在读出页表项后,应同时将其存入快表,以便后面可能的再次访问。但若快表已满,则必须按照一定的算法对旧的页表项进行替换。

    6.分页和分段有什么异同?

        (1)相同点:

            分页和分段都采用离散分配的方式,且都要通过地址映射机构来实现地址变换。

        (2)不同点:

            (2.1)从功能上看,页是信息的物理单位,分页是为实现离散分配方式,以消除内存的外零头,提供内存利用率,是为了满足系统管理的需求;而段是信息逻辑单位,它含有一组意义相对完整的信息,是为了满足用户的需求。

            (2.2)页的大小是由系统确定且固定不变的;而段的长度不固定,取决于用户编写的程序。

            (2.3)分页的作业地址空间是一维的,分段的作业地址空间是二维的。

    7.什么是局部性原理?什么是虚拟存储器?

         (1)局部性原理表现在以下两个方面:

            (1.1)时间局部性。程序中的某条指令一旦执行,不久后该指令可能再次执行;某数据被访问过,不久后该数据可能再次被访问。产生时间局部性的典型原因是程序中存在着大量的循环操作。

            (1.2)空间局部性。一旦程序访问了某个存储单元,在不久后,其附近的存储单元也将被访问, 即程序在一段时间内所访问的地址,可能集中在一定的范围之内,因为指令通常是顺序存放、顺序执行的,数据也一般是以向量、数组、表等形式簇聚存储的。

        (2)虚拟存储器是指具有请求调入功能的和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统,基于局部性原理,在程序装入时,将程序的一部分装入内存,而将其余部分留在外存,就可启动程序执行。在程序执行过程中,当所访问的信息不在内存时,由操作系统将所需要的部分调入内存,然后继续执行程序。另一方面,操作系统将内存中暂时不使用的内容换出到外存上,从而腾出空间存放将要调入内存的信息。这样,系统好像为用户提供了一个比实际内存大得多的存储器,称为虚拟存储器。

    8.有哪些页面置换算法?什么是抖动?

        (1)页面置换算法:

           (1.1) 最佳(OPT)置换算法:置换算法选择的被淘汰页面是以后永不使用的页面,或是在最长时间内不再被访问的页面,以便保证获得最低的缺页率。

            (1.2)先进先出(FIFO)页面置换算法:优先淘汰最早进入内存的页面,即在内存中驻留时间最久的页面。

            (1.3)最近最久未使用 (LRU)置换算法:选择最近最长时间未访问过的页面予以淘汰,它认为过去一段时间内未访问过的页面,在最近的将来可能也不会被访问。

            (1.4)时钟(CLOCK)置换算法:最近未使用算法

        (2)在页面置换过程中,一种最糟糕的情形是,刚刚换出的页面马上又要换入主存,刚刚换入的页面马上又要换出主存,这种频繁的页面调度行为称为抖动或颠簸

    9.为什么要引入虚拟内存?

        在物理上扩展内存相对有限的条件下,应尝试以一些其他可行的方式在逻辑上扩充内存。

    10.什么是文件?什么是文件系统?

        (1)文件是以计算机硬盘为载体的存储在计算机上的信息集合,文件可以是文本文档、图片、程序等。

        (2)操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。

    11.文件有哪几种逻辑结构?

        (1)无结构文件(流式文件):无结构文件是最简单的文件组织形式。无结构文件将数据按顺序组织成记录并积累、保存,它是有序相关信息项的集合,以字节 (Byte)为单位。

        (2)有结构文件(记录式文件)

            (2.1)顺序文件。文件中的记录一个接一个地顺序排列,记录通常是定长的,可以顺序存储或以链表形式存储,在访问时需要顺序搜索文件。

            (2.2)索引文件

            (2.3)索引顺序文件。索引顺序文件是顺序和索引两种组织形式的结合。

            (2.4)直接文件或散列文件(Hash File)。给定记录的键值或通过散列函数转换的键值直接决定记录的物理地址。这种映射结构不同于顺序文件或索引文件,没有顺序的特性。

    展开全文
  • 1.什么是计算机操作系统?它有哪些功能和特征? (1)操作系统是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。 ...

    计算机操作系统面经(一)

    计算机操作系统面经(二)

    计算机操作系统面经(三)

    1.什么是计算机操作系统?它有哪些功能和特征?

        (1)操作系统是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。

        (2)操作系统应具有以下几方面的功能:处理机管理、存储器管理、设备管理和文件管理。

        (3)操作系统的基本特征包括井发、共享、虚拟和异步。

            ①并发是指两个或多个事件在同一时间间隔内发生。

            ②共享是指系统中的资源可供内存中多个并发执行的进程共同使用。

            ③虚拟是指把一个物理上的实体变为若干逻辑上的对应物。

            ④多道程序环境允许多个程序井发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进,这就是进程的异步性。

    2.详细说说处理器的管理功能

        (1)处理机管理:对处理机的管理可归结为对进程的管理。进程管理的主要功能包括进程控制、进程同步、进程通信、死锁处理、处理机调度等。

        (2)存储器管理:主要包括内存分配与回收、地址映射、内存保护与共享和内存扩充等功能。

        (3)文件管理:文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等

        (4)设备管理:设备管理的主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓冲管理、设备分配、设备处理和虚拟设备等功能。

    3.操作系统的发展历程?

        (1)手工操作阶段 (此阶段无操件系统)→批处理阶段(操作系统开始出现)→分时操作系统→实时操作系统→网络操作系统和分布式计算机系统。

    4.什么是中断与异常?

        (1)中断也称外中断,指来自CPU执行指令以外的事件的发生。

        (2)异常也称内中断、例外或陷入,指源自 CPU 执行指令内部的事件。

    5.请描述中断处理的过程?

        (1)关中断→保存断点→引出中断服务程序→保存现场和屏蔽字→开中断→执行中断服务程序→关中断→恢复现场和屏蔽字→开中断、中断返回。

    6.什么是进程,它有哪几种状态?

        (1)进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体(程序的一次执行)。

        (2)创建状态、就绪状态、执行状态、阻塞转态、终止状态。

        (3)状态转换:

            ①就绪→执行:调度程序为之分配处理机

            ②运行→阻塞:进程需要的某一资源还没准备好

                                    

    7.进程控制块PCB的作用?

        (1)作为独立运行基本单位的标志

        (2)能实现间断性运行方式

        (3)提供进程管理所需要的信息

        (4)提供进程调度所需要的信息

        (5)实现与其它进程的同步与通信

    8.进程之间的通信有哪几种?

        (1)低级通信方式:指以较低的效率传输少量数据的通信方式。

            (1.1)PV操作

        (2)高级通信方式:指以较高的效率传输大量数据的通信方式。

            (2.1)共享存储:在通信的进程之间存在一块可直接访问的共享空间,通过对这片共享空间进行写/读操作实现进程之间的信息交换。

            (2.2)消息传递:在消息传递系统中,进程间的数据交换是以格式化的消息( Message)为单位的。若通信的进程之间不存在可直接访问的共享空间,则必须利用操作系统提供的消息传递方法实现进程通信。

            (2.3)管道通信:管道通信是消息传递的一种特殊方式,所谓“管道”,是指用于连接一个读进程和一个写进程以实现它们之间的通信的一个共享文件,又名 pipe文件。向管道共享文件提供输入的发送进程(即写进程),以字符流形式将大量的数据送入(写)管道;而接收管道输出的接收进程(即读进程)则从管道中接收(读)数据。为了协调双方的通信, 管道机制必须提供以下三方面的协调能力:互斥、同步和确定对方的存在。

    9.什么是线程?它和进程有什么区别?

        (1)线程最直接的理解就是“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成。

        (2)进程和线程的比较:

            (2.1)调度:线程是独立调度的基本单位,进程是拥有资源的基本单位。

            (2.2)拥有资源:进程是拥有资源的基本单位,而线程不拥有系统资源,但线程可以访问其隶属进程的系统资源。

            (2.3)并发性:不仅进程之间可以并发执行,而且多个线程之间也可以并发执行。

            (2.4)系统开销:创建或撤销进程时操作系统所付出的开销远大于创建或撤销线程时的开销。

            (2.5)地址空间和其他资源 (如打开的文件):进程的地址空间之间互相独立,同一进程的各线程间共享进程的资源,某进程内的线程对于其他进程不可见。通信方面:进程间通信需要进程同步和互斥手段的辅助,以保证数据的一致性, 而线程间可以直接读/写进程数据段(如全局变量)来进行通信。

    10.调度分为哪几个层次?每个层次的任务(作用)是什么?

        (1)作业调度,又称高级调度。其主要任务是按一定的原则从外存上处于后备状态的作业中挑选一个(或多个)作业,给它(们)分配内存、输入/输出设备等必要的资源,并建立相应的进程,以使它(们)获得竞争处理机的权利。

        (2)中级调度,又称内存调度。其作用是提高内存利用率和系统吞吐量。(应将那些暂 时不能运行的进程调至外存等待,把此时的进程状态称为挂起态。)

        (3)进程调度,又称低级调度。其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。

    11.调度方式有哪种?

        (1)非剥夺调度方式, 又称非抢占方式。 剥夺调度方式是指当一个进程正在处理机上执行时,即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在执行的进程继续执行,直到该进程完成或发生某种事件而进入阻塞态时,才把处理机分配给更为重要或紧迫的进程。

        (2)剥夺调度方式,又称抢占方式。剥夺调度方式是指当一个进程正在处理机上执行时, 若有某个更为重要或紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给这个更为重要或紧迫的进程。

    12.常用的调度算法有哪些?

        (1)先来先服务(FCFS)调度算法:每次从就绪队列中选择最先进入该队列的进程,将处理机分配给它,使之投入运行,直到完成或因某种原因而阻塞时才释放处理机。

        (2)短作业优先(SJF)调度算法:从后备队列中选择一个或若干估计运行时间最短的作业,将它们调入内存运行。

        (3)优先级调度算法:在作业调度中,优先级调度算法每次从后备作业队列中选择优先级最高的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。在进程调度中,优先级调度算法 每次从就绪队列中选择优先级最高的进程,将处理机分配给它,使之投入运行。

            (3.1)非剥夺式优先级调度算法。当一个进程正在处理机上运行时,即使有某个更为重要或紧 迫的进程进入就绪队列,仍然让正在运行的进程继续运行,直到由于其自身的原因而主动让出处理机时(任务完成或等待事件),才把处理机分配给更为重要或紧急的进程。

            (3.2)剥夺式优先级调度算法。当一个进程正在处理机上运行时,若有某个更为重要或紧迫的进程进入就绪队列,则立即暂停正在运行的进程,将处理机分配给更重要或紧迫的进程。

        (4)高响应比优先调度算法:在每次进行作业调度时,先计算后备作业队列中每个作业的响应比,从中选出响应比最高的作业投入运行。响应比计算公式:响应比=(等待时间+要求服务时间)/要求服务时间

        (5)时间片轮转调度算法:时间片轮转调度算法主要适用于分时系统。在这种算法中,系统将所有就绪进程按到达时间的先后次序排成一个队列,进程调度程序总是选择就绪队列中的第一个进程执行,即先来先服务的原则,但仅能运行一个时间片,如 lOOms。在使用完一个时间片后,即使进程并未完成其运行,它也必须释放出(被剥夺)处理机给下一个就绪的进程,而被剥夺的进程退回到就绪队列的末尾重新排队,等候再次运行。

        (6)多级反馈队列调度算法:①)设置多个就绪队列,并为各个队列赋予不同的优先级;②赋予各个队列中进程执行时间片的大小各不相同,在优先级越高的队列中,每个进程的运行时间片越小;③一个新进程进入内存后,首先将它放入第 l 级队列的末尾,按 FCFS 原则排队等待调度。当轮到该进程执行时,如l它能在该时间片内完成, 便可准备撤离系统;若它在一个时间 片结束时尚未完成,调度程序便将该进程转入第2级队列的末尾,再同样按 FCFS 原则等 待调度执行;若它在第2级队列中运行一个时间片后仍未完成,再以同样的方法放入第 3 级队列……如此下去,当一个长进程从第1级队列依次降到第 n 级队列后,在第 n 级队 列中便采用时间片轮转的方式运行。④仅当第 l 级队列为空时,调度程序才调度第 2 级队列中的进程运行;仅当第 l~(i-1)级队列均为空时才会调度第i级队列中的进程运行。

     13.不同进程之间存在什么关系?

        (1)不同进程之间存在着不同的相互制约关系。为了协调进程之间的相互制约关系,引入了进程同步和互斥的概念

        (2)同步亦称直接制约关系,是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系源于它们之间的相互合作。

        (3)互斥也称间接制约关系。当一个进程进临界区使用临界资源时,另一个进程必须等待,当占用临界资源的进程退出临界区后,另一进程才允许去访问此临界资源。

    展开全文
  • 操作系统面经

    2020-07-15 23:41:11
    文章目录操作系统的特点操作系统的功能内核态与用户态进程与线程的概念、区别为什么要有进程或线程进程同步进程间的通信线程间的通信??对吗linux 虚拟地址空间操作系统中程序的内存结构缺页中断fork和 vfork的区别...

    操作系统的特点

    1. 并发

      并发和并行的区别。并发是在一段时间内,多个操作均有进行。并行是在同一时刻,多个操作同时进行。并行需要物理系统的支持,如多核处理器、分布式计算系统等。操作系统通过进程和线程的概念实现了并发。

    2. 共享

      系统中的资源可以被过个进程共同使用。

      互斥共享与同步共享。 互斥资源也被称作是临界资源,同一时刻只能有一个进程访问,需要使用同步机制来实现互斥访问

    3. 虚拟

      把物理实体转换为逻辑实体。

      计算资源和存储空间的虚拟。 在单核CPU上做到了时分复用,多个进/线程并发执行。在内存上,实现了空分复用,通过逻辑地址和换页算法实现了虚拟内存。

    4. 异步

      程序并不是一次性执行完毕,走走停停,以不可知的速度前进。

    操作系统的功能

    操作系统的主要硬件:CPU,内存,硬盘,外设

    分别对应操作系统的功能:

    • 进程管理,对应CPU
      • 进程控制、进程创建、同步、通信
    • 内存管理,对应内存
      • 内存分配、地址映射、内存保护与共享、虚拟内存
    • 文件系统管理,对应硬盘
      • 空间管理、目录管理,读写保护
    • 设备管理,对应外设
      • 完成I/O请求,
      • 缓存还礼、设备分配处理、虚拟设备

    内核态与用户态

    如果进程在用户态需要使用系统功能,就进行系统调用陷入内核态,由操作系统完成。

    Linux系统调用:

    • 进程控制:fork, exit, wait
    • 进程通信:pipe, shmget, mmap
    • 文件操作:open, read, write
    • 设备操作:ioctl, read, write
    • 信息维护:getpid, alarm, sleep
    • 安全:chmod, umask, chown

    进程与线程的概念、区别

    进程是对运行时程序的封装,并且是资源分配的最小单位,线程是CPU调度的最小单位。

    最重要有四个方面的区别:

    • **从层级上说:**进程包含线程,线程是进程的子任务,一个线程只属于一个进程,但一个进程包含多个线程。
    • 从内存资源上说:不同的进程有各自独立的内存空间。而一个进程的线程间共享进程的内存资源。虽然多个线程共享 代码段、数据段、堆,但是每个线程有自己独立的栈用于存放局部变量和临时变量。
    • **从系统开销上说:**进程的创建以及切换 的开销是比 线程要大的,因为创建时需要分配资源、切换时需要保存CPU运行环境,线程创建与切换一般不涉及这样的操作。
    • **从相互通信上说:**线程间的通信由于共享内存变得容易,那进程的话,需要采用消息队列、信号量等手段。

    为什么要有进程或线程

    进程同步

    1.临界区

    对临界资源进行访问的那段代码称为临界区

    未来路互斥访问临界资源,每个进程在进入临界区前,需要进行检查

    2.同步与互斥

    • 同步:多个进程因合作产生制约关系,使得进程有一定的先后执行关系
    • 互斥:多个进程在同一时刻只有一个能进入临界区

    3.信号量

    是一个整型变量,可对其进行 down 和 up操作,对应 P(减)和 V(增)操作。

    • P:如果信号量大于0,则减1;如果信号量等于0,则 让进程睡眠,等待信号量大于0
    • V:对信号量加1,唤醒睡眠的进程,让其完成P操作。
    • P和V操作都是原子操作,在执行时屏蔽中断。
    • 如果信号量只取0或1,那么就成了互斥量 Mutex,0表示临界区已加锁,1表示解锁

    4.管程

    • 信号量的缺点:客户端需要做很多控制,容易出错。
    • 管程:把控制代码独立出来,不容易出错,且客户端代码调用更容易。
    • 在一个时刻只有一个进程能够使用管程,进程在不满足管程的条件变量时,会阻塞挂起,让出管程让下一个进程使用。
    • 采用条件变量的概念,以及wait()signal() 来实现同步操作。对条件变量执行 wait() 操作会导致调用进程阻塞,把管程让出来给另一个进程持有。signal() 操作用于唤醒被阻塞的进程。

    进程间的通信

    进程通信和进程同步的区别:同步是控制多个进程按一定顺序执行,通信是进程间传输信息,通信是手段,同步是目的。

    方式包括:管道、系统(IPC*,Inter-Process Communication)*(消息队列、信号量、信号、共享内存)、套接字

    1.管道

    • linux通过调用pipe函数创建管道,是内核操作,系统调用
    • 普通无名管道PIPE
    • 用于具有亲缘关系的父子进程间的通信
    • 半双工,数据某时刻只能在一个方向是流动,单向交替传输
    • 特殊的文件形式,但不是普通文件,不属于文件系统,只存在于内存中

    2.FIFO

    • 命名管道FIFO:除管道功能外,还允许无亲缘关系进程间的通信
    • 有路径名与之关联,以一种特殊设备文件形式存在于文件系统中

    3.消息队列

    • 消息的链接表,存放在内核中,独立于进程而存在
    • 消息队列克服了信号传递信息少,管道只能承载无格式字节流及缓冲区大小受限等特点。
    • 不需要进程提供同步方法,进程可以有选择地接收消息

    4.信号量

    • 是一个计数器,用于为多个进程提供对共享数据对象的访问。

    • 信号量用于实现进程间的互斥与同步,而不是存储进程间的通信数据。

    • 信号量用于进程间同步,若要在进程间传递数据,需要结合共享内存。

    • 信号量基于系统的PV操作,程序对信号量的操作都是原子操作。

    5.信号

    是一种比较复杂的通信方式,用于通知进程某个事件已经发生。

    是软件层面的中断机制,软中断,不能传递数据。

    6.共享内存

    多个进程访问同一块内存空间,不同进程可以及时看到数据的更新。但是需要依靠同步操作,如互斥锁和信号量。信号量+共享内存通过结合起来使用,信号量用来同步对共享内存的访问。

    7.套接字

    socket用于不同主机机器间的进程通信

    线程间的通信??对吗

    1.临界区

    多线程的串行化来访问公共资源或代码,速度快,适合控制数据访问

    2.互斥量

    采用互斥机制,只有拥有互斥 对象的线程才有权限,因为互斥对象只有一个,可以保证资源不被多个线程同时访问

    3.信号量

    为控制具有优先数量的用户资源而设计,允许多个线程同时刻访问资源,但是需要限制同时刻访问资源的最大线程数目。

    4.事件/信号

    通过通知操作的方式保存多线程同步

    linux 虚拟地址空间

    操作系统中程序的内存结构

    缺页中断

    fork和 vfork的区别

    并发和并行的区别

    页表寻址

    死锁条件和如何解决死锁

    操作系统

    信号量与条件变量会怎么考

    LRU编程实现

    进程与线程的区别

    • 最小单位区别,进程内存分配,线程CPU调度
    • 内存资源的区别
    • 系统开销的区别,特别是切换
    • 内部通信的区别
    • 层级的区别,进程间相互不影响,线程挂了会导致进程中其他线程也挂掉
    • 适用场景:多进程适合于CPU密集型,多线程适合于I/O密集型,不必因为I/O阻塞导致频繁的进程切换。

    线程模型

    • future模型
    • fork join 模型
    • actor模型
    • 生产者消费者模型,使用缓存来保存任务
    • master-worker模型

    缺页置换算法

    虚拟内存的机制,在程序运行过程中,不会讲所有的资源都放入内存中,而是通过请求分页机制实现。

    如果访问的页面不在内存中,产生缺页中断,如果此时操作系统内存没有空闲页面,则必须在内存中选择一个页将其移出,选择淘汰哪一页的规则叫做页面置换算法。

    换页的时候,把哪些页换掉,即效率高又可以降低缺页率是置换算法的两个评价指标。

    局部页面置换算法:进程内部的页面

    • 先进先出,淘汰最早进入页面
    • LRU,使用一个栈,新页面或者命中的页面则将该页面移动到栈底,每次替换栈顶的缓存页面。
    • 时钟算法,使用位设置为1,给一次复活机会,扫描到就置0
    • 修改的时钟算法,增加了页数据修改位

    全局页面置换算法:所有可换出的页面

    • 工作集,只保留工作集范围内的页面
    • 缺页率算法,根据缺页率调整常驻集的大小

    死锁

    https://blog.csdn.net/qq_22238021/article/details/80225459

    [https://cyc2018.github.io/CS-Notes/#/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%20-%20%E6%AD%BB%E9%94%81](https://cyc2018.github.io/CS-Notes/#/notes/计算机操作系统 - 死锁)

    两个及以上进程在执行过程因争夺资源而产生相互等待的现象。

    四个必要条件:

    1. 互斥条件:进程的资源只能独占访问,其他进程需等待
    2. 请求和保持:进程获得资源后,会请求其他资源
    3. 不可剥夺:进程已获得的资源在完成前不可被剥夺,只能自己释放
    4. 环路等待:存在进程-资源间的环形链

    处理方式:

    • 鸵鸟
    • 死锁检测与恢复
    • 死锁预防
    • 死锁避免

    死锁检测与恢复:

    检测:

    1. 每种类型一个资源的死锁检测:检测有向图是否存在环。
      从一个节点出发进行深度优先搜索,对访问过的节点进行标记,如果访问到了已经标记的节点,则表示有向图存在环,也就是检测到了死锁。
    2. 每种类型多个资源的死锁检测:
      资源总向量E,资源剩余向量A,进程资源占用矩阵C,进程资源请求矩阵R
      检测算法:
      • 寻找未标记过的进程,其所请求的资源小于等于A
      • 如果找到这样一个进程,执行该进程后,将C中该进程的向量加入A中,并对其进行标记,然后转到上一步继续
      • 如果没找到这样一个进程,则算法终止。未被标记过的进程为死锁进程。

    恢复:

    1. 抢占:不通知进程,将其资源强行取走给另一个进程使用,完后归还
    2. 回滚:混滚复位到更早的状态
    3. 杀死进程:杀进程释放资源,最好杀死不会带来副作用的进程

    死锁预防:

    破坏四个必要条件之一:

    1. 破坏互斥条件:一般不这样做,不然会造成同步问题
    2. 破坏请求和保持条件:
      1. 资源一次性分配,在运行过程中就不会出现请求
      2. 在进程每次提出申请新资源前,释放所占有的资源,然后一次性尝试获得所有的资源
    3. 破坏不可剥夺条件
    4. 破坏环路等待条件:
      1. 资源有序分配:系统给每类资源分配序号,进程按照编号递增的方式请求资源,破坏环路等待的条件

    死锁避免:

    检测下一步操作是否是安全状态,如果是就执行,否则拒绝。

    1. 单个资源的银行家算法
      1. 和资源检测算法类似,通过判断是否存在请求资源小于当前剩余的进程以及所有进程能够全部执行来觉得当前状态是否安全。
    2. 多个资源的银行家算法
      1. 和单个资源的区别是向量和单个数字的区别

    进程与线程的通信

    进程间通信方式:

    1. 管道,pipe
    2. 命名管道
    3. 消息队列
    4. 信号量semophore
    5. 信号
    6. 共享内存
    7. 套接字

    线程间的通信,线程由于共享内存空间,不需要通信,但是需要同步机制:

    • 互斥锁
    • 条件变量
    • 读写锁
    • 信号量机制
    • 信号机制
    • 自旋锁
    • RCU,ready-copy-update

    进程调度

    批处理系统

    • 先来先服务 FCFS
    • 短作业优先
    • 最短剩余时间优先

    交互式系统

    • 时间片轮转
    • 优先级调度:为每个进程分配优先级,按优先级调度,随时间推移,增加等待进程的优先级
    • 多级反馈队列,多个队列,每个队列时间片依次增加,时间片越小的队列优先级越高

    实时系统

    实时系统要求一个请求在一个确定时间内得到响应。

    分为硬实时和软实时,前者必须满足绝对的截止时间,后者可以容忍一定的超时。

    协程

    协程也是子程序,但在子程序内部可中断。

    和多线程相比:

    1. 协程有极高的执行效率,没有线程切换的开销。
    2. 不需要锁机制,只有一个线程,不存在同步冲突。

    系统调用

    • 复制进程
    • 管道
    • 文件读写,

    用户态切换到内核态

    系统调用

    异常

    中断

    编译链接过程

    源代码 - 预处理 得到 文本文件 - 编译 得到 汇编语言文件 - 汇编得到二进制可重定位执行文件 - 链接 得到 程序

    静态链接 :

    • 速度快
    • 将所有的代码都放在一起。浪费空间
    • 不方便升级,修改需重新编译

    动态链接

    • 速度慢
    • 动态链接执行
    • 方便更新升级

    I/O模型

    https://www.jianshu.com/p/d863a26dd32a

    https://www.cnblogs.com/sharing-java/p/10791802.html

    五种模型

    1. 阻塞式I/O
    2. 非阻塞式I/O
    3. I/O复用
    4. 信号驱动I/O
    5. 异步I/O

    阻塞I/O

    应用进程会一直阻塞直到内核缓冲区有数据报到达且被复制到应用进程缓冲区

    例子:商场排队吃饭,只能老老实实排队,并且排队的时候不能做其他事情

    非阻塞式I/O

    在设置连接为非阻塞时,当应用进程系统调用recvfrom没有数据返回时,内核会立即返回一个EWOULDBLOCK错误,而不会一直阻塞到数据准备好。

    应用进程这样循环调用recvfrom时,我们称之为轮询polling。这么做往往会耗费大量CPU时间,实际使用很少

    例子:还是商场吃饭,只是现在可以取号了。不过仍然需要时不时的去看一下有没有叫到号

    I/O复用

    所以IO多路复用的特点是通过一种机制一个进程能同时等待多个文件描述符,而这些文件描述符(套接字描述符)其中任意一个进入就绪状态,select函数就可以返回。

    Linux I/O复用模型提供了select poll epoll三组系统调用可做选择,进程通过将一个或多个文件描述符(fd)传递给selectpollepoll系统调用,通过它们来监测多个fd是否处于就绪状态。selectpoll是顺序扫描fd是否就绪,而且支持的fd数量有限,因此使用上有制约。epoll调用基于事件驱动,因此性能更高,当fd就绪时会立即回调rollback

    不难发现进程会阻塞于select调用,直到所关注的某一个文件描述符(套接字)变为可读状态

    例子:还是商场吃饭,但是现在你可以在手机APP上同时叫多个号了,只要多个号里面有一个号好了就会通知你了

    信号驱动I/O

    通过系统调用sigaction,并注册一个信号处理的回调函数,该调用会立即返回,但是当内核数据就绪时,内核会为该进程产生一个SIGIO信号,并回调我们注册的信号回调函数,这样我们就可以在信号回调函数中系统调用recvfrom获取数据

    例子:商场吃饭,只要取了号,你也不用去一直看看大屏幕有没有好了,要是叫到号了,会主动发消息告诉你了

    异步I/O

    异步I/O信号驱动I/O最大区别在于,信号驱动是内核通知我们何时开始一个I/O操作,而异步I/O是由内核通知我们I/O操作何时完成,两者有本质区别

    例子:都不用去商场吃饭了,直接点个外卖,把等待上菜的时间也给省了

    磁盘结构

    盘面,磁道,扇区,磁头,制动手臂,主轴

    磁盘调度算法:

    • 先来先服务,按照磁盘请求顺序进行调度
    • 最短寻道时间优先,优先调度与当前磁头所在磁道距离最近的磁道
    • 电梯算法:总是按照一个方向运行,直到该方向没有请求,然后改变运行方向。

    函数,该调用会立即返回,但是当内核数据就绪时,内核会为该进程产生一个SIGIO信号,并回调我们注册的信号回调函数,这样我们就可以在信号回调函数中系统调用recvfrom获取数据

    例子:商场吃饭,只要取了号,你也不用去一直看看大屏幕有没有好了,要是叫到号了,会主动发消息告诉你了

    异步I/O

    异步I/O信号驱动I/O最大区别在于,信号驱动是内核通知我们何时开始一个I/O操作,而异步I/O是由内核通知我们I/O操作何时完成,两者有本质区别

    例子:都不用去商场吃饭了,直接点个外卖,把等待上菜的时间也给省了

    磁盘结构

    盘面,磁道,扇区,磁头,制动手臂,主轴

    磁盘调度算法:

    • 先来先服务,按照磁盘请求顺序进行调度
    • 最短寻道时间优先,优先调度与当前磁头所在磁道距离最近的磁道
    • 电梯算法:总是按照一个方向运行,直到该方向没有请求,然后改变运行方向。
    展开全文
  • 计算机操作系统 1.进程与线程的区别和联系 2.一个进程可以创建多少线程,和什么有关 3. 一个程序从开始运行到结束的完整过程(四个过程) ①一个程序开始运行,首先进行创建进程,操作系统首先为该程序申请一个空白...
  • 接收的响应类型(文本,图片,视频,音频等) Accept-language,Accept-Encoding:客户端接收的语言类型以及编码方式:支持什么压缩 Host:请求资源的主机和端口号,从URL中提取 User-Agent:客户端使用的操作系统和...
  • 扇区、块/簇、page的关系 扇区: 硬盘的最小读写单元 块/簇: 是操作系统针对硬盘读写的最小单元 page: 是内存与操作系统之间操作的最小单元。 扇区 块/簇 内存管理 2.1 为什么要有内存 (阅读了解就可以) 在早些的...
  • 操作系统面经大全——双非上岸阿里巴巴系列

    千次阅读 多人点赞 2021-05-28 14:27:18
    双非本科,四面成功上岸阿里巴巴,在这里把自己整理的面经分享出来,希望能帮到大家。 文章目录1. 进程线程篇1. 进程、线程和协程2. 进程有哪几种状态?3. 进程间的通信的几种方式4. 线程有几种状态?5. 创建线程的...
  • 内存池:先向系统申请一块足够大的内存,程序需要申请内存时,不向操作系统申请,而是直接从内存池获取;程序释放内存时,直接返回内存池;只有当程序退出时,才真正把内存池申请的内存释放。 16.动态链接和静态链
  • 操作系统面经

    千次阅读 2019-07-15 21:57:50
    线程:是操作系统的任务调度和执行的基本单位 进程:是资源分配的基本单位 (2)从构成来说 进程:内部含有线程和逻辑内存(进程间相互独立) 线程:栈(存放方法的参数,局部变量等),PC(下一条指令的地址,指向...
  •  1、进程是系统资源分配的最小单位,它是程序执行时的一个实例。  2、程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列。  3、进程调度器选中它的时候就会为它分配CPU时间,程序...
  • 计算机网络(面经汇总)

    千次阅读 2020-07-06 20:24:45
    1.建立TCP服务器的各个系统调用 2.说明socket网络编程有哪些系统调用?其中close是一次就能直接关闭的吗,半关闭状态是怎么产生的? 首先回答第一个,close并不是一次就能直接关闭,调用close只能将套接字的引用计数...
  • 计算机网络面经

    千次阅读 2019-06-14 11:41:22
    浏览器查询DNS,获取域名对应的IP地址:具体过程包括浏览器搜索自身的DNS缓存、搜索操作系统的DNS缓存、读取本地的Host文件和向本地DNS服务器进行查询等。对于向本地DNS服务器进行查询,如果要查询的域名包含在本地...
  • 为了把全世界的所有不同类型的计算机都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议簇Internet Protocol Suite就是通用协议标准。因为互联网协议包含了上百种协议标准,...
  • (3)第三次-8月上旬,大概复习了7天左右,主要是过滤计算机的基础知识,包括计算机网络和数据库什么的,结果找CV的工作很少问到,Linux和操作系统多一点; (4)第四次-8月下旬,复习深度学习内容,集中时间看了下...
  • 操作系统基础 什么是操作系统? 是管理计算机硬件和软件的资源的程序,是计算机系统的内核与基石 本质上是计算机软件程序 为用户提供了与系统交互的操作界面 操作系统分为内核和外壳,外壳主要是运行在系统上的...
  • 计算机网络面经整理

    千次阅读 2020-07-30 11:17:05
    电商的高并发是如何实现的https://www.zhihu.com/question/20978066  https://blog.csdn.net/weixin_36995644/article/details/96271385 相似题目:设计一个秒杀系统,口述 (这个问题没答好) 4.介绍一下服务器端...
  • 计算机网络面经大全——双非上岸阿里巴巴系列

    千次阅读 多人点赞 2021-05-27 09:30:11
    双非本科,四面成功上岸阿里巴巴,在这里把自己整理的面经分享出来,希望能帮到大家。 文章目录1. 网络篇1. Http和Https的区别2. 公钥和私钥3. 对称加密与非对称加密4. 客户端在使用HTTPS方式与Web服务器通信时的...
  • 操作系统三. 数据库四. linux 一. 计网 计算机网络tcp相关东西【靠什么保证可靠传输】 参考 【涉及:三次握手,四次挥手,为什么三次握手,三次握手会产生危险吗?为什么四次挥手?为什么等待2MSL】 http与...
  • 计算机网络 TCP/UDP 什么叫稳定连接? UDP/TCP的区别? TCP的nodelay,keepalive是干什么的?底层原理? TCP和UDP区别,自己设计一个可靠的UDP 为什么TCP要三次握手,两次有什么问题?为什么要四次挥手?三次有什么...
  • 操作系统-请你说一下线程的同步和互斥以及应用常见 操作系统-进程和线程的区别 操作系统-进程间的通信方式有哪些 四、数据库基础:(待续) 数据库-请你解释一下,什么是数据库中的事务,ACID又是什么? ...
  • 1.在linux操作系统中,JVM在用户空间下向内核空间发送sendfile命令,并且换至内核态,内核从硬件中读取数据至内核缓冲区,这就产生了 第一次数据拷贝 ; 2.当数据在内核空间准备完成之后,内核直接将数据拷贝至...
  • 面经

    千次阅读 2014-11-05 02:10:39
    面经
  • 用户态向核心态转移情况:用户程序产生错误状态,或企图执行特权指令,要求操作系统的服务(系统调用),发生中断 中断:从用户态转核心态,由中断向量得到地址,保存PC,PSW,通用寄存器 子程序调用:无状态变化,...
  • 一、进程的状态 1、基础三态: 阻塞态、就绪态、运行态。 进程在一开始创建出来后,等所需要的基础资源分配完成后,会进入活跃的状态,我们管这个状态叫 actived ...(一般操作系统会有一个指针,指针指向的 r...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,298
精华内容 2,919
关键字:

计算机操作系统面经