操作系统面试高频(六)linux内核

1.内核态,用户态的区别⭐⭐⭐

内核态和用户态的区别主要在于权限和安全性。

  1. 权限:内核态拥有最高的权限,可以访问和执行所有的系统指令和资源,而用户态的权限相对较低,只能访问受限的指令和资源。内核态能够执行特权指令,如修改内存映射、管理硬件设备等,而用户态不能直接执行这些特权指令。
  2. 安全性:由于内核态具有较高的权限,错误的操作或滥用权限可能会导致系统崩溃或不安全。为了保护系统的稳定性和安全性,将操作系统的核心部分放在内核态下运行,限制用户态的权限。用户态的应用程序必须通过系统调用的方式向内核请求操作系统提供的服务和资源,这样可以有效地控制用户程序对系统的影响范围。
  3. 进入内核态的方式:进入内核态有三种方式,分别是系统调用、异常和设备中断系统调用是应用程序主动向内核请求服务的方式;异常是由应用程序中的错误或异常情况触发的,如非法指令、内存访问越界等;设备中断是外部设备产生的中断信号,需要内核处理。

2.段页式内存管理有何优点?⭐⭐⭐

段页式内存管理结合了段式内存管理和页式内存管理的优点,提供了灵活性、保护性、共享性和虚拟化支持。

灵活性:

  • 将内存划分为段和页的组合,既可以方便地管理不同类型的程序和数据,又可以细致地进行内存分配和利用。

保护性:

  • 通过设置段和页的访问权限,可以对内存进行精细的访问控制,保护数据的安全性。

共享性:

  • 段页式内存管理支持多个程序共享同一段或同一页面,减少内存重复存储,提高内存利用效率。

虚拟化支持:

  • 通过页表和页面地址转换,实现虚拟地址到物理地址的映射,为虚拟内存提供支持,提高系统的内存容量和隔离性。

3.Linux内核的组成⭐⭐

  1. 进程管理:负责创建、管理和调度进程,包括进程的创建、销毁和调度等功能。
  2. 内存管理:负责管理内存资源,包括物理内存的分配与释放、虚拟内存的映射与管理等。
  3. 文件系统:提供对存储设备和文件的访问接口,支持各种文件系统格式。
  4. 设备驱动:提供对硬件设备的抽象和控制接口,支持各种设备驱动程序。
  5. 网络协议栈:实现了各种网络协议,提供网络通信的功能。
  6. 系统调用:提供用户空间程序与内核之间的接口,允许应用程序调用内核提供的功能和服务。

4.系统调用的作用⭐⭐

提供资源访问:

  • 应用程序可以通过系统调用请求访问操作系统提供的资源,如文件的读写、网络通信和设备访问等。

实现用户态与内核态切换:

  • 应用程序通常运行在用户态,而某些操作需要在内核态执行。通过系统调用,应用程序可以将控制权切换到内核态,让操作系统核心来完成特权操作。

提供操作系统服务:

  • 系统调用封装了操作系统提供的各种服务和功能,如进程管理、内存管理、文件系统操作和网络通信等。应用程序可以通过系统调用使用这些服务。

实现进程间通信:

  • 系统调用提供了进程间通信的机制,允许不同的应用程序进行数据交换和协作。应用程序可以通过系统调用进行消息传递、共享内存访问等操作。

5.系统调用read()/write(),内核具体做了哪些事情?⭐⭐⭐

  1. 用户空间发起read()/write()系统调用,并将参数传递给内核。
  2. 内核根据系统调用号找到相应的内核函数进行处理,如sys_read()/sys_write()。
  3. 内核根据文件描述符找到对应的文件对象,并执行读取或写入操作。
  4. 在读取操作中,内核将数据从文件或设备读取到内核空间,并通过页缓存层进行管理。
  5. 在写入操作中,内核将数据从用户空间拷贝到内核空间,并通过文件系统层将数据写入文件或设备。
  6. 内核可能会通过缓存管理、块设备管理和驱动程序等层次对数据进行处理和传输。
  7. 处理完成后,内核将结果返回给用户空间,并用户空间继续执行下一步操作。

6.bootloader内核和根文件的关系⭐

嵌入式Linux系统从软件角度可以分为四个主要部分:引导加载程序(Bootloader)、Linux内核、文件系统和应用程序。这些部分共同构成了完整的嵌入式系统。

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

c++/嵌入式面经专栏 文章被收录于专栏

本人2022年毕业于山东大学,目前就职国内某芯片厂。打算把之前校招时做的笔记通过专栏发出来,本专栏适合于C/C++、嵌入式方向就业的同学,本篇面经总结数千篇面经的知识集合,实时更新全网最新的嵌入式/C++最新内容,囊括了C语言、C++、操作系统、计算机网络、嵌入式、算法与数据结构、数据库等一系列知识点,在我看来这些是求职者在面试中必须掌握的知识点。最后呢祝各位能找到自己合适的工作。

全部评论

相关推荐

3 23 评论
分享
牛客网
牛客企业服务