中断与操作系统之间有啥关系?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中断与操作系统之间有啥关系?相关的知识,希望对你有一定的参考价值。

中断由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。硬中断是可以屏蔽的,软中断是不可以屏蔽的。

软中断则是手动由中断指令产生。内核不会立即处理重新触发的软中断。当大量软中断出现的时候,内核会唤醒一组内核线程来处理。这些线程的优先级最低(nice值为19),这能避免它们跟其它重要的任务抢夺资源。但它们最终肯定会被执行,所以这个折中的方案能够保证在软中断很多时用户程序不会因为得不到处理时间而处于饥饿状态,同时也保证过量的软中断最终会得到处理。

设计中断系统时,硬中断用于紧急的响应,而软中断一般用于处理硬中断没有完成的工作。

中断有两个重要的属性,中断号和中断处理程序。中断号用来标识不同的中断,不同的中断具有不同的中断处理程序。在操作系统内核中维护着一个中断向量表(Interrupt Vector Table),这个数组存储了所有中断处理程序的地址,而中断号就是相应中断在中断向量表中的偏移量。

中断与驱动
中断产生时候 保护系统当前状态,也就是把cpu当前的状态保存起来

执行中断程序,执行的中断程序应该尽量短,不去过多占用cpu时长,此处引入Linux的顶半部机制以及底半部机制,顶半部是指中断代码需要立即执行的情况,对于情况不紧急的情况,会将中断程序注册到队列,在cpu运行状态不是那么繁忙的情况下再去执行程序,底半部机制是指中带代码需要立即执行,不得延误(后面会详细介绍顶半部机制以及底半部机制)。

恢复现场工作,中断执行后,跳出中断程序,并恢复中断前cpu状态,继续执行之前的任务
参考技术A 首先我们给出宏观的中断的概念——由于CPU获知了计算机中发生的某些事,CPU暂停正在执行的程序,转而去执行处理该事件的程序。而当这段程序执行完毕后,CPU继续执行刚才的程序,这整个过程称为中断处理,也成为中断。

  实际上,正是由于有了中断概念,才能显著提高并发(并发指单位时间内的积累工作量;并行指真正同时进行的工作量),大幅度提升计算机处理的效率。

操作系统与中断
  这里引用书中的描述,”操作系统是中断驱动的。没有中断,操作系统几乎什么都做不了“。

  由于操作系统需要处理各种事件,因此合理的操作系统就是完成初始化工作后,等待事件发生后,调用相关的处理程序即可。而这个事件大部分就是以中断形式通知给操作系统的。因此可以看出来,操作系统是由中断进行驱动的。

中断分类
  实际上把中断按照事件来源进行分类的话,可以简单的分为外部中断和内部终端。如对其进一步细分的话,则外部中断又可以分为可屏蔽中断和不可屏蔽中断;而内部中断可以分为软中断和异常。
参考技术B 中断是操作系统响应外部设备的一种方式。当外部设备需要响应时就会给操作系统发出中断请求,操作系统通过中断响应来处理。本回答被提问者采纳 参考技术C 一方面来说,Linux中断不允许中断内核。Linux用“cli”和“sti”宏指令来屏蔽和使能中断,在标准Linux里,这些宏只是简单地执行相应的x86处理器 指令。RT-Linux修改了这些宏,执行cli时不是屏蔽中断,而是简单地 重定向到某些RT-Linux代码。如果这是一个RT-Linux中断,允许它继续 ;如果是一个Linux中断,则只是设置一个标准位。

CAS 与 SAML 之间有啥关系?

【中文标题】CAS 与 SAML 之间有啥关系?【英文标题】:What is the relation between CAS vs SAML?CAS 与 SAML 之间有什么关系? 【发布时间】:2017-09-26 08:39:50 【问题描述】:

我知道 CAS 和 SAML 是用于单点登录目的的不同协议,但是让我感到困惑的是那些说“CAS 具有 SAML 实现”的文章。

CAS 和 SAML 不是实现单点登录的不同方式吗?

假设客户的企业有一个 SAML 服务器,但是,一个第三方网站说他们支持基于 CAS 的 SSO。在这种情况下,最终用户最初会登录到企业系统。访问第 3 方网站时,它会连接到企业 SAML 服务器以寻找 SAML 断言吗?


    CAS 和 SAML 之间究竟是什么关系? CAS 在上述设置中究竟会出现在哪里?

【问题讨论】:

【参考方案1】:

有 CAS,协议。然后是 CAS、实现该协议的软件以及许多其他软件。

该软件位于此处: https://github.com/apereo/cas

请注意自述文件:“CAS 是一个开放且文档齐全的身份验证协议。该协议的主要实现是一个同名的开源 Java 服务器组件,托管在此处。”

许多软件产品,例如 Apereo CAS 服务器,同时支持多个协议。所以Apereo CAS软件可以同时支持CAS、SAML2和OAuth等协议。例如 Shibboleth IdP 可以同时支持 SAML2、SAML1 和 CAS。

所以你的问题是:

CAS 和 SAML 不是实现单点登录的不同方式吗?

是的,它们是在许多方面提供或实现相同事物的不同协议。

CAS 在上述设置中究竟会出现在哪里?

SAML 服务器还需要支持该第 3 方网站的 CAS 协议,或者您需要一个单独的 CAS 部署,将身份验证委托给 SAML 服务器...否则不会发生。

【讨论】:

>>CAS 软件可以支持 CAS、SAML2 和 OAuth 正确。如果 CAS 服务器执行 SAML,您也可以使用它。这是“一环统治所有人”之类的事情。【参考方案2】:

虽然接受的答案是准确的,但它是不完整的。 CAS 3.0(协议)规范直接合并了 SAML 1.1 消息。它们用于与 /SAMLvalidate 端点交互,如下所述:https://apereo.github.io/cas/5.0.x/protocol/CAS-Protocol-Specification.html#42-samlvalidate-cas-30

【讨论】:

是的,我认为这也让很多人感到困惑。

以上是关于中断与操作系统之间有啥关系?的主要内容,如果未能解决你的问题,请参考以下文章

英特尔凌动开发者计划与 MeeGo 操作系统有啥关系?

DBMS和文件处理系统之间有啥关系吗?

hadoop和hive之间有啥关系?

操作系统之信号量关系

DNS和域名有啥关系

Action、Dao、DaoImpl、Service、ServiceImpl各自的作用是啥 他们之间有啥关系