操作系统(五)设备管理

磁盘调度算法

当多个进程同时请求访问磁盘时,需要进行磁盘调度来控制对磁盘的访问。

磁盘调度的主要目标是使磁盘的平均寻道时间最少。

1. 先来先服务

> FCFS, First Come First Served

根据进程请求访问磁盘的先后次序来进行调度。优点是公平和简单,缺点也很明显,因为未对寻道做任何优化,使平均寻道时间可能较长。

2. 最短寻道时间优先

> SSTF, Shortest Seek Time First

要求访问的磁道与当前磁头所在磁道距离最近的优先进行调度。这种算法并不能保证平均寻道时间最短,但是比 FCFS 好很多。

3. 扫描算法

> SCAN

SSTF 会出现饥饿现象。考虑以下情况,新进程请求访问的磁道与磁头所在磁道的距离总是比一个在等待的进程来的近,那么等待的进程会一直等待下去。

SCAN 算法在 SSTF 算法之上考虑了磁头的移动方向,要求所请求访问的磁道在磁头当前移动方向上才能够得到调度。因为考虑了移动方向,那么一个进程请求访问的磁道一定会得到调度。

当一个磁头自里向外移动时,移到最外侧会改变移动方向为自外向里,这种移动的规律类似于电梯的运行,因此又常称 SCAN 算法为电梯调度算法。

4. 循环扫描算法

> CSCAN

CSCAN 对 SCAN 进行了改动,要求磁头始终沿着一个方向移动。

链接

编译系统

以下是一个 hello.c 程序:

#include 

int main()
{
    printf("hello, world\n");
    return 0;
}

在 Unix 系统上,由编译器把源文件转换为目标文件。

gcc -o hello hello.c

这个过程大致如下:

1. 预处理阶段:处理以 # 开头的预处理命令;
2. 编译阶段:翻译成汇编程序;
3. 汇编阶段:将汇编程序翻译可重定向目标程序,它是二进制的;
4. 链接阶段:将可重定向目标程序和 printf.o 等单独预编译好的目标文件进行合并,得到最终的可执行目标程序。

目标文件

1. 可执行目标文件:可以直接在内存中执行;
2. 可重定向目标文件:可与其他可重定向目标文件在链接阶段合并,创建一个可执行目标文件;
3. 共享目标文件:可以在运行时被动态加载进内存并链接;

静态链接

静态连接器以一组可重定向目标文件为输入,生成一个完全链接的可执行目标文件作为输出。链接器主要完成以下两个任务:

1. 符号解析:每个符号对应于一个函数、一个全局变量或一个静态变量,符号解析的目的是将每个符号引用与一个符号定义关联起来。
2. 重定位:编译器和汇编器生成从地址 0 开始的代码和数据节,链接器通过把每个符号定义与一个内存位置关联起来,从而重定位这些节,然后修改所有对这些符号的引用,使得它们指向这个内存位置。

动态链接

静态库有以下两个问题:

– 当静态库更新时那么整个程序都要重新进行链接;
– 对于 printf 这种标准函数库,如果每个程序都要有代码,这会极大浪费资源。

共享库是为了解决静态库的这两个问题而设计的,在 Linux 系统中通常用 .so 后缀来表示,Windows 系统上它们被称为 DLL。它具有以下特点:

1. 在给定的文件系统中一个库只有一个 .so 文件,所有引用该库的可执行目标文件都共享这个文件,它不会被复制到引用它的可执行文件中;
2. 在内存中,一个共享库的 .text 节的一个副本可以被不同的正在运行的进程共享。

参考资料

– Tanenbaum A S, Bos H. Modern operating systems[M]. Prentice Hall Press, 2014.
– 汤子瀛, 哲凤屏, 汤小丹. 计算机操作系统[M]. 西安电子科技大学出版社, 2001.
– Bryant, R. E., & O’Hallaron, D. R. (2004). 深入理解计算机系统.
– [Operating System Notes](https://applied-programming.github.io/Operating-Systems-Notes/)
– [进程间的几种通信方式](http://blog.csdn.net/yufaw/article/details/7409596)
– [Operating-System Structures](https://www.cs.uic.edu/\~jbell/CourseNotes/OperatingSystems/2_Structures.html)
– [Processes](http://cse.csusb.edu/tongyu/courses/cs460/notes/process.php)
– [Inter Process Communication Presentation](https://www.slideshare.net/rkolahalam/inter-process-communication-presentation1)

本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
极客文库 » 操作系统(五)设备管理

Leave a Reply

欢迎加入「极客文库」,成为原创作者从这里开始!

立即加入 了解更多