精华内容
下载资源
问答
  • 进程调度重点笔记

    2021-01-15 21:44:56
    2.程序使用CPU模式有?它们特点; 在CPU上执行较长时间; 这种称为CPU导向或计算密集型程序,通常用于科学计算方面程序; CPU执行时间短,大部分用于I/O操作; 称为I/O导向或者输入输出密集型程序;...

    1.进程调度追求的目标是什么?
    达到极小化平均响应时间、极大化系统吞吐率、保存系统各个功能部件处于繁忙状态和提供某种貌似公平的机制。但是,对于不同的操作系统来说达到的目的也会不同。对于批处理系统,不注重用户等待时间。交互式系统要对于响应时间要适当;

    2.程序使用CPU的模式有哪几种?它们的特点;

    1. 在CPU上执行较长时间;
      这种称为CPU导向或计算密集型程序,通常用于科学计算方面的程序;
    2. CPU执行时间短,大部分用于I/O操作;
      称为I/O导向或者输入输出密集型程序;人机交互式到属于这类程序,如游戏程序以及PPT程序;
    3. 介于二者之间,有较长的CPU执行时间,较长时间的I/O操作;
      称为平衡型程序;如网络浏览器,网络视屏;

    3.保障调度和时间片轮转的异同点,根本区别是什么?
    时间片轮转:目的是改善短程序的响应时间,周期性的进行进程切换;其实就是对FCFS算法的改进,一个程序运行一个时间段就切换给别的进程,让个程序都有机会运行;但是频繁的进程切换需要消耗系统时间(切换时间需要把控);
    保障调度:就是保障每个进程都能拿到1/n的CPU时间;但是可以不需要轮转就能实现;

    根本区别就是保障调度可以不需要轮转,每次给的时间片不一定要一样;
    4.什么是优先级倒挂?他有什么危害?
    一个低优先级任务持有一个被高优先级认为所需要的共享资源;这样高优先级任务资源缺乏而受阻,一直到低优先级任务释放资源为止;
    某些时候并不会造成危害,等到低优先级任务结束后,资源自然会给到高优先级任务;
    如果阻碍任务较为重要,就可能会导致系统报错;

    5.怎么解决优先级倒挂?
    优先级倒挂的俩种形式:

    • 不持有资源的低优先级进程阻碍需要资源的高优先级进程的执行;
    • 持有资源的低优先级进程阻碍需要资源的高优先级进程的执行;
      第一种形式的解决办法:使用中断禁止;
      通过禁止中断来保护临界区,这种方式会出现俩个优先级:可抢占优先级和中断禁止优先级。前者为一般进程运行时的优先级,后者为运行于临界区进程的优先级。由于系统的锁不能发生乱序,不会发生死锁。又由于进入临界区的进程总是能够不被打断而一直运行到结束,因此也不会发生悬挂;这样,技术高优先级进程采用繁忙等待也不会发生死锁;但是,所用种啊段都必须禁止,如果禁止的只是一个硬件设备中断,能硬件的中断优先处理机制将再次引入优先级倒挂;
      在多CPU环境下,不能使用中断禁止,就有另外一种方式,单一共享标志锁,

    第二种形式的解决办法:优先级上限(priority ceiling)
    中断禁止可以防止第一种优先级倒挂,但是无法避免第二种。想要避免就不能让低优先级进程持有高优先级进程所需要的资源。思路就是让共享的临界区有自己的优先级,并让访问临界区的进程获得临界区的优先级,只要临界区的优先级设置的够高,就可以避免;但是试图访问mutex的程序具有高于mutex的优先级还是可能发生倒挂;

    要完全杜绝倒挂,就需要在任何时候都确保等待资源的进程具有的优先级必须低于持有资源的进程的优先级。如何实现呢?就是优先级继承(priority inheritance):
    当一个高优先级进程等待一个低优先进程所持有的资源时,这个低优先级进程抢占低优先级进程而延长资源占用时间,同时也防止了因高优先进程自身进行繁忙等待可能导致的死锁。在释放共享资源后,低优先级进程回到其原来的优先级别;
    6.如果最后一个进程在CPU任务结束后由很长一段时间的I/O操作,在计算CPU响应时间时是否应该计入该I/O操作耗时?
    不算;
    具体原因…

    展开全文
  • 创建进程属于非常重要的内容,无论是哪种语言,底层在创建进程的时候都是使用fork函数,本文使用C语言来熟悉fork系统调用创建进程 使用fork系统调用创建进程 fork系统调用是用于创建进程的 fork创建的进程初始化...

    引言

    本文为第十五篇,使用fork系统调用创建进程。创建进程属于非常重要的内容,无论是哪种语言,底层在创建进程的时候都是使用fork函数,本文使用C语言来熟悉fork系统调用创建进程

    使用fork系统调用创建进程

    • fork系统调用是用于创建进程
    • fork创建的进程初始化状态是和父进程一样的(进程有进程空间、内存、内存态等)
    • 系统会为fork的进程分配新的资源(包括内存资源、CPU资源等)
    • fork系统调用无参数
    • fork会返回两次,分别返回子进程id和0(第一次是由父进程返回的,第二次由子进程所返回的,因此返回了两次)
    • 返回子进程id的是父进程,返回0的是子进程

    调用fork之后,我们就可以根据返回值是否为0来判断是父进程还是子进程返回的

    代码示例:

    #include<iostream>
    #include<cstring>
    #include<stdio.h>
    #include<unistd.h>
    
    using namespace std;
    
    int main()
    {
        pid_t pid;
        pid = fork();
        if(pid == 0) {
            cout << "这是一个子进程" << endl;
        }
        else if(pid > 0) {
            cout << "这是一个父进程" << endl;
            cout << "子进程id:" << pid << endl;
        }
        else if(pid < 0 ){
            cout << "创建进程失败" << endl;
        }
        return 0;
    }
    

    运行结果:

    从运行结果可以看到,fork确实是返回了两次,两个if里边都走到了

    在前边也说到,当fork创建一个子进程的时候,这个子进程的初始化内存状态是和父进程一样的,下边也用代码验证一下:

    #include<iostream>
    #include<cstring>
    #include<stdio.h>
    #include<unistd.h>
    
    using namespace std;
    
    int main()
    {
        pid_t pid;
        int num = 888;
        pid = fork();
        if(pid == 0) {
            cout << "这是一个子进程" << endl;
            cout << "num in son process:"<< num << endl;
            while(true) {
                num+=1;
                cout << "num in son process:"<< num << endl;
                sleep(1);
            }
        }
        else if(pid > 0) {
            cout << "这是一个父进程" << endl;
            cout << "子进程id:" << pid << endl;
            cout << "num in father process:"<< num << endl;
            while(true) {
                num-=1;
                cout << "num in father process:"<< num << endl;
                sleep(1);
            }
        }
        else if(pid < 0 ){
            cout << "创建进程失败" << endl;
        }
        return 0;
    }
    

    运行结果:

    从图中可以看到子进程的初始值是和父进程是一样的,然后随着父进程和子进程执行的逻辑不一样,他们的num值就分道扬镳了。也就是说初始化的状态,子进程的内存空间和父进程的内存空间是一样的,但是随着他们的逻辑走向不一样,他们的内存空间将走向不一样

    在快速变化的技术中寻找不变,才是一个技术人的核心竞争力。知行合一,理论结合实践

    展开全文
  • Linux进程上下文和中断上下文总结

    千次阅读 2013-09-05 15:17:13
    进程上下文和中断上下文是Linux系统一个比较重要概念,下面从程序角度总结一下各属于哪种上下文: 1、中断处理程序处于中断上下文。 2、异常处理程序通常从用户空间的进程发起,处于进程上下文,可以切换到其他...

    在Linux系统下,CPU总是处于下面三种状态之一:

    1、内核态,运行进程上下文。

    2、内核态,运行于中断上下文。

    3、用户态,运行进程上下文。

    进程上下文和中断上下文是Linux系统一个比较重要的概念,下面从程序的角度总结一下各属于哪种上下文:

    1、中断处理程序处于中断上下文。

    2、异常处理程序通常从用户空间的进程发起,处于进程上下文,可以切换到其他进程。

    3、软中断(softirq)、tasklet等可延迟函数通常运行在中断上下文,而工作队列运行在进程上下文。

    4、系统调用属于异常处理程序,运行在进程上下文。

    注:系统调用是通过叫software interruppt的软件中断(一种异常)来实现的,跟软中断(softirq)没有关系。

    5、信号处理函数属于异常处理程序,运行在进程上下文,在函数运行过程中可发生进程切换。

    (完)

    展开全文
  • 下面办法中属于防止其发生一个?  A 破坏互斥条件  B 破坏不可剥夺条件  C 破坏循环等待条件  D 杀死某个激活死锁的进程 二、问题求解: 解析:所谓死锁,是指多个进程循环等待它方占有资源而无...

    在多重处理系统中,处理死锁的办法有两种:一是防止其发生;二是发生后进行处理。下面的办法中属于防止其发生的是哪一个? 
    A 破坏互斥条件 
    B 破坏不可剥夺条件 
    C 破坏循环等待条件 
    D 杀死某个激活死锁的进程

    二、问题求解:

    解析:所谓死锁,是指多个进程循环等待它方占有的资源而无限期地僵持下去的局面。很显然,如果没有外力的作用,那麽死锁涉及到的各个进程都将永远处于封锁状态。

    产生死锁的4个必要条件是:

    互斥条件:即某个资源在一段时间内只能由一个进程占有,不能同时被两个或两个以上的进程占有。如打印机。

    不可抢占条件:进程所获得的资源在未使用完毕之前,资源申请者不能强行地从资源占有者手中夺取资源,而只能由该资源的占有者进程自行释放。

    占有且申请条件:进程至少已经占有一个资源,但又申请新的资源;由于该资源已被另外进程占有,此时该进程阻塞;但是,它在等待新资源之时,仍继续占用已占有的资源。

    循环等待条件:存在一个进程等待序列{P1,P2,…,Pn},其中P1等待P2所占有的某一资源,P2等待P3所占有的某一源,……,而Pn等待P1所占有的的某一资源,形成一个进程循环等待环。

    根据产生死锁的4个必要条件,只要使其中之一不能成立,死锁就不会出现。

    为此,可采用下列3种预防措施:

    采用资源静态分配策略,破坏“部分分配”条件; 
    允许进程剥夺使用其他进程占有的资源,从而破坏“不可剥夺”条件; 
    采用资源有序分配法,破坏“环路”条件。

    但注意一点:互斥条件无法被破坏。本题中A是无法做到的,B和C正确,D选项属于死锁事后处理操作,与题意不符合。

    展开全文
  • 操作系统常见面试题

    千次阅读 2009-10-29 14:48:00
    1.什么是进程(Process)和线程(Thread)?有何区别?2.Windows下内存是如何管理?3.存储过程是什么?...5.进程是一个比较重要概念,那么进程种状态吗?5. 说出你所知道保持进程同步方法?6.
  • 5、进程基本状态?试画出进程状态转换图。 6、作业调度和进程调度各自主要功能是什么? 7、什么是物理地址?什么是逻辑地址?什么是碎片?什么是抖动? 8、虚拟存储器基本特征是什么?虚拟存储器...
  • 三个基本状态是等待、执行和就绪,在一定的条件下,进程的状态将发生转换。 (2)进程调度算法 主要有先来先服务(FCFS)、时间片轮转法、多级反馈轮转法、优先数法。 (3)进程控制块(PCB)是进程...
  • 2.5.1 在何种状态下可以为路由器改名? 2.5.2 某公司申请到一个C类IP地址,但要连接6个子公司,最大一个子公司有 26台计算机,每个子公司在一个网段中,则子网掩码应设为? 2.5.3 与10.110.12.29mask 255.255....
  • 若允许在合约A中直接修改合约B的状态数据,则这次修改是并未生成相关日志的,使得状态修改无法追溯,与区块链“可追溯”的特性相违背。 以太坊中跨合约调用也是没有保留日志的。笔者认为这是因为以太坊...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    C#--微软.NET第一语言 本书着重介绍语言本身,比较少涉及应用,不错入门书,从头讲起,不怕不明白。 <<page 1>> page begin==================== 目 目目 目 录 录录 录 第一部分 C#语言概述.4 ...
  • C#微软培训资料

    2014-01-22 14:10:17
    以互相交换组件地方以互相交换组件地方 以互相交换组件地方 比尔 比尔比尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 Microsoft.NET 概念 .NET 框架 C#语言在.NET 框架中作用及其特性...
  • oracle数据库经典题目

    2011-02-17 15:05:20
    17. 只能存储一个值变量是哪种变量?( B ) A. 游标 B. 标量变量 C. 游标变量 D. 记录变量 18. 声明%TPYE类型变量时,服务器将会做什么操作?( A ) A. 为该变量检索数据库列数据类型 B.复制一个变量 C.检索...
  • 下列属于面向对象开发方法是(A B C D)。 A) Booch B) UML C) Coad D) OMT 6. 软件危机主要表现是(B D)。 A) 软件成本太高 B) 软件产品质量低劣 C) 软件开发人员明显不足 D) 软件生产率低下 7...
  • asp.net知识库

    2015-06-18 08:45:45
    .NET20 一简单窗口控件UI状态控制方法 翻译MSDN文章 —— 泛型FAQ:最佳实践 Visual C# 3.0 新特性概览 C# 2.0会给我们带来什么 泛型技巧系列:如何提供类型参数之间转换 C#2.0 - Object Pool 简单实现 ...
  • 160.zookeeper 怎么保证主从节点的状态同步? 161.集群中为什么要有主节点? 162.集群中有 3 台服务器,其中一个节点宕机,这个时候 zookeeper 还可以使用吗? 163.说一下 zookeeper 的通知机制? 十七、MySql 164....
  • 18.哪种版本Linux适合我? 7 19.如何得到Linux? 8 二、用户和用户组管理 8 ※一、Linux系统用户账号管理 8 ※1、添加新用户账号使用useradd命令,其语法如下: 8 ※2、删除帐号 8 ※3、修改帐号 8 ※4、用户...
  • 第5章讨论各个进程的功能。第6章至第8章分别介绍锁和闩、多版本以及事务。这几章是本书的精华,而且也是理解Oracle的关键所在。第9章讨论redo和undo,解释了它们分别是什么,并指出如何避免各种可能出现的错误。第10...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    35.java除了8基本类型外,在虚拟机里还有,有什么作用? 36.除了使用new关键字创建对象意外,试列举另外三以上创建实例方式? 37.classloader中,JDKAPI、Classpath中同web-inf中class加载方式有...
  • 36. 线程和进程的区别? 14 37. 守护线程是什么? 14 38. 创建线程有方式? 14 39. 说一下 runnable 和 callable 有什么区别? 15 40. 线程有哪些状态? 15 41. sleep() 和 wait() 有什么区别? 16 42. notify...
  • 16.6 决定采用哪种加密技术 670 16.7 小结 671 索引 672 译者序  Oracle Database 11g推出让关注Oracle人欣喜万分,不过也不免有些担心,因为此前还没有合适书系统而深入地介绍这个新版本。要想学习和...
  • Delphi5开发人员指南

    热门讨论 2012-07-18 16:51:14
    7.4.1 外套文件是从 152 7.4.2 枚举 152 7.4.3 控件接口 152 7.4.4 TOleControl派生类 152 7.4.5 方法 152 7.4.6 属性 153 7.5 在应用程序中使用ActiveX控件 153 7.6 发布带有ActiveX控件应用程序 154 7.7...
  • ThreadLocal通常用来共享数据,当你想在多个方法中使用某个变量,这个变量是当前线程的状态,其它线程不依赖这个变量,你第一时间想到的就是把变量定义在方法内部,然后再方法之间传递参数来使用,这个方法能解决...
  • java-servlet-api.doc

    2009-10-13 19:34:17
    然而,一个映射可能是由一个URL和许多Servlet实例组成,例如:一个分布式的Servlet引擎可能运行在不止一个的服务器中,这样的话,每一个服务器中都可能有一个Servlet实例,以平衡进程的载入。作为一个Servlet的...
  • GPL 是一可以使你免费获得自由软件许可证,因此 Linux 使用 者使用活动基本不受限制(只要你不将它用于商业目的),而不必像使用微软产品是那样, 2需要为购满许可证付出高价还要受到系统安装数量限制。我...
  • 本书主要内容包括等待和阻塞、数据毁坏和恢复、内存、过程缓存、查询进程等。本书作者都是来自微软公司sql server 开发团队和客户支持服务部门支持专家。在你sql server 系统遇到问题时,本书将变得不可或缺...
  • 本书主要内容包括等待和阻塞、数据毁坏和恢复、内存、过程缓存、查询进程等。本书作者都是来自微软公司sql server 开发团队和客户支持服务部门支持专家。在你sql server 系统遇到问题时,本书将变得不可或缺...

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

哪种状态属于进程的状态