黄底的字是我还不懂的地方,如果有知道的小伙伴可以私戳我或者评论,感激不尽ღ( ´・ᴗ・` ),期末加油!
Exception
概念
中断 指CPU 在收到外部中断信号后,停止原来工作,转去处理该中断事件,完毕后回到原来断点继续工作。
操作系统-复习笔记整理
exception:非法的程序操作
interrupt:硬件设备发出的信号
system call:用户程序通过系统调用请求操作系统服务
CPU每执行完一条指令,都要检查是否有未响应的中断信号(这张图里的interrupt包括exception,interrupt和system call吗?还是仅仅是interrupt),如果是,则保护被中断的CPU环境。获取中断号并由此找到中断处理程序,中断处理程序处理完后再继续执行下一条指令。
中断向量表
每种设备都配以相应的中断处理程序。当某种设备发来中断请求信号时,中断处理器会确定中断号。然后去查找中断向量表。
中断向量表存着所有中断号和对应的中断处理程序的入口地址。因此找到中断号对应的中断处理地址并把地址放在PC中,就可以去执行中断处理程序了。
中断的分类
ppt标题的这个User->Kernel是什么意思?
是否中断可以分成interrupt和exception,同时也可以分成device interrupt,software interrupt 和program faults?
- Device interrupt
硬件中断(设备中断),是需要中断CPU的中断,因此中断发生时,CPU要暂时停止当前程序而执行中断请求。
是由与系统相连的外设(比如网卡 硬盘 键盘等)自动产生的 - software interrupt
软中断,是执行中断指令产生的。
软件中断其实并不是真正的中断,它们只是可被调用执行的一般程序。
interrupt handler
为什么不能sleep?如果可以sleep,假设下面的情况:process1进入内核之后占用LockA,然后发生中断,现在要执行ISR来处理中断,但是要执行ISR必须要有LockA,所以ISR调用了sleep来等待LockA的释放。但是LockA永远不会被释放了,因为Process1在ISR完成之前是不能执行的。
Top half &Bottom half
- 技术上是一个中断处理程序
- 执行最少的常用功能:保存寄存器,解除其他中断的掩码。最后撤销它:恢复寄存器,返回到以前的上下文。
- 通常使用汇编语言
- IRQ(中断信号)在此期间被屏蔽
- top half最重要的任务:调用设备驱动程序提供的合适的中断处理程序
- 不会做太多的事情,因为此时中断信号被屏蔽,而且也不希栈太大
- 通常,对请求进行排队并设置一个用于延迟处理的标志
上面列举了四个延迟工作的机制。其中softirqs就是上文中top bottom设置的用于延迟处理的标志
top half和ISR的关系是什么?
system call
概念
系统调用是一种程序化的方式,在这种方式中,计算机程序从执行它的操作系统的内核请求服务。
ptrace
- 跟踪编译后的应用程序的系统调用
- 每次执行系统调用时都会输出参数和返回代码
- 用于debuggers
ppt中debuggers(breakpoint,singlestep,etc),括号里的breakpoint,singlestep,etc是什么?
flexible system calls
- flexible system call是一种新的系统调用机制。
- 引入了由用户和内核共享的system call page(系统调用页面)
- 用户线程可以将系统调用请求push系统调用页面
- 内核线程将从系统调用页面把系统调用请求poll out
- 通过将调用和执行解耦来消除同步,导致更少的异常。
补充: 系统调用是操作系统提供给软件开发人员的唯一接口,开发人员可利用它使用系统功能。用户在 程序中 调用操作系统提供的子功能称为系统调用。
a) 是特殊的过程调用, 由特殊的机器指令( 广义指令 )实现。
b) 系统调用指令还将系统转入管态处理器运行系统程序的状态称为管态、特权状态或系统状态;运行用户程序的状态为算态、目态或用户态。
系统调用与一般过程调用的比较
【相同点】:
改变指令流程,转去执行公用程序段。【不同点】:
a ) 一般过程调用,调用程序和被调用程序都运行在 相同状态(管态或算态);而系统调用, 调用程序在算态, 被调用程序在管态。
b) 一般过程调用调用时不涉及 系统状态转换,直接转向被调用过程; 而系统调用调用时涉及系统状态的转换,不允许由调用过程直接转向被调用过程, 要先通过软中断机制由用户态转换为核心态, 在OS 核心分析后, 再转向相应的系统调用处理子程序
Journaling & Ext3
日志文件系统(journal file system)
如果在文件系统尚未shutdown时就断电了,下次重开机时会导致文件系统资料不一致,修复非常耗时。因此引入了“日志文件系统”。
此类文件系统最大的特色是,它会将整个磁盘的写入动作完整记录在磁盘的某个区域上,以便有需要时可以回溯追踪。
因为记录了非常详细的细节,所以在中断后,可以直接根据记录回溯并重整被中断的部分,而不需要检查其他部分。
ext3
第三代扩展文件系统,是一个日志文件系统,常用于linux。
每一个flexible group由很多block group组成,第一个block group保存的是当前Flex_group的bitmap、inode表,剩余空间保存data。其他的block group只保存data
default mode是什么?
上图是《现代操作系统》4.3.6里的一段话,其中划红线的的“写日志项”,“日志项被写入磁盘”,“不同的操作”是不是对应ppt里的“元缓冲区接受管理”,“事务提交”和“正常读写数据”?
ext3支持三种data模式,对应日志的不同行为
1.orded
- 不记录data的journal,只记录metadata的journal
- 写metadata的journal前,必须先确保data已经落盘。
- 这句话对吗?什么叫做落盘呢?
2.writeback
- 不记录data journal,仅记录metadata journal。
- 并且不保证data比metadata先落盘。
3.journal
- 记录data 和matadata 的journal。
- 在将data写入文件系统前,必须等待metadata和data的journal已经落盘了。
transaction 对应上面一张ppt的“事物提交”
来源:CSDN
作者:Yinger_2000
链接:https://blog.csdn.net/Yinger_2000/article/details/103744771