美文网首页知识点
操作系统的理解

操作系统的理解

作者: 凉拌姨妈好吃 | 来源:发表于2018-03-27 00:20 被阅读0次

    什么是线程?什么是进程?

    线程与进程都是CPU时间段的描述。

    进程为CPU加载上下文+CPU执行上下文+CPU保存上下文的时间总和(进程资源独立)

    线程是共享了进程的上下文环境的更细小的时间段(线程资源共享)

    通俗理解:打开一个QQ(进程),发送语音(线程),发送文字(线程),发送图片(线程)


    线程的互斥与同步

    什么叫线程的互斥?

    多个线程共享同一资源,当资源被某一线程抢占后,其他线程都变成挂起状态,等待资源的释放

    通俗理解:就是多个线程抢占打印机

    什么叫线程的同步?

    A线程的结果被B线程所需要

    那么从上面的同步互斥概念可以理解出:若AB线程共享同一资源,这就是互斥,要么A先获得资源B挂起,或B获得资源A挂起,这里就是同步。所以同步也就包含互斥,互斥算是特殊的同步。


    如何进行线程同步

    若AB抢占同一资源(临界资源),在A抢占资源时,给资源加了互斥锁,若资源为多个,那么则使用信号量(向系统提供安全分配临界资源的方法),当A线程完成后,主动去唤醒B线程,这就是事件的使用。还有另一种高级的线程同步方法:令牌


    为什么会产生死锁?

    线程A先占用资源a,后占用资源b,线程B先占用资源b,后占用资源a,A需要的资源B占用,B需要的资源A占用,这时就产生了僵局,这就是死锁。

    由此可分析得出死锁产生的条件

    不抢占资源、循环等待、互斥条件(某段时间内,该资源只能被A线程使用)、请求与保持

    如何避免死锁?

    除了破坏必要四个条件中的任意一个,还有一个著名的银行家算法

    银行家算法

    (1)A进程所请求的B资源数<=A所需要的B资源数

    (2)A所请求的B资源数<=系统所拥有的B资源数

    (3)系统所拥有的B资源数-=A所请求的B资源数,

            A所需要的B资源数-=A所请求的B资源数,

            A所占用的B资源数+=A所请求的B资源数

    (4)安全性检测,若安全性检测无问题,那么(3)执行有效,否则作废

            一、定义一个Flag[i]=false

            二、在进程集合中找到满足Flag[i]==false&&所需要的资源数小于系统所拥有的资源数,

            三、当该进程获得资源执行完成之后,释放出分配给它的资源,

            那么:系统所拥有的资源数+=进程P执行的资源数,Flag[i]=true,转向二

            四、若所有进程Flag[i]=true都满足,那么说明系统处于安全状态

    哲学家就餐问题:

    两个重要断言

    1.系统中有N个并发进程,若规定每个进程需要2个资源,系统提供N+1个资源,那么进程间永远不会产生死锁。

    2.系统中有N个并发进程,假设系统提供K个资源就不会产生死锁,每个进程所需资源为R,那么K=N(R-1)+1

    相关文章

      网友评论

        本文标题:操作系统的理解

        本文链接:https://www.haomeiwen.com/subject/zdorcftx.html