操作系统面试问题(4)
32.什么是操作系统
操作系统是一种管理硬件和软件的应用程序。也是运行在计算机中最重要的软件。它为硬件和软件提供了一种中间层,让我们无需关注硬件的实现,把心思花在软件应用上。
通常情况下,计算机上会运行着许多应用程序,它们都需要对内存和CPU进行交互,操作系统就是为了保证这些交互能够准确运行。
33.操作系统的主要功能
进程管理:在单核处理器下,操作系统只需给每个进程一个任务,管理起来很简单。而在多核处理器下,又要为进程分配任务,又要管理处理器的调度、分配、回收。
内存管理:操作系统要管理内存的分配、回收。在进程需要的时候分配内存,进程完成后回收内存,协调内存资源,通过合理的页面置换算法进行页面的换入换出。
设备管理:根据确定的设备分配原则对设备进行分配,使设备和主机能够并行工作。
文件管理:有效管理文件存储空间,让文件访问和文件保护更有效。
提供用户接口:使用户能够通过应用程序发起系统调用操控硬件。
34.操作系统的目的
(1)管理计算机资源,包括CPU、内存、磁盘、打印机
(2)提供图形界面,以供用户操控硬件
(3)为其他软件服务,操作系统与软件交互,为其分配资源。
35.为什么Linux系统下的应用不能在Windows下运行
最本质的原因就是格式不同和API不同,Linux的API指的是系统调用,而Windows的API指的是DLL,这是一个库,里面包含代码和数据。
36.陷入内核
“陷入内核”(Trap into Kernel) 是操作系统中的一种关键机制,指用户态程序主动或被动触发切换至内核态,由操作系统内核接管执行权限的过程。其核心目的是安全地访问受保护的硬件或系统资源。
38.用户态和内核态
内核态:特权级为0,处于内核态的CPU可以访问任意数据,可以从一个程序切换为另一个程序,并且不会发生抢占情况。
用户态:特权级为3,CPU只能访问受限的内存,不允许访问外围设备(如网卡、硬盘),CPU不允许独占,能够被其他程序获取。
39.用户态和内核态的切换
用户程序调用glibc库
- glibc作为标准库,封装了系统调用的关键API(如
open()
、write()
)。- 根据CPU体系结构(如ARM/x86)和应用程序二进制接口(ABI)设置参数。
触发模式切换
- glibc调用软件中断指令(SWI),触发特权级切换:
- 更新CPSR寄存器(ARM架构),将CPU模式改为超级用户模式(内核态)。
- 跳转到固定地址 0x08(ARM的异常向量表入口)。
内核态处理
- 从地址0x08开始执行中断处理程序(ARM中为
vector_swi()
):
- 从SWI指令中提取系统调用号(SCNO)。
- 以SCNO为索引,查系统调用表
sys_call_table
,跳转到对应的内核函数(如sys_write
)。返回用户态
- 系统调用执行完成后:
- 恢复用户模式的寄存器状态。
- CPU切换回用户模式,程序继续执行。
40.什么是内核
内核是操作系统的最核心程序,直接控制计算机所有硬件和软件资源,是Bootloader完成初始化后加载的第一个程序。
引导加载程序(Bootloader)
- 定义:负责将操作系统内核从磁盘加载到内存的小型程序。
- 工作流程:
- 硬件启动:电源通电或重启时,BIOS执行硬件自检(POST)。
- 定位Bootloader:BIOS读取磁盘的主引导记录(MBR)或UEFI查找ESP分区中的引导程序。
- 加载内核:Bootloader将内核镜像(如Linux的
vmlinuz
)从磁盘载入内存,并移交控制权。启动流程全貌
- BIOS → 2. Bootloader(MBR/ESP) → 3. 内核加载 → 4. 操作系统初始化