目录
(6)什么是文件系统的磁盘块(block)?它是如何分配的?
1. 什么是操作系统?它的主要功能有哪些?
操作系统(OS)是管理计算机硬件与软件资源并为计算机程序提供服务的系统软件。它充当了计算机硬件与用户之间的中介。操作系统的主要功能包括:
- 进程管理:管理和调度运行中的进程,确保它们能够有效地共享 CPU 时间。
- 内存管理:分配和回收内存,确保程序有足够的内存来运行。
- 文件系统管理:管理文件的存储、读取和访问权限。
- 设备管理:管理输入输出设备,提供与硬件的交互。
- 安全与保护:确保系统资源的安全性,并防止未经授权的访问。
- 用户界面:提供用户与系统的交互接口,通常是命令行或图形用户界面。
2. 进程管理部分。
(1)进程、线程、纤程。
- 进程:是操作系统管理资源的最小单位,每个进程有独立的资源和内存空间。
- 线程:是进程内的最小执行单元,多个线程共享进程的资源,适合并发任务。
- 纤程(协程):是一种用户管理的轻量级线程,通常用于细粒度的控制和高效的协作式任务切换。
(2)进程的五态模型。
- 其中只有就绪状态和运行状态能互相转化,当进程为就绪态时,等待 CPU 分配时间片,得到时间片后就进入 运行状态
- 运行状态在使用完 CPU 时间片后,又重回就绪态。
- 阻塞状态是进程在运行状态时,需要等待某个资源比如打印机资源,而进入一个挂起的状态,等资源拿到后会回到就绪状态,等待 CPU 时间片。
(3)进程间通信。
(4)什么是进程调度算法?请列举几种常见的进程调度算法。
(5)什么是线程同步?常见的线程同步机制有哪些?
- 管道(Pipe):提供了一种流式的通信方式,常用于父子进程之间的数据传递。
- 消息队列(Message Queue):通过队列来存储和传递消息,支持异步通信。
- 共享内存(Shared Memory):多个进程共享一块内存区域,直接读写内存来实现通信,效率高,但需要同步机制来避免竞争。
- 信号量(Semaphore):通过信号量来控制进程的访问,常用于同步操作。
- 套接字(Socket):用于不同计算机之间的通信,支持基于TCP/IP协议的网络通信。
(6)什么是死锁?死锁产生的四个必要条件是什么?
死锁是指两个或多个进程因争夺资源而导致相互等待的现象,这些进程无法继续执行下去,形成了一个“僵局”。
死锁产生的四个必要条件:
(1)互斥条件:一个资源每次只能被一个进程使用,即在一段时间内某 资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。
(2)持有并等待条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源 已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。
(3)不剥夺条件:进程所获得的资源在未使用完毕之前,不被其他进程强行剥夺,而只能由获得该资源的进程资源释放。
(4)循环等待条件:存在一种进程资源的循环等待关系,即进程 A 等待进程 B 持有的资源,进程 B 又等待进程 A 持有的资源。
(7)生产者和消费者模型。
生产者-消费者模型:是一种经典的多线程或多进程同步与通信模型,主要解决两个进程(或线程)如何协调地共享资源的问题。其核心是生产者负责生成数据,而消费者则负责消费数据。为了避免资源的争用、数据不一致或丢失,通常会使用一个共享缓冲区来暂存生产者和消费者的数据。
Ⅰ、模型描述
- 生产者:负责生成数据,并将数据放入共享缓冲区(通常是队列或缓冲区)。
- 消费者:从共享缓冲区取出数据进行处理(消费)。
- 缓冲区:用来存储生产者生成的数据,消费者从这里取出数据。缓冲区通常有大小限制,因此可能会出现两种情况:
- 缓冲区满:生产者需要等待直到消费者消费一些数据。
- 缓冲区空:消费者需要等待直到生产者生产出新的数据。
Ⅱ、问题的关键点
- 同步问题:生产者和消费者需要协调对缓冲区的访问,避免并发冲突。
- 互斥问题:多个进程或线程对缓冲区的访问需要是互斥的,以防止同时读写导致数据错误。
- 死锁和饥饿问题:如果生产者和消费者没有适当的条件和规则,可能会导致系统进入死锁状态或某一方长期等待,造成饥饿现象。
(8)协作型多任务和抢占型多任务?区别是什么?
协作型多任务:进程在执行时主动让出 CPU,操作系统不会强制抢占。
抢占型多任务:操作系统定期中断进程,强制切换 CPU 给其他进程。
(9)用户态、内核态。如何从用户态切换到内核态呢?
从用户态切换到内核态的方法。
系统调用:用户程序通过API(如文件操作、网络请求)触发软中断(如
int 0x80
或syscall
指令),CPU切换到内核态执行内核代码。硬件中断:外部设备触发中断(如键盘输入、定时器中断),CPU暂停用户程序,进入内核处理中断。
异常:程序执行错误(如除零、页错误),强制切换到内核态处理异常。
(10)什么是单核、多核处理器?
单核处理器:指一个物理处理器芯片中只包含一个处理核心,每次只能执行一个任务,不能多个任务同时执行。
多核处理器:指一个物理处理器芯片中包含多个处理核心,每个核心都可以独立执行指令。多核处理器能够真正实现并行计算,每个核心都可以同时执行不同的任务或线程。
这里又延申出并发和并行的概念。
(11)为什么上下文切换会有开销?
上下文切换是操作系统保存当前进程的状态(上下文)并恢复另一个进程的状态。它会导致性能开销,因为涉及到寄存器、程序计数器等信息的保存和加载,可能还会涉及缓存失效和 TLB(翻译后备缓冲区)刷新等操作。
(12)进程控制块PCB。
进程控制块(PCB)是操作系统用来管理每个进程的信息结构,包含:进程状态、程序计数器(PC)、CPU 寄存器、内存管理信息、I/O 状态信息、进程优先级等。
(13)多级反馈队列调度算法。它如何平衡响应时间和吞吐量?
多级反馈队列调度算法使用多个队列,每个队列有不同的优先级。新进程进入最高优先级队列,若执行时间超过某个阈值,则被移到较低优先级队列。它通过动态调整进程优先级平衡响应时间和吞吐量。