1. 操作系统的特点·

并发性:两个或多个程序在同一时间间隔内运行

共享性:系统中的资源可供内存中多个并发执行的进程共同使用

虚拟性:通过虚拟化技术,将物理资源转化为逻辑上的资源

异步性:进程以不可预知的速度向前推进

最基本的特征:并发、共享

2. 操作系统的功能·

处理机管理:分配和管理CPU资源

存储器管理:对内存进行分配,保护和扩充

文件管理:负责文件的存储、组织和访问

设备管理:负责管理各种外部设备

用户接口:提供用户与操作系统交互的方式

3. 进程和线程·

进程:程序的一次执行实例,是系统资源分配的基本单位

  • 组成:代码段、数据段、堆栈段、进程控制块PCB

线程:进程中可独立执行的子任务,是CPU调度的基本单位

  • 分类:用户线程、内核线程

区别

  • 进程拥有独立的系统资源,而同一进程的线程共享进程的资源
  • 进程创建、销毁和切换的开销大于线程
  • 进程之间相互独立,线程之间不是完全独立的

fork:创建一个新的子进程,完全复制父进程的空间,在父进程中返回子进程的pid,在子进程中返回0

4. 进程间的通信方式·

共享内存:允许多个进程访问同一块物理内存

消息传递:通过发送和接收消息来进行通信

管道:数据在管道中以字节流的形式单向传输

套接字:通过IP地址和端口号的组合来唯一标识一个通信端点

5. 进程的状态·

就绪状态:进程已经分配到除了处理机之外所有的执行所需要的资源,一旦获得处理器就可以立刻执行;

执行状态:进程获得处理机并且在处理器上执行;

阻塞状态:当执行中的程序由于等待某个事件发生而无法执行时,放弃处理机从而进入阻塞状态,例如等待 I/O 完成。

三种状态之间的相互转换:

执行状态的程序遇到 I/O 请求等将会转入阻塞状态。

I/O 请求完成时会进入就绪状态。

获得处理机之后将重新进入执行状态。

执行状态的程序当时间片用完时,将会重新回到就绪状态。

6. 进程调度算法·

先来先服务调度算法:按照进程到达的先后顺序进行调度,先到达的进程先执行

  • 非抢占式调度算法,可能导致长进程阻塞短进程

短作业优先调度算法:选择估计运行时间最短的进程优先执行

  • 需要预先知道每个进程的运行时间,可能导致长进程饥饿

高响应比优先调度算法: 响应比 = (等待时间 + 运行时间) / 运行时间

  • 非抢占式调度算法,需要预先知道每个进程的运行时间

优先级调度算法:为每个进程分配一个优先级,优先级高的进程先执行

  • 可能导致低优先级进程饥饿

时间片轮转调度算法:为每个进程分配一个时间片,当时间片用完后,进程被放到就绪队列末尾,等待下一次调度。

  • 高频切换开销大,不区分任务的紧急程度

多级反馈队列调度算法:将就绪队列分成多个优先级不同的队列,每个队列采用不同的调度算法。新创建的进程首先进入最高优先级的队列,如果它在该队列的时间片内没有完成,就会被移到下一个更低优先级的队列中。

7. 进程的同步与互斥·

同步:多个相关进程在执行次序上的协调

互斥:每次只允许一个进程对临界资源进行访问

互斥的软件实现

  • 单标志法:每个进程在访问完临界区后,把使用临界区的权限转交给另一个进程
  • 双标志先检查法:每个进程进入临界区前先检查当前有没有别的进程想进入临界区,如果没有,则把自身对应标志元素设为true
  • 双标志后检查法:先上锁后检查
  • Peterson算法:如果双方都争着想进入临界区,则让进程尝试谦让临界资源

互斥的硬件实现:中断屏蔽方法、TestAndSet指令、Swap指令

信号量机制

  • wait(P操作)表示要获得一个信号量;signal(V操作)表示要释放一个信号量
  • 同步:初始化信号量为0,在前操作之后执行V操作,在后操作之前执行P操作
  • 互斥:初始化信号量为资源数,临界区前执行P操作,临界区后执行V操作

8. 中断、异常和系统调用·

中断:一种打断处理器当前执行的任务,转而处理其他更为紧急的任务的机制

异常:是指在程序执行过程中发生的异常情况,如程序错误(比如除零错误、非法操作码等)或某些系统调用。

系统调用:运行在用户模式的程序请求操作系统内核提供服务的一种方式

区别

  • 触发方式:中断是由外部事件触发的,异常是由程序内部错误触发的,而系统调用是由用户程序主动发起的。
  • 处理程序:中断和异常通常由操作系统的内核预先定义的处理程序处理,而系统调用则调用内核提供的服务函数。
  • 同步性:系统调用和异常是通常是同步发生的,而中断是异步的。

9. 死锁·

定义:两个或两个以上的进程在执行过程中,由于竞争资源造成的一种阻塞现象,若无外力作用,它们都无法推进下去。

必要条件

  • 互斥:某种资源在某一时刻只能由一个进程使用
  • 占有并等待:进程已经持有至少一个资源,并且等待获取其他进程持有的资源
  • 非抢占:资源不能被抢占,只能在持有它的进程完成任务后自动释放
  • 循环等待:进程集合中的每个进程都在等待下一个进程持有的资源

预防:确保至少有一个死锁的必要条件不成立

  • 破坏互斥:将互斥资源改造成共享资源
  • 破坏占有并等待:采用静态分配策略,保证进程申请资源的时候没有占有其他资源
  • 破坏非抢占:允许从等待进程中抢占资源
  • 破坏循环等待条件:采用顺序资源分配策略,对资源编号并排序,要求进程按照递增顺序申请资源

避免

  • 资源分配图法:构建进程和资源的有向图,检测图中是否存在环路
  • 银行家算法:确保系统能够找到一个安全序列,使每个进程最终都能获得所需资源

10. 内存管理·

虚拟内存:将数据从物理内存交换到硬盘上,提供比实际物理内存更大的地址空间

分页:将物理内存划分为固定大小的单元,称为页框,将虚拟内存划分为同样大小的单元,称为页,通过页表将虚拟地址中的页号映射到物理地址中的页框号。

分段:将虚拟内存划分为若干个逻辑段,通过段表将逻辑段映射到物理内存。

区别

  • 页是信息的物理单位,对用户是透明的,段是信息的逻辑单位,对用户是可见的
  • 分页使用固定大小的内存单元,分段使用可变长度的内存单元
  • 分页可能导致内部碎片,分段可能导致外部碎片

11. 页面置换算法·

先进先出置换算法:置换最早进入内存的页面

  • 实现简单,但可能导致较高的缺页率

最优置换算法:置换未来最长时间不会被使用的页面

  • 缺页率最低,但需要预知未来的页面访问序列

最近最少使用置换算法:置换最长时间未被访问的页面

  • 性能较好,但实现相对复杂

时钟置换算法:为每个页面设置一个访问位,并将内存中的页面链接成一个循环队列。当某页被访问时,将访问位置为1。当需要淘汰一个页面时,算法检查该页的访问位,如果为0,则选择该页置换;如果为1,则将其置为0。

改进型时钟置换算法:置换时优先选择既未被访问也未被修改的页面

参考链接·

https://zhuanlan.zhihu.com/p/95074724