zoukankan      html  css  js  c++  java
  • 操作系统学习笔记

    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、假分配检测:

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

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

     

  • 相关阅读:
    网站发布小工具,--让发布变简单一点
    鼠标右键发布文件到远程服务器
    关于跑步耳机的一些思考
    对棋牌游戏平台的一些思考
    复杂业务简单化的一个小技巧
    游戏杂记
    python 杂记
    lua debug
    quick-cocos2d-x 杂记
    Linux 杂记
  • 原文地址:https://www.cnblogs.com/DwyaneTalk/p/3580529.html
Copyright © 2011-2022 走看看