操作系统各章重点

版权声明:就是开个版权玩一下 https://blog.csdn.net/qq_41997479/article/details/86373108

(PS:个人课下整理的操作系统笔记,OneNote直接拷贝过来的,图片看不了就将就一下,配合张伟老师的PPT看效果更好)

第一章

1.什么是操作系统

2.计算机系统的组成部分(4个)

3.中断的类型(4个)程时I硬,

什么是中断(当CPU中断时,它暂停正在做的事并立即转到固定的位置去执行)

4.中断向量:中断有中断处理程序,中断处理程序有中断处理子程序,(子程序有指针表,指针表位于低地址),子程序的地址数组称为中断向量,它可以提供中断处理子程序的地址

5.什么是内存

6.什么是DMA,该设备控制器能在本地缓冲和内存之间传送一整块数据,无需CPU干预

7.什么是多道程序设计

8.陷阱是一种软件中断,知道用户模式和内核模式以及之间的转换书上P17

 

第二章

1.什么是系统调用(提供了操作系统提供的有效服务界面)

Provide  the interface between a running program and operating system

2.向操作系统传递参数的三种方法:寄存器,压入堆栈、块或堆栈

3.系统调用的类型:进程控制、文件管理、设备管理、信息维护、通信

4.操作系统的结构:简单结构、分层方法、微内核

 

第三章

1.什么是进程

2.什么是PCB

3.一次只有一个进程可以在一个处理器上运行,但是多个进程可以处于就绪或者等待状态

4.什么是消息传递系统(多个进程不必通过共享地址空间…..,直接通信和间接通信)

 

第四章

1.什么是线程

2.不管有多少CPU,单线程进程只能运行在一个CPU上

3.多线程模型,多对一,一对一,多对多

4.多线程的fork()与exec(),如果fork后面紧跟exec(exec的参数所制定的程序会替换整个进程),则fork仅复制进程中被调用的那个线程,如果只有fork,应该复制进程中的所有线程

 

第五章

1.CPU调度是多道程序操作系统的基础

 

第六章

1.什么是协作进程(可以与系统内正在执行的其他进程相互影响的进程)

2.什么是竞争条件(多个进程并发执行并操作同一个数据,且执行结果与访问发生的特定顺序有关)

3.临界区问题的解答满足三个要求(互斥,前进,有限等待)

4.Test and set 和Swap都解决了互斥,但是没有解决有限等待的要求,这两个属于硬件 同步问题

5.什么是信号量(是个整数变量,只有wait和signal两个原子操作)

6.信号量的缺点是忙等待,浪费CPU时钟,这种类型的信号量也叫自旋锁(spinlock),如果锁占用时间短,那么自旋锁就有用了,自旋锁常用于多处理器

 

第七章

1.什么是死锁

2.死锁满足的四个必要条件

3.资源分配图的表示方法(圆形表示进程,方形表示资源)

4.死锁的处理方法:3方面

  1. 确保系统不发生死锁
    1. 死锁预防(互斥,占有并等待,非抢占,循环等待)
      1. 互斥——非共享资源有互斥条件(资源本身性质决定)
      2. 占有并等待——一个资源在申请资源时,不能占有其他资源 缺点:资源利用率低,可能饥饿(静态资源分配图)
      3. 非抢占——如果一个进程占有资源但申请不能立即分配的资源,他的现有资源可以被抢占(资源本身性质决定)
      4. 循环等待——为每个资源排序,进程按资源的升序申请(有序资源分配法)
    2. 死锁避免(一年一道大题)
      1. RAG
      2. BA
        1. 安全性算法
          1. 初始化Finish[i]=false,work=Available
          2. 对每一个i,如果找到finish[i]=false&&Needi<=work,没有就跳到d)
          3. Work=work+Allocationi,Finish[i]=true
          4. 如果所有的finish[i]=true,则系统处于安全状态
        2. 资源请求算法
          1. 如果requesti<=needi,else产生出错条件
          2. 如果requesti<=Available,else必须等待
          1. Available=Available-requesti

Allocationi=Allocationi+requesti

Needi=Needi-requesti

  1. 如果状态安全,则Pi可以被分配资源

 

  1. 系统可以死锁,提供检测和恢复
    1. 死锁检测
      1. 类BA
        1. 初始化if allocation[i]!=0,Finish[i]=false,else =true
        2. 找到一个i满足finish[i]=false&&Needi<=Work
        3. Work=Work+Allocationi;Finish[i]=true
        4. 如果找到finish[i]=false,则系统处于死锁状态
  2. 忽视问题,重启

猜你喜欢

转载自blog.csdn.net/qq_41997479/article/details/86373108