精华内容
下载资源
问答
  • 52单片机中断

    2021-02-02 15:03:00
    一 中断概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再...1.中断源有中断请求; 2.此中断

    一 中断的概念
    CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);
    CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);
    待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程被称为中断
    概念可能不好理解,举个例子:假如你是个老师,你在上课,突然电话响了,一看是你老婆打过来的,你不敢不接,于是你只好暂停讲课接听电话,挂完电话,你继续讲课。这个过程中实际发生了一次中断。
    二 中断的响应条件
    1.中断源有中断请求;
    2.此中断源的中断允许位为1;
    3.CPU开中断。
    以上3条同时满足时,CPU才有可能响应中断。
    三 中断的种类
    52单片机共有六个中断源,分别是外部中断INT0、INT1,定时器\计数器中断T0、T1、T2,串行口中断TI\RI。
    这里面还设计到一个中断优先级的概念:

    中断源 级别
    INT1 最高
    T0 第二
    INT1 第三
    T1 第四
    TI\RI 第五
    T2 最低

    本次主要讲的定时器T0、T1功能。
    四 定时器的使用
    目前要实现定时功能主要有以下方式:软件定时(说简单点就是用for循环)、采用时基电路定时(555电路)、采用可编程芯片定时。本次主要讲述的就是第三种方法。在这里插入图片描述
    工作原理十分简单:当加到计数器全为1时,再输入一个脉冲就使得计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求。
    定时器的工作方式又由寄存器TMOD决定。TMOD总共有八位,第四位用于T0、高四位用于T1。
    TMOD的格式如上图
    各位功能如下:
    在这里插入图片描述
    M1M0的功能如下:
    在这里插入图片描述
    这里我们主要讲的方式1。
    控制寄存器TCON:
    在这里插入图片描述
    定时器的使用步骤:
    1.对TMOD赋值,以确定T0和T1的工作方式。
    2.计算初值,并讲其写入TH0、TL0或TH1、TL1。
    3.对中断允许寄存器IE赋值,开放中断。
    4.使TR0、TR1置位。
    接下来我们来写代码:
    首先我们来看看中断函数怎么写:

    void exter0() interrupt 1   //中断函数不能返回任何值,函数名字可以随便起
     {						    //interrupt后面跟的数字为中断优先级。				
    	TH0=(65536-50000)/256;	//往往后面还会带一个using + 一个数字。
    	TL0=(65536-50000)%256;  //这个数字表示此中断使用四组工作寄存器哪一组。		
    	tt++;					//C51编译器自动分配工作组,因此这个using常常省略。
     } 
    

    这就是中断函数,当加一计数器溢出时则会进入此函数。
    初始化定时器:

    void init()
    {
      	  tt=0;
      	  TMOD=0X01;//设置定时器0为方式1
    	  TH0=(65536-50000)/256;
    	  TL0=(65536-50000)%256;
      	  EA=1;		 //开总中断
    	  ET0=1;	 //开定时器中断0	 
    	  TR0=1;       //启动中断
    }
    

    这里往往大家有疑问的是那个初值怎么赋值,从上面的知识点可知,每个定时器都有4种工作模式,可通过设置TMOD寄存器中的M1M0位来进行工作方式选择。这里我们主要讲16位的。
    方式1的计数位数是16位,对T0来说,由TL0寄存器作为低8、TH0寄存器作为高8位,组成了16位加1计数器。
    定时器一但启动(TR0、TR1=1),它便在原来的数值上开始加1计数,若在程序开始时,我们没有设置TH0和TL0,它们的默认值都是0,假设时钟频率为12MHz,12个时钟周期为一个机器周期,那么此时机器周期为1us,记满TH0和TL0就需要2的16次方 -1个数,再来一个脉冲计数器溢出,随即向CPU申请中断。因此溢出一次共需65536us,约等于65.6ms,如果我们要定时50ms的话,那么就需要先给TH0和TL0装一个初值,在这个初值的基础上记50000个数后,定时器溢出,此时刚好就是50ms中断一次,当需要定时1s时,我们写程序时当产生20次50ms的定时器中断后便认为是1s,这样便可精确控制定时时间啦。要计50000个数时,TH0和TL0中应该装入的总数是65536-50000=15536.,把15536对256求模:15536/256=60装入TH0中,把15536对256求余:15536/256=176装入TL0中。
    以上就是定时器初值的计算法,总结后得出如下结论:当用定时器的方式1时,设机器周期为TCY,定时器产生一次中断的时间为t,那么需要计数的个数为N=t/TCY ,装入THX和TLX中的数分别为:
    THX=(65536-N)/256 , TLX=(65536-N)%256 <x为0或1>。如果还不懂可以去看看B站上的课程。
    以上图片来自于郭天祥老师2007年在哈尔滨授课的课件中。

    展开全文
  • 而设得太长又可能引起对短的交互请求的响应变差。 4.防止死锁和避免死锁是两种方法,实质上都是通过施加某些限制条件的方法,来预防发生死锁。两者的主要差别在于:防止死锁所施加的限制条件比较严格。

    操作系统中的一些基础概念问题

    1.操作系统作为计算机系统资源的管理者,管理者各种各样的硬件和软件资源。归纳起来可将资源分为4类:处理器、存储器、I/O设备以及信息(数据和程序)。

    2.中断机制包括硬件的中断装置和操作系统的中断处理服务程序。

    3.在分时操作系统中,时间片设得太短会导致过多的进程切换,降低了CPU的效率;而设得太长又可能引起对短的交互请求的响应变差。

    4.防止死锁和避免死锁是两种方法,实质上都是通过施加某些限制条件的方法,来预防发生死锁。两者的主要差别在于:防止死锁所施加的限制条件比较严格。

    5.系统调用是操作系统提供给编程人员的唯一接口。

    6.描述任何一种操作系统都要用到“作业”的概念。所谓作业,就是用户在一次解题或一个事务处理过程中要求计算机系统所做的工作的集合,包括用户程序、所需的数据及命令等。

    7.多道程序设计技术是指将一个以上的作业存放在主存中,并且同时处于运行状态。这些作业共享处理器、外设以及其他资源。

    8.程序状态字寄存器用于记录当前处理器的状态和控制指令的执行顺序,并且保留和指示与运行程序有关的各种信息,其主要作用是实现程序状态的保护和回复。

    9.用户平时开机时首先启动的是存于主板上ROM中的BIOS程序,其次再由它去调用硬盘中的操作系统,将操作系统的程序自动加载到内存中的系统区,这段区域是RAM。

    10.多重处理即并行执行,多任务处理即多个进程并发执行。

    展开全文
  • 操作系统复习:死锁

    2021-01-18 12:37:42
    操作系统复习:死锁 1 死锁概念 ...都可能导致死锁发生 1.3 引发死锁必要条件 互斥条件 不可剥夺条件 请求和保持条件 循环等待条件 (4)中蕴含了前三项成立。列出必要条件的目的是,在操作系统

    操作系统复习:死锁

    1 死锁的概念

    1.1 死锁的基本概念

    • 个数至少为2个;
    • 至少有两个进程已经占有资源;

    操作系统设计中必须高度重视死锁问题

    1.2 死锁的产生原因

    1. 竞争资源,系统提供的资源有限
    2. 多道程序运行时,进程推进顺序不合理
    • 资源:永久性资源(CPU,IO设备,内存,文件,信号量)/临时性资源(信号,中断,消息);都可能导致死锁发生

    1.3 引发死锁的必要条件

    1. 互斥条件
    2. 不可剥夺条件
    3. 请求和保持条件
    4. 循环等待条件

    (4)中蕴含了前三项的成立。列出必要条件的目的是,在操作系统的设计中可以破坏掉这些条件来达到预防死锁的效果。

    2 解决死锁问题的方法

    2.1 死锁预防

    从引发死锁的必要条件入手。

    (1)互斥使用/资源独占条件
    一般来说是资源使用的固有特性,由资源本身决定而不由软件决定。

    但是某些条件下,可以应用资源转换技术,将独占资源变为共享资源。

    eg.SPOOLing技术(假脱机技术)的引入;解决不允许任何进程直接占有打印机的问题

    (2)不可剥夺条件:
    • ​ 实现:调度时帮后来者抢夺先来者的资源

    • ​ 使用资源:CPU、内存等容易保存和恢复的资源

      这个策略一般是对虚拟化资源应用,即与其说是“抢夺”,不如说是“借用”,不影响对方稍后将工作进行完毕

    • ​ 缺点:策略复杂,代价大;有可能造成先来者的饥饿问题

    (3)请求和保持条件:
    • 静态分配资源策略:
      • 运行前就给定所有资源
      • 系统工作效率低
    • 动态分配资源策略
      • 运行中申请新资源前必须归还旧资源
      • 申请的新资源正被占用的话仍会需要较长的等待新资源的时间
    (4)循环等待条件
    • 资源有序分配法:为资源按照紧缺程度编号,编号大代表稀缺。进程申请资源必须按照从小到大的顺序,只有当进程拥有编号较小的资源时才能申请编号较大的资源;释放资源按照编号递减的顺序进行。

    • 合理编号比较困难;进程为了得到高级资源,暂不需要的资源也被迫要申请,造成资源的浪费。

    2.2 死锁避免

    2.2.1 安全,不安全与死锁状态

    在多道程序工作中,我们让每一时刻都对应一个状态,这个状态,用每个进程对资源的占用情况来表示。

    如果存在一个进程序列,使得系统剩余资源按顺序地服务序列中的进程,能保证服务完成,这就是安全状态。

    不安全状态对应着无论怎样的进程序列,系统总会在服务到某一个进程时发现自己已经不能提供足够的资源了,此时就到达了死锁状态。

    我们要避免死锁,就是避免资源调度中系统从安全状态进入不安全状态。

    (具体策略比如在临界情况下拒绝分配资源,等待别的资源的回收,不过银行家算法就详细地介绍了实现)

    2.2.2 银行家算法
    #银行家算法
    def Banker(i,request[i]):
        if request[i]>need[i]:
            return Request_Amount_Error
        while request[i]>available:
            Wait
            if wait_time > SETTIME:
                return Time_Exceeding_Error
        # try to allocate 
        while(True):
            available -= request[i]
        	allocation[i] += request[i]
        	need[i] -= request[i]
            work:=available
        	if not SafetyTest(work,n):
        		available += request[i]
        		allocation[i] -= request[i]
        		need[i] += request[i]
            	Wait
                if wait_time > SETTIME:
                	return Time_Exceeding_Error
       return Allocate_Completion
    
    #安全性算法
    def SafetyTest(n):
        if n==0:
            return True
        for i in process:
            if finish[i]==False and need[i]<=work:
                work+=allocation[i] # 当前进程运行结束后归还资源
                finish[i]=True
            	SafetyTest(n-1)
                work-=allocation[i]
                finish[i]=False
    

    2.3 死锁检测

    资源分配表(资源–正在占用它的进程)+进程等待表(进程–等待的资源),两表交错取边构成环时,形成死锁。

    死锁解除:1 剥夺资源 2 撤销进程

    3 资源分配图

    在资源点和进程点之间连接有向边,资源->进程的是分配边,进程->资源的是申请边。

    3.1 环路

    在资源点仅有单一资源的分配图中,环路是死锁的充分必要条件;而资源点上有多个相同资源的分配图中,环路仅仅是死锁的必要条件。

    3.2 可化简与不可化简

    # 化简算法
    def Simplify(map):
        if map in None:
            return True
        p<-None
        for every process in process_set:
            if process.status is not WAIT:
                p<-process
                break
        if p is None:
            return False
        map.delete(p)        # Allocate_Resource(process)
        return Simplify(map) # map_size -= 1
    
    展开全文
  • 6.1 给出可重用资源...6.2 可能发生死锁所必须三个条件是什么? 互斥,占有且等待,非抢占。 6.3 产生死锁第4个条件是什么? 循环等待。 6.4 如何防止占有且等待条件? 可以要求进程一次性地请求所有...

    6.1 给出可重用资源和可消费资源的例子。

    可重用资源:处理器,I/O通道,主存和辅存,设备以及诸如文件,数据库和信号量之类的数据结构。

    可消费资源:中断,信号,消息和I/O缓冲区中的信息。

    6.2 可能发生死锁所必须的三个条件是什么?

    互斥,占有且等待,非抢占。

    6.3 产生死锁的第4个条件是什么?

    循环等待。

    6.4 如何防止占有且等待的条件?

    可以要求进程一次性地请求所有需要的资源,并且阻塞这个资源直到所有请求都同时满足。

    6.5 给出防止无抢占条件的两种方法。

    第一种,如果占有某些资源的一个进程进行进一步资源请求被拒绝,则该进程必须释放它最初占用的资源,如果有必要,可再次请求这些资源和另外的资源。

    第二种,如果一个进程请求当前被另一个进程占有的一个资源,则操作系统可以抢占另一个进程,要求它释放资源。

    6.6 如何防止循环等待条件?

    可以通过定义资源类型的线性顺序来预防。如果一个进程已经分配到了R类型的资源,那么它接下来请求的资源只能是那些排在R类型之后的资源类型。

    6.7 死锁避免,检测和预防之间的区别是什么?

    死锁预防是通过间接地限制三种死锁必要条件的至少一个或是直接地限制循环等待的发生来避免死锁的出现。死锁避免允许可能出现的必要条件发生,但是采取措施确保不会出现死锁的情况。而死锁检测允许资源的自由分配,采取周期性的措施来发现并处理可能存在的死锁情况。

    展开全文
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    你难免会遇到各种各样问题,有些可能让你百思不得其解,甚至翻遍图书馆,也找不到问题答案。 《你必须知道495个C语言问题》出版填补了这一空白。许多知识点阐述都是其他资料中所没有,弥足珍贵。 涵盖...
  • 3.18 需要根据条件把一个复杂表达式赋给两个变量中一个。可以用下面这样代码吗?((condition) ? a : b)= complicated_expression; 41  3.19 我有些代码包含这样表达式。a ? b=c : d 有些编译器可以接受...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    3.18 需要根据条件把一个复杂表达式赋给两个变量中一个。可以用下面这样代码吗?((condition)?a:b)=complicated_expression; 3.19 我有些代码包含这样表达式。a?b=c:d有些编译器可以接受,有些却不能。为...
  • 40 为使工作在一般完全嵌套方式8259A中断控制器能接受下一个中断请求,在中断服务程序结束处应( )。 A、直接执行IRET指令 B、先执行POP指令 C、发送普通EOI指令 D、不用任何处理,8259会自动进行有关处理 ...
  • 分布式锁

    2020-02-09 22:30:44
    判断是否获得锁必须是原子性,否则可能导致多个请求都获取到锁  3. 网络中断或宕机无法释放锁时,锁必须被清楚,不然会发生死锁  4. 可重入一个线程中可以多次获取同一把锁,比如一个线程在执行一个带锁方法...
  • 操作系统实验报告

    2019-01-10 19:24:18
    本实验目的在于使用高级语言编写和调试一个系统动态分配资源简单模拟程序,了解死锁产生的条件和原因,并采用银行家算法有效地防止死锁的发生,以加深对课堂上所讲授知识理解。 三、实验内容与要求 设计有n...
  • (4)用户界面具备更短响应时间:现代GUI框架中大都使用一个事件分发线程(类似于中断响应函数)来替代主事件循环,当用户界面用有事件发生时,在事件线程中将调用对应事件处理函数(类似于中断处理函数) ...
  • (2)产生死锁四个必要条件是资源互斥使用、保持和等待、非剥夺性、循环等待。 (3)解决死锁方法 一般有死锁预防,即破坏产生死锁四个必要条件中一个或多个,使系统绝不会进入死锁状态;死锁...
  • IIS6.0 IIS,互联网信息服务

    热门讨论 2010-08-23 21:20:55
    如果进入窗口中,“Internet信息服务(IIS)” 选项无法选择,那么很可能因为你使用“iis.dl_”和“iis. in_”是从Windows XP专业版中提取,只要换成 Windows 2000专业版中这两个文件即可。 步骤4 安装结束后,...
  • PCI.EXPRESS系统体系结构标准教材.pdf

    热门讨论 2013-02-17 16:21:16
    9.2.3 生成msi中断请求的基础 9.2.4 中断处理程序处理时的存储器同步 9.2.5 中断延迟 9.2.6 一些规则、建议等等 9.3 传统的pci中断发送机制 9.3.1 背景知识——pci中断信令 9.3.2 虚拟intx信令 9.4 设备可以同时支持...
  • jsr80 java 访问 usb

    2015-02-14 08:52:01
    2001年,他项目通过 Java 规范请求(Java Specification Request,JSR)过程被接受为 Java 语言候选扩展标准。这个项目现在称为 JSR-80 并且指定了官方包 javax.usb 。同时,在 2000年 6月,Mojo Jojo 和 David ...
  • 单片机期末考试题目及答案详解

    热门讨论 2009-06-23 10:30:30
    同级中断请求按时间先后顺序响应 D.同级中断按CPU查询次序响应中断请求 15.执行中断返回指令,要从堆栈弹出断点地址,以便去执行被中断了主程序。从堆栈弹出断点地址送给 A.A B.CY C.PC D.DPTR 16....
  • 普遍使用 Android APP 技术架构,往往是在一个界面中存在大量业务逻辑,而业务逻辑中充斥着各种网络请求、数据操作等行为,整个项目中也没有模块概念,只有简单以业务逻辑划分文件夹,并且业务之间也是...
  • 因此,以后使用的可能是一个非法指针。 指针的使用是非常灵活的,同时也存在危险性,必须小心使用。指针使用的危险性举世共知。在新的编程思想中,指针基本上被禁止使用(JAVA中就是这样),至少也是被限制使用。而...
  • 二十三种设计模式【PDF版】

    热门讨论 2011-05-30 14:13:49
    程序员必备条件. 整个设计模式贯穿一个原理:面对接口编程,而不是面对实现.目标原则是:降低耦合,增强灵活性. 建筑和软件中模式之异同 CSDN 透明特别推崇《建筑永恒之道》,认为从中探寻到软件永恒之道,并...
  • realplayer

    2010-08-18 10:57:02
    “安全内容所有者”可随时请求 RN 或其供应商提供与“软件” DRM 组件更新相关安全性(“安全性更新”),这可能会影响您复制、播放和(或)使用“软件”能力。 从而,您同意如果您选择从 Internet 下载...
  • 软件工程教程

    2012-07-06 23:10:29
    删除操作一旦执行,立即被监听器捕获到,进而在执行 删除操作前执行自定义函数体,即判断实体有无undeletable标签,有则中断删除操作,无则正常删除。 用例图 关系 关联关系 ;依赖关系 ;泛化关系;关系...
  • 德力西产品说明.pdf

    2019-10-10 18:41:58
    不正确使用可能会造成变频器运行不正常、发生故障或降低使用寿命,乃至发生人身伤害事故。因此使用前应认真阅读本说明书,严格按说明使用。本手册为标准附件,务必请您阅读后妥善保管,以备今后对变频器进行检修和...
  • 他们允许更灵活结构,可以具有完全不同性质,并且可以支持多个相关类的条件对象。它优势有:可以使锁更公平;可以使线程在等待锁时候响应中断;可以让线程尝试获取锁,并在无法获取锁时候立即返回或者等待...
  • doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 51 单片机设计跑马灯程序用(c 语言)编写 P1 口接 8 个发光二极管共阳,烧入下面程序 #include unsigned char i; unsigned char ...
  • 多媒体教室

    2013-06-14 08:10:31
    屏幕广播效率极高,尤其在网络条件较差时亦能体现出良好性能;可以根据网络条件调节网络补偿强度,根据广播内容调节广播及录制效率,使广播达到最佳效果;可以广播多媒体课件。 语音广播, VCD 广播可以达到学生...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

发生中断请求的可能条件是