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

    操作系统:计算机硬件与用户之间的中介。为了高效、为了方便。

    1.进程

      进程:执行中的程序。

      进程状态:新建、运行、等待、就绪、终止。等待:进程等待某个事件的发生。(I/O完成或收到信号);就绪:进程等待分配处理器;

      precess control block(PCB)进程控制块:表示一个进程。

      进程调度:调度队列:进程加入系统,加到作业队列;进程驻留在内存中就绪和等待运行,保存在就绪队列调度程序:短期调度,中期调度,长期调度;短期调度:CPU调度,从准备执行的进程中选择进程,分配CPU时间。

           长期调度:作业调度,从缓冲池中选择进程,装入内存准备执行,控制多道程序设计的程度,即内存中的进程数量。

           中期调度:将进程从内存或CPU竞争中移出,降低多道程序设计的程度,之后进程能被重新调入内存,从中断处继续执行。

      进程通信:共享内存和消息传递。共享内存:生产者-消费者问题,生产者进程产生信息以供消费者消费。缓冲区驻留在生产者进程和消费者进程的共享内存区域内,生产者与消费者异步进行。

           消息传递系统:进程间通过通信链路通信,对称寻址和非对称寻址。对称寻址:发送进程和接受进程必须命名对方以便通信,非对称寻址:发送者命名接收者,接收者不需要命名发送者。

           同步和异步:阻塞和非阻塞,阻塞发送:发送进程阻塞,直到消息被接收。非阻塞发送:发送进程发送消息并继续操作。阻塞接收:接收者阻塞,直到有消息可用。非阻塞接收:接收者收到一个有效消息或空消息。

           缓冲:零容量,有限容量,无限容量。零容量:链路中不能有任何消息处于等待,发送者必须阻塞,直到接收者接收到信息。

    2.线程

      线程:CPU使用的基本单元,他与属于统一进程的其他线程共享代码段、数据段和其他操作系统资源,如打开文件和信号。

         多线程:响应度高,资源共享,经济,多处理器体系结构的利用。

             多对一模型,一对一模型,多对多模型。多对一模型:多个用户线程映射到一个内核线程,内核线程一次只能运行一个用户线程,用户线程阻塞,整个进程会阻塞。

                               一对一模型:内核线程开销会影响应用程序的性能。

                               多对多模型:并发性强,程序性能高。

    3.CPU调度:

      抢占调度:非抢占和抢占。非抢占调度:CPU分配给一个进程,该进程一直使用CPU,直到进程终止或切换到等待状态。抢占调度对访问共享数据是有代价的。

      调度准则:CPU利用率,吞吐量,周转时间,等待时间,响应时间。吞吐量:一个时间单元内所完进程的数量。周转时间:从进程提交到进程完成的时间段。等待时间:进程在就绪队列中等待所花的时间。

           响应时间:从提交请求到产生第一响应的时间。

      调度算法:first-come, first-served(FCFS)先到先服务调度算法,shortest-job-first(SJF)最短作业优先调度算法,priority scheduling algorithm 优先级调度算法,round-robin(RR)scheduling algorithm轮转调度算法。

           FCFS:非抢占。RR:抢占式。

    4.进程同步:

      临界区:该区进程可能改变共同变量、更新一个表、写一个文件等。没有两个进程可同时在临界区内执行。进入区:每个进程必须请求允许进入其临界区。退出区:临界区之后。剩余区:其他代码。

      临界区问题解答满足要求:互斥,前进,有限等待。互斥:如果进程P在其临界区内执行,那么其他进程都不能在其临界区内执行。

        前进:如果没有进程在其临界区内执行且有进程需进入临界区, 那么只有那些不在剩余区内执行的进程可参加选择,以确定谁能下一个进入临界区,且这种选择不能无限推迟。

        有限等待:从一个进程做出进入临界区的请求,直到该请求允许为止,其他进程允许进入其临界区的次数有上限,即请求不能无限拒绝。

       信号量:信号量初始化为可用资源数量。当每个线程需要使用资源时,需要对该信号量执行acquire()操作(减少信号量的计数), 当线程释放资源时,需要对该信号量执行release()操作(增加信号量的计数)。

    acquire() {
        while value <= 0//忙等
            ;
        value--;
    }
    
    release() {
        value++;
    }
    acquire() {
        value--;
        if(value < 0) {
            add this process to list
            block;
        }
    }
    
    release() {
        value++;
        if(value <= 0 ) {
            remove a process P from list;
            wakeup(P);
        }
    }

    5.死锁:

      死锁:某个进程申请资源,如果资源不可用,那么该进程进入等待状态。如果所申请的资源被其他等待进程占有,那么该等待进程有可能再也无法改变其状态。

      死锁特征:必要条件:互斥,占有并等待,非抢占,循环等待。互斥:至少有一个资源必须处于非共享模式,即一次只有一个进程使用。如果另一进程申请该资源,那么申请进程必须等到该资源被释放为止。

           占有并等待:一个进程必须占有至少一个资源,并等待另一个资源,而该资源为其他进程所占有。

           非抢占:资源不能被抢占,即资源只能被进程在完成任务后自愿释放。

           循环等待:有一组等待进程,P0->P1->...->PN->P0。

      资源分配图:P->R申请边,R->P分配边。

      死锁处理方法:预防或避免死锁,检测死锁并恢复,忽略死锁问题。死锁预防:避免互斥:共享资源不要求互斥访问。

             避免占有并等待:当一个进程申请一个资源时,他不能占有其他资源。协议1:每个进程在执行前申请并获得所有资源并使用它们。协议2:一个进程可申请一些资源并使用它们,在它申请更多资源之前,必须释放其现已分配的所有资源。

             避免非抢占:如果一个进程占有资源并申请另一个不能立即分配的资源,那么其现已分配的资源都可被抢占。

             避免循环等待:对所有资源类型进行完全排序,且要求每个进程按递增顺序来申请资源。

      死锁避免:获得以后如何申请资源的附加信息。

      银行家算法:

       死锁检测:每种资源类型只有单个实例:在资源分配图中,删除所有资源类型节点,合并适当边,得到等待图、当且仅当等待图中有一个环时,系统中存在死锁。

           每种资源类型可有多个实例:类似于银行家算法。Available:表示各种资源的可用实例;Allocation:表示当前各进程的资源分配情况;Request:表示当前各进程的资源请求情况。

      应用检测算法:因素:1.死锁可能发生的频率,2.当死锁发生时,受影响的进程个数。

      死锁恢复:进程终止,资源抢占。

  • 相关阅读:
    css优先级
    常用CSS缩写语法总结
    老婆,同床不仅是老公生理的需要,更是心理的需要
    地震预测与概率(转)
    转载:如何研究系统的体系结构
    在RIA应用中,定义DTO作为工作划分的依据或接口
    需求分析应包含理解需求描述本身意思还包括给出解决方案
    今天规定了完成作业的时间,小东西到是按时完成了,基本上是吓写的,看来要严格要求了
    生活不能实验,结果只有一个,不要相信概率
    让人头疼的概率论游戏
  • 原文地址:https://www.cnblogs.com/ACMessi/p/8549676.html
Copyright © 2011-2022 走看看