操作系统
- 什么是操作系统
- 进程和线程的区别是什么
- 操作系统的主要功能是什么
- 解释多道程序设计
- 什么是死锁?如何防止死锁 什么是抖动,抖动的原因是什么
- 什么是缓冲区溢出,溢出的危害和原因
- 缓冲区的作用
- 低级调度的对象和作用
- 处理机三级调度
- 简述拼凑/紧凑技术
- 什么是TLB,在虚拟内存中的作用是什么
- 如何防止进程间的内存访问冲突
- 虚拟内存是什么?为什么需要它
- 文件系统的作用是什么
- 什么是进程调度?有哪些常见的进程调度算法
- 描述进程同步和进程互斥
- 什么是进程间通信(IPC)
- 什么是僵尸进程和孤儿进程
- 进程和线程的优缺点是什么
- 什么是页面置换算法?有哪些常见的页面置换算法
- 描述内存管理中的分段和分页
- 什么是地址空间和逻辑地址空间
- 什么是缺页中断
- 文件系统的基本组成部分是什么
- 什么是索引节点(Inode)
- 解释文件锁定和文件保护
- 文件系统的一致性和完整性是什么
- 什么是设备驱动程序
- 描述轮询和中断驱动的设备控制方式
- 什么是 DMA(直接内存访问)
- 解释设备的虚拟文件系统
- 什么是安全性和保护性
- 描述访问控制列表(ACL)和权限位的区别
- 什么是实时系统
- 实时系统和一般操作系统的主要区别是什么
- 描述 Linux 中的进程调度算法
- 解释 Linux 中的文件系统层次结构
- 什么是 Linux 中的虚拟文件系统(VFS)
什么是操作系统
操作系统是系统软件的一部分,负责管理计算机的硬件和软件资源。位于硬件和应用程序之间的接口,它提供了一个抽象层,使得应用程序可以方便地与硬件交互,同时确保系统的安全性和稳定性。操作系统的主要功能包括进程管理、内存管理、文件系统管理、设备管理和用户接口
进程和线程的区别是什么
定义:
进程是一个独立的执行实体,有自己独立的内存空间、文件描述符、系统资源等。
线程是进程的执行单元,共享进程的内存空间和其他资源。
资源开销:
进程之间相互独立,创建和销毁的开销较大,因为每个进程都有自己的独立地址空间。
线程是进程内的轻量级执行单元,创建和销毁的开销较小,因为线程共享相同的地址空间。
通信和同步:
进程间通信(IPC)较为复杂,需要使用专门的机制,如管道、消息队列等。
线程之间共享同一进程的地址空间,可以通过共享的变量直接进行通信。
独立性:
进程是独立的,一个进程的崩溃通常不会影响其他进程。
线程是共享进程内存的,一个线程的错误可能会影响到其他线程,因此需要注意同步问题。
切换开销:
进程切换的开销较大,因为需要保存和恢复完整的进程上下文。
线程切换的开销相对较小,因为它们共享相同的地址空间,切换时只需要保存和恢复寄存器等少量上下文信息。
多核利用:
进程可以在多个核上并行执行,每个进程有自己的独立执行流。
线程在多核系统上更容易实现并行,因为它们共享相同的地址空间,可以更方便地共享数据。
创建和销毁:
进程的创建和销毁相对较慢,因为它们需要分配和释放独立的地址空间和资源。
线程的创建和销毁相对较快,因为它们共享进程的资源。
联系:都有自己的上下文,包过程序计数器、寄存器、内存等。同一个进程内的多个线程,他们共享内存和资源,一个进程可以包含多个线程。
操作系统的主要功能是什么
操作系统是一个系统软件,基本特征包括并发、共享、虚拟、异步。作为计算机系统资源的管理者,提供了处理机管理、存储器管理、设备管理、文件管理。为了让用户有效的操作计算机,操作系统还提供了用户接口,包过命令接口和程序接口。同时,操作系统可以用来扩充机器,以提供更方便的服务、更高的资源利用率。
解释多道程序设计
是一种内存管理技术,同时运行多个程序。这些程序在系统的管理下交替运行,共享资源,提高了CPU的利用率和系统效率,提高了计算机的并发性
什么是死锁?如何防止死锁 什么是抖动,抖动的原因是什么
死锁就是多个进程因竞争资源而造成的一种僵局(互相等待),若没有外力作用,他们将无法向前推进。
产生的原因是系统资源的竞争和进程推进顺序非法。从死锁预防、避免死锁和死锁的检测和解除来解决死锁问题。
死锁预防:破坏互斥条件(一般不提倡)、破坏不可剥夺条件(释放资源,比如寄存器)、破坏请求和保持条件(一次性分配所有资源)、破坏循环等待条件(给系统资源编号)。
避免死锁:采用某种机制(比如银行家算法),避免让系统进去不安全状态,所谓安全状态是指系统能按照某种进程推进顺序为每个进程分配资源,使得每个进程都可以顺利完成。
死锁检测和解除:撤销进程、进程回退、资源剥夺法则。
抖动是刚刚换出的页面又要马上换入主存,刚刚换入的页面又要换出主存,发生了频繁的页面调度。发生抖动的根本原因是系统中同时运行的进程太多,分配个每个进程的物理块太少,不能满足进程正常运行且页面置换算法选择不当。
什么是缓冲区溢出,溢出的危害和原因
定义:一个程序尝试将更多的数据放入一个固定大小的缓冲区,当数据大小超过了缓冲区大小,就会溢出到相邻的内存,覆盖其他空间的数据。
危害:溢出的数据会覆盖原有数据,导致数据丢失;破坏程序的执行流程,导致程序异常终止
原因:输入数据量过大和缺乏输入安全验证或者缓冲区大小计算错误。
缓冲区的作用
平衡不同设备之间的速度差异,提高数据处理效率,实现数据的批量处理,减少对CPU的中断频率,提高并行性
低级调度的对象和作用
按照某一种算法从就绪队列中选取一个进程,将处理机分配给它,它是最基本的,必不可少的。
处理机三级调度
高级调度:从外存上处于后备队列的作业中选一个,给他们分配内存、输入输出设备等,并且建立相应的进程,是在内存和辅存之间的调度
中级调度:为了提高内存利用率和系统吞吐量,将暂时不能运行的进程调到外存挂起,称为挂起态。属于存储器的对换功能。
低级调度:见上
简述拼凑/紧凑技术
动态分区会产生很多外部内存碎片,可以通过紧凑技术来解决,需要动态重定位寄存器的支持
什么是TLB,在虚拟内存中的作用是什么
用于缓存虚拟地址到物理地址的翻译结果,提高了地址翻译的速度
如何防止进程间的内存访问冲突
通过内存保护机制来防止进程间的内存访问冲突,每个进程都有自己的独立的地址空间。常见的内存保护机制有:内存分页、段式存储管理、缓冲区溢出保护、寄存器上下界保护法等等