操作系统学习笔记

1、操作系统的认识:

  操作系统就是为“用户提供操作逻辑所有软硬件资源的工具,相当于用户与裸机进行交互的界面”。再次层面上,为了节约有限资源,操作系统的目的提升到了“充分、合理地利用计算机系统的所有软硬件资源,最大限度地让用户使用有限的硬件资源完成更多的事情”。

2、进程、程序、并发、资源共享、互斥、同步、异步、阻塞和非阻塞:

  进程和程序:进程是程序的依次动态执行,程序是进程的静态文本。进程的生命周期是短暂的,随着创建、执行、睡眠到最后销毁结束,而程序则可以永久的存储在设备商。一个进程可以执行不同的程序,一个程序也可以由多个不同的进程执行。

  并发:在操作系统中同时存在并行处理的多个进程。对于并发,需要考虑任务的切换或调度(调度的时机或进程下台条件、上台进程选择、调度的实际操作)、保护不同进程不会彼此影响(进程互斥)、不同进程之间的相互协调(进程同步)、不同进程之间的消息传递(进程通信)。

  资源共享:由于系统中存在并发处理的进程,但是系统的软硬件资源(CPU、存储设备等)是有限的,所以存在多个进程同时使用一份资源。对于资源共享,需要考虑资源的分配、多个进程同时对一份资源请求、资源回收和资源保护等。

  互斥:多个进程同时竞争只允许给一个进程使用的资源,就会产生互斥,而该资源称为临界资源。解决互斥的方法有锁、开关中断、开关中断+锁和信号量(P、V操作)。

  同步:一个进程的继续执行,依赖于另一个进程的结果输出或者执行状态,就会产生进程同步,这是如果该进程需要的数据或者信号没有出现,处理器就会停下等待。

  异步:对于一个进程需要的资源没有准备好,处理器将该进程暂时睡眠,然后处理其他进程,当该进程需要的资源准备完毕,处理器再将该进程唤醒,这种就是进程异步。

  一般有同步阻塞、异步轮询、一部非阻塞。

3、信号量和P、V操作

  信号量是一种结构体:

1 struct{
2     int value;
3     Queue task;
4 } sem;   

  对于value:当value>0时,表示临界区资源的剩余量;当value<0时,|value|表示队列task中因等待该临界资源而挂起的进程数。

  P操作:

1 Process P(sem s){
2      s.value --;
3      if(s.value < 0){
4           sleep();//将该进程放到s.task中          
5     }
6 }    

  V操作:

1 Process V(sem s){
2     s.value ++;
3     if(s.value <= 0){
4         wakeup();//从s.task队列中唤醒一个进程
5     }
6 }

  无论何种情况,在一个完整的系统中,P、V操作总是成对出现。

  对于互斥:每个临界资源对应一个信号量s,进程在访问临界区前,对s执行P操作,在离开临界区时,对s执行V操作,如下:

      进程a            进程b

      ……            ……

      P(s)            P(s)

      临界区s          临界区s

      V(s)           V(s)

  对于同步,假设进程a需要进程b的输出结果result,该result对应信号量r,当进程a需要result时,对r执行P操作,当进程b产生result时,对r执行V操作。

      进程a            进程b

      ……            ……

      P(r)            产生result

      操作result          V(r)

4、银行家算法:避免死锁

算法思想:在进程请求资源之前

1、实际资源检测:

  Request < Need

  Request < Available

2、假分配检测:

  假设进行分配,预测是否会产生死锁。

银行家算法更详细介绍见这里

 

posted @ 2014-03-04 19:17  DwyaneTalk  阅读(426)  评论(2编辑  收藏  举报