分享

操作系统是如何工作的

 山峰云绕 2018-02-05

无论是电脑操作系统还是手机操作系统,无论是windows还是linux还是手机的工作原理都是一样的。比如在你阅读这篇文章的时候,操作系统是在运行吗?这些问题并不复杂,但它们深入涉及到操作系统的本质。为了彻底理解这些问题,我们需要透彻理解操作系统的行为模型,包括性能、安全和除错等方面的机制。

操作系统是如何工作的

           【【石头大V】操作系统是如何工作的】http://toutiao.com/group/6518962431287362052/?iid=15906422033&app=explore_article&timestamp=1517840206&tt_from=copy_link&utm_source=copy_link&utm_medium=toutiao_ios&utm_campaign=client_share 

 我们以 Linux 为例来帮助你了解操作系统的行为模型,别的系统基本原理也是一样的。在任意给定时刻,某个 CPU 上仅有一个任务处于活动状态。大多数情形下这个任务是某个用户程序,例如你的 Web 浏览器或音乐播放器,但它也可能是一个操作系统线程。可以确信的是它是一个任务,不是两个或更多,也不是零个,就是一个。
操作系统是如何工作的​这听上去可能会有些问题,比如你的音乐播放器是否会独占 CPU 而阻止其它任务运行,从而使你不能打开任务管理工具去杀死音乐播放器,甚至让鼠标点击也失效,因为操作系统没有机会去处理这些事件。
操作系统是如何工作的此时便轮到中断大显身手了,中断就好比一声巨响或一次拍肩后,神经系统通知大脑去感知外部刺激一般。计算机主板上的芯片组同样会中断 CPU 运行以传递新的外部事件,例如键盘上的某个键被按下、网络数据包的到达、一次硬盘读取的完成等,硬件外设、主板上的中断控制器和 CPU 本身,它们共同协作实现了中断机制。
操作系统是如何工作的​中断对于记录我们最珍视的(资源时间)也至关重要。计算机启动过程中,操作系统内核会设置一个硬件计时器以让其产生周期性计时中断,例如每隔 10 毫秒触发一次。每当计时中断到来,内核便会收到通知以更新系统统计信息和盘点如下事项,当前用户程序是否已运行了足够长时间,是否有某个 TCP 定时器超时了,中断给予了内核一个处理这些问题并采取合适措施的机会。这就好像你给自己设置了整天的周期闹铃并把它们用作检查点:我是否应该去做我正在进行的工作?是否存在更紧急的事项?直到你发现 100 年时间已逝去……
操作系统是如何工作的​这些内核对 CPU 周期性的劫持被称为滴答tick,也就是说中断让你的操作系统滴答了一下。不止如此中断也被用作处理一些软件事件,如整数溢出和页错误,其中还涉及外部硬件。中断是进入操作系统内核最频繁也是最重要的入口。它们是操作系统赖以运行的机制。
让我们再来看一些实际情形,比如Intel Core i5 系统中的一个网卡中断了,会出现提示,你可以点击它们以获取更为详细的信息,每个设备均被链接到了对应的 Linux 驱动源码。
操作系统是如何工作的这是因为首先由于系统中存在众多中断源,如果硬件只是通知 CPU 这里发生了一些事情,然后什么也不做。这会带来难以忍受的冗长等待。因此计算机上电时,每个设备都被授予了一根中断线,这根线被称为 IRQ。这些 IRQ 然后被系统中的中断控制器映射成值介于 0 到 255 之间的中断向量。等到中断到达 CPU,它便具备了一个完好定义的数值,区别于硬件的某些其它行为。
操作系统是如何工作的相应地CPU 中还存有一个由内核维护的指针,指向一个包含 255 个函数指针的数组,其中每个函数被用来处理某个特定的中断向量,它被称作中断描述符表(IDT)。 每当中断到来,CPU 会用中断向量的值去索引中断描述符表,并执行相应处理函数。这相当于在当前正在执行任务的上下文中,发生了一个特殊函数调用,从而允许操作系统以较小开销快速对外部事件作出反应。这看上去就像Vim 编辑器直接面向操作系统内核产生了一次神奇的函数调用,但 Vim 还在那里,它的地址空间原封未动在等待着执行流返回,假如Web 服务器在发送数据时,CPU 却间接调用了操作系统函数,可想一下这是多么可怕的一件事情。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多