系统调用相关知识:
用户接口:
- 命令接口(允许用户直接使用):
- 联机命令接口:用户说一句 系统做一句
- 脱机命令接口:用户说一堆 系统做一堆
- 程序接口(允许用户通过程序间接使用)
由一组系统调用组成(程序接口=系统调用)
中断:与硬件相关 外部设备通过发送中断信号通知CPU抽空处理设备请求
原语:处于操作系统的最底层,是最接近硬件的部分,具有原子性——其操作只能一气呵成
库函数:由编程语言向上提供,以隐藏系统调用的一些细节,使上层进行系统调用更方便
页表:
key1:在多级页表的分页存储管理方式中,一个页表最大只能占一个块。
key2:有几个二级页表,在一级页表中就有几个页表项。
内存中的块和页面大小是相等的
磁盘块空闲状态管理方法:
- 空闲表法:
空闲表法就是为所有的空闲空间建立一张表,表中的内容包括空闲区的第一个块号和该空闲区的个数。请求分配磁盘空间时,需要扫描空闲表里的内容,直到找到一个合适的空闲区域为止。当用户删除一个文件时,系统也需要回收空间,扫描空闲表,寻找一个空闲表条目并将第一个物理块号和它占用的块数填到这个条目中。
该方法不适合管理有着大量小空闲区的磁盘,因为这样整个表会很大,扫描效率会很低。
- 空闲链表法
每个空闲块里有一个指针指向下一个空闲块,这样只需要在系统中维护一个指针(令它指向第一个空闲块)便可以找到所有的空闲块,结构简单,但是不能随机访问,工作效率低,同时数据块的指针消耗了一定的存储空间。
- 位图法
位图法就是利用二进制的每一位来表示磁盘中一个块的使用情况,磁盘上所有的块都有一个二进制位与之对应。当值为0时表示块空闲,当值为1时块已分配。linux操作系统中就用了位图的方式来管理空闲空间。
计算机系统磁盘调度策略:
磁道响应一个请求所需的 总存取时间= 寻道时间 + 延迟时间 + 传输时间
- 先来先服务算法(FCFS):根据进程访问磁盘的先后顺序进行调度,这是最简单的磁盘调度算法,比较公平,但并不提供最快的服务。
- 最短寻道时间优先算法(SSFT):总是选择离当前磁头所在磁道最近的磁道,以便每次寻找的时间最短,在移动磁头到别处以便处理其他请求之前,处理靠近当前磁头位置的所有请求较为合理。这种算法的缺陷是,若磁头附近频繁的被添加请求,磁头会长时间在这附近工作,导致更远的磁道无限期的延迟,发生“饥饿”。
- SCAN算法:磁臂从磁盘的一端开始,向另一端移动,在移动每个柱面时,处理请求,当达到磁盘的另一端时,磁头移动方向反转,并继续处理。磁头连续来回扫描磁盘。SCAN算法有时称为电梯算法,磁头先处理所有向上的请求,然后再处理相反方向的请求。
- C-LOOK:基于SCAN算法,C-LOOK移动磁头从磁盘一端到磁盘另一端(磁臂只需移动到一个方向的最远请求为止),并且处理行程上的请求,然而,当磁头到达另一端时,它立即返回到磁盘另一端最远的请求,而不处理任何回程上的请求,然后从该最远的请求开始,继续往同一方向移动磁盘处理请求。
优点 | 缺点 | |
---|---|---|
FCFS | 公平 | 平均寻道距离大仅应用在磁盘I/O较少的场合 |
SSTF | 性能比FCFS好 | 不能保证平均寻道时间最短(TSP问题)容易产生饥饿现象 |
SCAN | 寻道性能比较好,可避免饥饿现象 | 不利于远离磁头一端的访问请求 |
C-LOOK | 消除了对两端磁道请求的不公平 | - |
时钟页面置换算法:
- 该算法的思路是,把所有的页面都保存在一个类似钟面【环形链表】中,一个表针指向最老的页面,当缺页中断时,算法首先检查表针指向的页面:
1.如果它的访问位是0就淘汰该页面,并把新的页面插入这个位置,然后把表针前移一个位置。
2.如果访问位是1就清除访问位置为0,并把表针前移一个位置,重复这个过程直到找到了一个访问位为0的页面为止。