[读书笔记]操作系统教程(孙钟秀版)
第一章:概论
操作系统的作用:1、用户与硬件的接口 2、为用户提供虚拟机,把用户和硬件隔离 3、管理计算机资源
操作系统可以通过程序接口和操作接口两种方式把它的服务和功能提供给用户
操作系统的基本任务是对“进程”实施管理
第二章:处理器管理
所谓特权指令是指那些只能提供给操作系统的核心程序使用的指令。当处理器处于管理状态时,可以执行全部指令,访问所有资源,并具有改变处理器状态的能力;当处理器处于用户状态时,只能执行非特权指令
中断技术能实现CPU 与I/O 设备并行工作
中断装置主要做以下三件事:
发现中断源,提出中断请求。当发现多个中断源时,它将根据规定的优先级,先后发出中断请求。
保护现场。将处理器中某些寄存器内的信息存放于内存储器,使得中断处理程序运行时,不会破坏被中断程序的有用信息,以便在中断处理结束后能够返回被中断程序继续运行。
启动处理中断事件的中断处理程序。
进程是一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和保护的基本单位,线程是处理器调度的基本单位。线程是为了减少程序并发执行时所付出的时空开销,使得并发粒度更细、并发性更好
进程三状态:运行态、就绪态、阻塞态(正等待任务的完成)

同一个进程中的所有线程共享进程获得的主存空间和资源,但不拥有资源
线程的主要特征:1、并发性:同一进程的多个线程可在一个/ 多个处理器上并发或并行地执行,而进程之间的并发执行演变为不同进程的线程之间的并发执行 2、共享性:同一个进程中的所有线程共享但不拥有进程的状态和资源,且驻留在进程的同一个主存地址空间中,可以访问相同的数据
由于线程不是资源的拥有单位,挂起状态对线程是没有意义的(挂起:使用磁盘暂存进程资源,腾出主存空间)
处理器调度:
高级调度:发生在新进程的创建中,它决定一个进程能否被创建,或者是创建后能否被置成就绪状态,以参与竞争处理器资源获得运行
中级调度:反映到进程状态上就是挂起和解除挂起,它根据系统的当前负荷情况决定停留在主存中进程数
低级调度:则是决定哪一个就绪进程或线程占有CPU 运行
第三章:并发进程
进程的交互关系:竞争与协作
资源竞争:出现了两个控制问题:一个是死锁(deadlock )问题,一组进程如果都获得了部分资源但没获得足够资源,再等待更多资源的同时不释放自身的资源,导致所有进程都资源不足进入等待状态,最终所有的进程将陷入死锁。
另一个是饥饿(starvation)问题,这是指这样一种情况:一个进程由于其他进程总是优先于它而被无限期拖延。就解决:等待最久的线程将成为下一个工作线程。
进程的互斥(mutual exclusion)是解决进程间竞争关系( 间接制约关系) 的手段。进程互斥指若干个进程要使用同一共享资源时,任何时刻最多允许一个进程去使用,其他要使用该资源的进程必须等待,直到占有资源的进程释放该资源
进程协作:某些进程为完成同一任务需要分工协作,由于合作的每一个进程都是独立地以不可预知的速度推进,这就需要相互协作的进程在某些协调点上协调各自的工作。当合作进程中的一个到达协调点后,在尚未得到其伙伴进程发来的消息或信号之前应阻塞自己,直到其他合作进程发来协调信号或消息后方被唤醒并继续执行(进程同步)
使用临界区方法(保护共同访问变量)协作:如有线程正访问临界区,则其他线程等待。如没有则进入。注意不能x等y,y又等x,造成无限等待。
Dekker算法:每个线程使用个inside标志,以及一个所有线程共用的turn标志。1、先把自己inside1设为true,若对方inside2=false,则表明线程1可以进入临界区;2、若inside2=true,则等线程2完成后把自己设成false且turn=1,线程1方可进入。 解释:1、由于是先置inside标志,再查看对方,因此不存在两个线程同时进入的危险2、有了turn可以解决两个同时设自己为true时两个线程互相等待的死循环。
Perterson算法:更简单,也是先设置true,并把turn主动设置为对方的号。先设置true可确保不同时进入。turn确保两线程同时设了ture以后只有一个可以进入临界区。

信号量与PV操作(用于线程同步)
首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下:
P(S):①将信号量S的值减1,即S=S-1;②如果S>=0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。
V(S):①将信号量S的值加1,即S=S+1;②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。
什么是信号量?信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。注意,信号量的值仅能由PV操作来改变。
一般来说,信号量S>=0时,S表示可用资源的数量。执行一次P操作意味着请求分配一个单位资源,因此S的值减1;当S<0时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。而执行一个V操作意味着释放一个单位资源,因此S的值加1;若S£0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。PV必须成对出现。
记录型信号量
在这个问题中,不仅生产者与消费者之间要同步,而且各个生产者之间、各个消费者之间还必须互斥地访问缓冲区。
定义四个信号量:
empty——表示缓冲区是否为空,初值为n。
full——表示缓冲区中是否为满,初值为0。
mutex1——生产者之间的互斥信号量,初值为1。
mutex2——消费者之间的互斥信号量,初值为1。
设缓冲区的编号为1~n-1,定义两个指针in和out,分别是生产者进程和消费者进程使用的指针,指向下一个可用的缓冲区。
生产者进程
while(TRUE){
生产一个产品; P(empty); P(mutex1); 产品送往buffer(in); in=(in+1)mod n; V(mutex1); V(full); }
消费者进程
while(TRUE){ P(full) P(mutex2); 从buffer(out)中取出产品; out=(out+1)mod n; V(mutex2); V(empty); 消费该产品; }
需要注意的是无论在生产者进程中还是在消费者进程中,两个P操作的次序不能颠倒。应先执行同步信号量的P操作,然后再执行互斥信号量的P操作,否则可能造成进程死锁。
进程通信:
低级通信机制(交换信息少):1、信号通信机制 2、信号量及其原语操作(PV、读写锁、管程)控制的共享存储区
高级通信机制(交换大量信息):1、管道机制 2、信箱发信收信机制
死锁:进程1占用了资源1,正等待资源2;进程2占用了资源2,正等待资源1.这样造成了无限等待,形成死锁。
死锁产生条件:
1、互斥条件(mutual exclusion)进程应互斥使用资源,任一时刻一个资源仅为一个进程独占,若另一个进程请求一个已被占用的资源时,它被置成等待状态,直到占用者释放资源。
2、占有和等待条件(hold and wait)一个进程请求资源得不到满足而等待时,不释放已占有的资源。
3、不剥夺条件(no preemption)任一进程不能从另一进程那里抢夺资源,即已被占用的资源,只能由占用进程自己来释放。
4、循环等待条件(circular wait)存在一个循环等待链,其中,每一个进程分别等待它前一个进程所持有的资源,造成永远等待。
以上前三个条件是死锁存在的必要条件,但不是充分条件。第四个条件是前三个条件同时存在时产生的结果,所以,这些条件并不完全独立。但单独考虑每个条件是有用的,只要能破坏这四个必要条件之一,死锁就可防止
第四章:存储管理
最近最少用页面替换算法(LRU,Least Recently Used) 最近最少用页面替换算法是一种通用的有效算法,被操作系统、数据库管理系统和专用文件系统广泛采用。该算法淘汰的页面是在最近一段时间里较久未被访问的那一页。

第五章:设备管理
IO控制方式:1、查询方式(不断询问,IO与CPU是串行工作) 2、程序中断方式 3、通道(输入输出处理器)
其他

系统调度:
短作业优先法:最短剩余时间优先法

浙公网安备 33010602011771号