结丹期
8. 什么是死锁?如何预防和解决死锁问题?
死锁就是指多个进程都在互相等待,A
等着 B
执行完成,B
等着 C
执行完成。最终相互等待,导致永远无法继续执行。
预防死锁:在资源分配时避免产生循环等待,可以使用银行家算法等策略防止死锁。
解决死锁:
在进程运行前,确保资源分配不会导致死锁。
检测死锁,发生死锁时强制结束
动态分配资源,确保死锁不会发生
9. 内存分页机制如何工作?TLB(Translation Lookaside Buffer)在其中的作用是什么?
分页机制 将内存划分为大小相等的页,程序的虚拟地址分为页号和页内偏移,操作系统根据页表将虚拟地址转换为物理地址。
TLB
是 CPU
中的缓存,用来加速虚拟地址到物理地址的转换。
它存储了常用的虚拟地址和物理地址映射,减少了每次访问内存都要查找页表的开销。如果 TLB
缓存未命中,则需要查找页表。
总的可以理解为:分页就是将内存划分为了相等的很多个区域,就像我们写信一样,写满一页再写下一页。每页都有一个页码,通过页码以及在页码内的格数偏移就可以找到最终的地址。
TLB
就是缓存了这个地址,当需要访问的时候,首先通过 TLB
进行查找。
10. 什么是上下文切换?它对系统性能有什么影响?
指操作系统在调度 CPU
时,将当前运行进程的状态保存并加载新进程的状态。这包括寄存器、程序计数器和内存映射的切换。
上下文切换会引入额外的开销,包括保存和加载进程状态的时间。
频繁的上下文切换会影响系统性能,增加 CPU
负担,降低进程执行效率。
11. 用户态与内核态的区别是什么?为什么需要有这两种模式?
用户态就是应用程序运行的模式,限制访问硬件资源。
内核态是操作系统核心运行的模式,具有完全的硬件资源访问权限。
通过划分用户态和内核态,系统可以保护关键的资源和数据,防止恶意或错误的应用程序影响系统稳定性。
用户态无法直接访问硬件资源,必须通过系统调用请求内核态执行操作。
也就是说,当我们在开发时我们都是通过系统级别的接口来去执行硬件资源的访问。
12. 什么是文件系统?常见的文件系统有哪些?
文件系统简单来说就是:用于管理和组织存储设备上,文件和数据的结构和方法。它负责如何存储、如何检索、如何管理文件。
常见的文件系统包括:
FAT32:适用于小型设备,兼容性广,但不支持超过
4GB
的单个文件。NTFS:
Windows
常用文件系统,支持大文件,具备安全特性(权限控制、加密等)。ext4:
Linux
常用文件系统,支持大文件和高效的文件管理。APFS:
Apple
系统中的文件系统,优化了SSD
性能。
13. RAID 是什么?它有哪些类型?
RAID 是将多个物理磁盘组合为一个逻辑单元,以提高数据冗余和性能的技术。
RAID 类型:
RAID 0:数据条带化(无冗余),提高性能,但无容错能力。
RAID 1:镜像模式,数据冗余,每个磁盘都有副本,具备高容错能力。
RAID 5:分布式奇偶校验,提供数据冗余和更好的存储效率。
RAID 6:双奇偶校验,支持多盘故障。
RAID 10:
RAID 0
和RAID 1
结合,既提供性能提升,又有数据冗余。
14. 什么是大端和小端(Big-endian 和 Little-endian)?它们在计算机系统中有何区别?
大端和小端是两种数据在内存中存储的字节顺序。
大端模式:高位字节存储在低地址,低位字节存储在高地址。大端模式与人类阅读数字的习惯相符。
如,数值
0x12345678
在内存中的存储顺序为:地址 -> 内容 0x00 -> 12 0x01 -> 34 0x02 -> 56 0x03 -> 78
小端模式:低位字节存储在低地址,高位字节存储在高地址。
例如,同样的数值
0x12345678
在内存中的存储顺序为:地址 -> 内容 0x00 -> 78 0x01 -> 56 0x02 -> 34 0x03 -> 12