操作系统的基本概念
- 操作系统通过引入进程和线程,使得程序可以并发运行。
- 几种进程或线程同步互斥的控制方法:
- 临界区:通过多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。互斥共享的资源称为临界资源(每次仅仅允许一个进程访问的资源)。每个进程中访问临界资源的那段代码成为临界区。
- 互斥量(Mutex) :互斥量跟临界区很相似,只有拥有互斥对象的线程才具有访问资源的权限。不同的是——使用互斥不仅仅能够在同一应用程序不同线程中实现资源的安全共享,而且可以在不同应用程序的线程之间实现对资源的安全共享。
- 信号量:信号允许多个线程同时使用共享资源。它指出了同时访问共享 资源的线程 最大数目。它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。
- 事件: 通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作 。
- 虚拟内存使用了空分复用技术,它将物理内存抽象为地址空间,每个进程都有各自的地址空间。地址空间和物理内存使用页进行交换,地址空间的页并不需要全部在物理内存中,当使用到一个没有在物理内存的页时,执行页面置换算法,将该页置换到内存中。
- 操作系统的基本功能:进程管理,内存管理,文件管理,设备管理。
- 进程调度:批处理系统没有太多的用户操作,目标是保证吞吐量和周转时间(从提交到终止的时间),可采用:先来先服务 短作业优先 最短剩余时间优先;交互式系统由大量的用户操作,目标是快速响应,可采用时间片轮转,优先级调度,多级反馈队列(时间片轮转和优先级调度的结合,最为复杂)。
- 虚拟内存:分页系统地址映射。
下图的页表存放着 16 个页,这 16 个页需要用 4 个比特位来进行索引定位。例如对于虚拟地址(0010 000000000100),前 4 位是存储页面号 2,读取表项内容为(110 1),页表项最后一位表示是否存在于内存中,1 表示存在。后 12 位存储偏移量。这个页对应的页框的地址为 (110 000000000100)。
- 分段与分页的区别:
- 磁盘调度算法:FCFS,最短寻道时间优先,电梯算法。
- 编译系统
例如一个简单的程序
#include <stdio.h>
int main()
{
printf("hello, world\n");
return 0;
}
在 Unix 系统上,由编译器把源文件转换为目标文件。
gcc -o hello hello.c
过程大致如下:
预处理阶段:处理以 # 开头的预处理命令;
编译阶段:翻译成汇编文件;
汇编阶段:将汇编文件翻译成可重定向目标文件;
链接阶段:将可重定向目标文件和 printf.o 等单独预编译好的目标文件进行合并,得到最终的可执行目标文件。