操作系统方面的相关面试题总结(中)

电子说

1.3w人已加入

描述

14、操作系统的内存管理机制了解过吗?都有哪些?

内存管理是操作系统的重要功能之一,负责管理计算机的物理内存,以提供给应用程序使用。内存管理机制通常包括以下几个方面:

  • 内存分配:操作系统需要负责为应用程序分配内存空间,并记录内存的使用情况。常见的内存分配算法包括首次适应、最佳适应、最坏适应等。
  • 内存保护:操作系统需要保护应用程序不受其他程序或操作系统本身的干扰。内存保护机制包括权限管理、虚拟内存等。
  • 内存映射:内存映射是将文件映射到内存空间的一种技术,使得应用程序可以直接访问文件的内容,而不需要通过文件 I/O 操作。这种技术可以提高程序的执行效率和数据传输速度。
  • 内存回收:当应用程序不再使用某个内存块时,操作系统需要回收这些内存空间,以便重新分配给其他应用程序使用。
  • 虚拟内存:虚拟内存是一种将物理内存和硬盘空间结合使用的技术。操作系统可以将一部分物理内存暂时保存到硬盘上,以便给其他应用程序使用,当应用程序再次需要该内存时,操作系统可以将其重新加载到物理内存中。

以上是操作系统内存管理的一些常见机制,不同操作系统实现可能会有所不同。这些机制可以提高计算机系统的内存利用率、执行效率和数据传输速度,同时也可以提高计算机系统的安全性和稳定性。

15、进程有哪些状态?

进程是计算机系统中的一个重要概念,可以理解为正在运行的程序的实例。在操作系统中,进程可以处于以下几种状态:

  • 新建状态(New):当操作系统创建一个新进程时,进程处于新建状态。
  • 就绪状态(Ready):当进程已经准备好执行,等待系统分配处理器资源时,进程处于就绪状态。
  • 运行状态(Running):当操作系统分配处理器资源并开始执行进程时,进程处于运行状态。
  • 阻塞状态(Blocked):当进程需要等待某些事件发生时,例如等待 I/O 操作完成或等待某个信号,进程会进入阻塞状态,直到事件发生才会被重新调度。
  • 结束状态(Terminated):当进程完成其任务或被操作系统终止时,进程处于结束状态。

这些状态描述了一个进程在其生命周期中可能经历的状态变化。操作系统通过对进程状态的管理和调度,使得多个进程可以共享计算机资源,实现多任务操作系统的功能。

16、你能说说什么是分页和分段吗?都有哪些区别?

分页是将物理内存划分成固定大小的页面(Page),将逻辑地址空间划分成相同大小的页(Page)并映射到物理内存中。通过这种方式,可以将逻辑地址空间与物理内存空间分离,使得操作系统可以更加灵活地管理内存。

在分页机制中,操作系统将内存划分成相同大小的页面,通常是4KB或者8KB。当应用程序访问某个内存地址时,操作系统会将该地址转换为对应的物理地址,然后访问该物理地址对应的内存单元。分页机制的优点是管理简单,适用于内存碎片较多的情况,缺点是由于每个内存块的大小相同,导致了一些浪费。

分段是将逻辑地址空间划分成若干个大小不同的段(Segment),每个段都有自己的逻辑地址空间和长度,并且可以按照应用程序的需要进行分配和释放。分段机制可以更好地反映应用程序的逻辑结构,使得内存使用更加高效。

在分段机制中,每个段都有自己的基地址和长度,当应用程序访问某个地址时,操作系统会将该地址转换为对应的物理地址,然后访问该物理地址对应的内存单元。分段机制的优点是更加灵活,适用于内存碎片较少的情况,缺点是管理复杂,容易产生外部碎片。

分页和分段的主要区别在于内存管理的单位不同。分页是按照固定大小的页面进行管理,而分段是按照应用程序的逻辑结构进行管理。分页可以更好地控制内存使用,而分段可以更好地反映应用程序的逻辑结构。实际上,现代操作系统通常会将分页和分段结合起来使用,以充分发挥两种机制的优点。

17、什么是交换空间?

交换空间(Swap Space),也叫交换文件(Swap File),是指计算机硬盘中专门用于存放被操作系统交换出来的内存数据的空间。当计算机的物理内存不足时,操作系统会将一部分暂时不需要的内存数据(如进程占用的内存块)写入到交换空间中,以便释放物理内存供其他进程使用。

交换空间的作用是为了扩展物理内存容量,使得操作系统能够运行更多的进程。当物理内存不足时,操作系统会将一部分内存数据暂时写入交换空间中,直到需要时再从交换空间中读取数据回到物理内存中。在实际应用中,交换空间的大小通常是物理内存大小的两倍或三倍,以确保系统能够正常运行。

尽管交换空间可以扩展物理内存容量,但是过多的交换空间使用也会导致系统性能下降,因为硬盘访问速度远慢于内存访问速度。因此,在设置交换空间时需要权衡物理内存的容量和硬盘空间的使用情况,以达到最佳的系统性能和资源利用效率。

18、硬链接和软链接有什么区别?

硬链接和软链接是文件系统中两种常见的链接方式,它们的主要区别在于:

  • 硬链接(Hard Link)是指在同一个文件系统内,通过建立一个新的目录项(也就是另一个文件名),将该文件的文件名和 inode(文件的唯一标识符)都指向同一个物理文件块,使得这个文件有了多个文件名,这些文件名指向同一个物理文件。当删除某个硬链接时,只是删除了目录项,而不会影响其他的硬链接和文件本身。因为多个文件名都指向同一个物理文件,所以修改其中任意一个文件名所代表的文件内容,其他文件名所代表的文件内容也会跟着修改。
  • 软链接(Symbolic Link),也称为符号链接,是指在文件系统中建立一个新的文件,这个文件实际上只是一个指向另一个文件的指针,类似于快捷方式。软链接的文件名和 inode 号不同于被链接文件,它只是包含了指向被链接文件的路径信息。软链接可以跨越不同的文件系统,因此即使被链接的文件被删除,软链接仍然存在,但是指向的文件不存在了。

总的来说,硬链接创建的链接文件名和被链接的原始文件名的 inode 号是相同的,而软链接则是创建了一个新的文件,这个文件只包含指向被链接文件的路径信息。因此,硬链接不能跨越不同的文件系统,而软链接可以跨越不同的文件系统。另外,删除硬链接并不会删除原始文件,而删除软链接则可能导致被链接的原始文件无法访问。

19、中断的处理过程?

中断是计算机硬件或软件发生某些异常情况时的一种机制,它可以使 CPU 从当前正在执行的程序中断转到处理中断的程序中,以处理特殊事件或错误。

中断的处理过程一般包括以下几个步骤:

  • 中断发生。当计算机硬件或软件发生异常情况时,会向 CPU 发送一个中断请求(Interrupt Request,IRQ)信号,以请求 CPU 执行相应的中断处理程序。
  • 中断响应。CPU 接收到中断请求信号后,会立即停止当前正在执行的程序,并保存相关的寄存器和程序计数器等状态信息,以便稍后能够回到原来的程序继续执行。同时,CPU 会根据中断向量表(Interrupt Vector Table,IVT)中的中断号找到对应的中断处理程序的入口地址,并跳转到该地址开始执行中断处理程序。
  • 中断处理。中断处理程序根据中断类型和具体情况执行相应的操作,如读取设备数据、保存进程状态、打印错误信息等。在中断处理过程中,CPU 会保持特权级别不变,以便能够访问操作系统的内核空间和执行特权指令。
  • 中断结束。中断处理程序执行完毕后,CPU 会恢复保存的状态信息,并根据保存的程序计数器等信息返回到原来的程序继续执行。此时,CPU 会重新进入用户模式,并继续执行原来被中断的程序。

需要注意的是,不同类型的中断处理程序可能具有不同的优先级和响应时间要求。例如,紧急的硬件故障中断可能需要立即响应并处理,而一般的输入输出中断则可以稍后处理。因此,操作系统需要对不同类型的中断进行分类和优先级排序,以便能够高效地响应和处理中断请求。

20、中断和轮询有什么区别?

中断和轮询都是计算机处理输入输出设备的两种基本方式,它们的区别主要在于处理方式和效率上的不同。

中断是一种异步的处理方式,当输入输出设备有数据准备好或者发生异常情况时,设备会向处理器发送中断请求信号,以请求处理器执行相应的中断处理程序。中断处理程序会立即响应,对设备数据进行处理或者处理异常情况。中断处理程序的执行是由硬件中断控制器控制的,处理器不需要不断地检查设备状态,因此具有较低的处理器占用率和较高的响应速度。

轮询是一种同步的处理方式,处理器会不断地查询设备的状态,以确定设备是否有数据准备好或者发生了异常情况。如果设备有数据准备好或者发生了异常情况,处理器会立即对设备数据进行处理或者处理异常情况。轮询的处理方式需要不断地检查设备状态,因此具有较高的处理器占用率和较低的响应速度。

总的来说,中断和轮询都可以用来处理输入输出设备的数据,但中断处理方式具有较高的响应速度和较低的处理器占用率,适合于处理需要实时响应的任务;而轮询处理方式具有较低的响应速度和较高的处理器占用率,适合于处理较为简单的任务和对响应速度要求不高的任务。

21、你能说说孤儿进程,僵尸进程,守护进程吗?

  • 孤儿进程(Orphan Process)

孤儿进程是指其父进程已经终止或者异常退出,而该进程还在运行。孤儿进程由于没有父进程来对其进行管理和回收,因此会被操作系统的init进程接管,成为init进程的子进程,init进程负责对其进行回收和管理。孤儿进程不会对系统造成太大的负担,但会占用系统资源,因此及时回收孤儿进程是良好的进程管理习惯。

  • 僵尸进程(Zombie Process)

僵尸进程是指其已经执行完毕,但其父进程还没有对其进行回收,仍然占用系统资源。僵尸进程对系统造成的负担不大,但如果存在大量僵尸进程,会占用过多的系统资源,导致系统负载过高。操作系统会自动对已经执行完毕的进程进行回收,但如果父进程没有及时对其进行回收,就会产生僵尸进程。

  • 守护进程(Daemon Process)

守护进程是一种在后台运行的进程,通常用于完成一些系统级别的任务,如系统服务的启动和管理、日志文件的维护等。守护进程通常在系统启动时启动,会常驻在内存中并且不会接收终端输入。守护进程不会受到终端关闭、退出等事件的影响,其生命周期通常由操作系统管理。守护进程通常需要以root权限运行,因为它们需要对系统资源进行操作。

总的来说,孤儿进程、僵尸进程和守护进程都是进程的一种状态,它们在操作系统中扮演不同的角色和任务。及时回收孤儿进程和僵尸进程是保持系统稳定和高效运行的必要措施,而守护进程则是完成系统级别任务的重要方式。

22、微内核和宏内核有什么区别?

微内核和宏内核是操作系统内核的两种设计范式,它们有以下区别:

  • 架构设计

宏内核采用集成式的设计思路,将操作系统的所有功能都放在内核中实现,包括进程管理、内存管理、文件系统、网络协议栈等,因此内核体积庞大、复杂度高。而微内核则采用最小化的内核设计思路,只将最基本的功能放在内核中实现,其他功能则通过进程间通信(IPC)的方式在用户空间中实现,从而使得内核体积更小、复杂度更低。

  • 系统稳定性

宏内核由于内核功能过于庞大,所以内核本身的稳定性就显得尤为重要。而微内核将大部分功能放在用户空间中,当某个服务进程崩溃时,只会影响该服务进程本身,不会对整个系统造成灾难性后果,从而提高了整个系统的稳定性。

  • 系统性能

宏内核将大量的功能都实现在内核中,因此系统的性能相对微内核来说要更高一些,特别是在对于频繁的内核调用和对性能要求较高的场景下。而微内核由于采用了进程间通信机制,因此在某些场景下会因为通信的开销而影响系统性能。

  • 系统可定制性

由于微内核只实现了最基本的功能,因此系统的可定制性更强。用户可以根据需要添加、删除或替换服务进程,以满足不同的应用需求。而宏内核的设计思路则限制了系统的可定制性,因为宏内核包含了大量的功能模块,要修改或替换其中的某一个模块通常需要对整个内核进行重新编译和部署。

总的来说,微内核和宏内核是两种不同的操作系统内核设计思路,它们都有自己的优缺点。在实际应用中,应根据具体的场景和需求选择合适的内核设计思路。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分