无标题文章

现代操作系统的功能

提供抽象
提供标准接口
调度资源使用
消费资源

死锁的必要条件

互斥:同一时间只有一个线程可以占有锁
占有并等待:至少一个线程占有着锁并等待其他线程解锁
非抢占:只有占有锁的线程可以解锁
循环等待:t1在等t2,t2在等t3,…,tn在等t1

进程的三种状态

运行(running):进程正在CPU运行
就绪(ready):准备好运行但还未在CPU运行
等待(waiting):等待一些事件比如I/O发生

当进程执行I/O操作时,进入等待状态

Much of operating system history driven by relative cost factors of hardware and people. Hardware started out fantastically expensive relative to people and the relative cost has been decreasing ever since. Relative costs drive the goals of the
operating system.
■ In the beginning: Expensive Hardware, Cheap
People Goal: maximize hardware utilization.
■ Now: Cheap Hardware, Expensive People Goal:
make it easy for people to use computer.

驱动操作系统发展的因素

操作系统的发展取决于人和硬件的相对价值。起初硬件成本显著高于人,后来硬件成本不断下降。这种相对价值决定了操作系统的目标。
起初:硬件成本高人力成本低,操作系统目标:最大化硬件的使用
现在:硬件成本低人力成本高,操作系统目标:让人更加方便地使用计算机

现代操作系统在进程管理提供的三种抽象

进程,虚拟内存,文件系统,同步和通信机制

多道程序设计(multiprogramming)

同一时间有多个进程。

操作系统通过上下文切换实现进程的抽象

上下文切换

终止一个进程,开始(或重启)另一个进程

上下文切换的实现

上下文切换时保存和恢复硬件状态。状态保存在进程控制块(PCB)中。

原子操作

Typically build complex atomic operations up out of sequences of primitive operations. In our case the primitive operations are the individual machine instructions.
原子操作是执行时不受其他任何操作干扰的操作。总而言之,他作为一个整体执行
原子操作执行时不会被线程调度机制打断。
如果一些原子操作按相同的序列执行,最终结果保证是相同的

什么是信号量(semaphore)

信号量是同步的第一步抽象,概念上,指一个支持P和V两个原子操作的计数器
P原子地等待直到计数器大于0,然后减小计数器并返回
V原子地增加计数器
对应到线程,一个线程释放(release)时,将信号量加一。
当信号量<=0时,线程等待。
当信号量>0时,线程通过,将信号量减一。

临界区(critical section)

每个线程中访问临界资源的那段代码,不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它进行访问。

进程:进程

线程:线程是相应线程状态下的执行流。

进程和线程的区别

线程是相应线程状态下的执行流。线程和进程间的关键区别在于多线程可以共享他们的部分状态。通常,允许多线程在相同的内存上读取、写入(一个进程不可访问另一个进程的内存)。每一个线程也有它自己的寄存器、栈,但是其他线程也可在该线程栈所在的内存上读取和写入。

多线程程序出错

当并发执行时,结果取决于指令是如何交织的,这导致结果是不确定的
所以有可能产生错误,且再现bug是很困难的
为确保正确,必须使一些指令原子化,即当执行这些指令时阻止指令的交织

CPU调度

抢占调度

在抢占模式下,操作系统负责分配CPU时间给各个进程,一旦当前的进程使用完分配给自己的CPU时间,操作系统将决定下一个占用CPU时间的是哪一个线程。因此操作系统将定期的中断当前正在执行的线程,将CPU分配给在等待队列的下一个线程。

非抢占调度

在非抢占的调度模式下,每个线程可以需要CPU多少时间就占用CPU多少时间。

短作业优先调度

进程 到达时间 CPU突发时间
P1 0 8
P2 1 6
P3 2 4
P4 3 6
抢占调度

执行顺序
P1,P2,P3(4),P2(5),P4(6),P1(7),
P1等了16,P2等了4,P3等了0,P4等了8
平均等待时间(Average Waiting Time, AWT)为28/4

非抢占调度

执行顺序
P1(8),P3(4),P2(6),P4(6)
P1等了0,P2等了11,P3等了6,P4等了15
平均等待时间(Average Waiting Time, AWT)为8

你可能感兴趣的:(无标题文章)