Linux知识:操作系统内核子系统的协调工作

二、软中断机制 1、硬件中断机制 外 设有事件的时候,会发起硬件中断,硬件中断处理程序需要做的工作量很不统一。硬 件中断处理程序必须需要很快完成。中断是一种异常执行流,它不应该过分的影响正常执行流。比如一家人其乐融融,突然被一个不速之客(比如送快递的或者送牛奶的)打断了快乐,此时,不速之客最好的办法就是办完事赶快离开,,或者在不能快速干完事的情况下,告知主人重要事宜后离开,主人待到快乐过后自行处理…Linux在硬件中断处理程序中触发一种称为softirq的软中断。2、软中断 耗 时比较久的中断处理事务三、内核线程和工作队列 Linux将内核的一些事务交给内核线程来做。任 何驱动程序或者内核子系统在任何时候都可以提交一些任务让内核来执行,这些任务全部交给工作队列是合理的。2.6 内核中引入了工作队列,实际上工作队列也是一种内核线程。在经过了多次瘦身之后,2.6.36之后将工作队列进行了彻底的改进,用户(内核子系统或者驱动等)仅仅提交任务,具体如何调度这些任务全部由内核来完成,剥夺了任务提交者的很多权力,比如驱动只能提交任务,而不能创建过多的内核线程。第二部分、内务子系统和Linux各子系统的协调 四、Linux进程的执行 1、被fork,创建一个task_struct 2、exec一个新的磁盘映像,填充进程地址空间 一 般的,Linux的可执行映像是ELF文件,该文件的内容被载入新进程的地址空间3、执行系统调用,比如read。 该 步骤使用了操作系统内核中的VFS子系统,如果保证进程永远不使用文件,那么VFS完全可以从内核中移除。4、被中断 L inux进程在执行过程中会经常被外设中断,即使没有任何外设,也会有时钟中断。被中断之后,执行中断策略,见前述。5、执行期间需要大量内存 调 用mmap在进程地址空间申请虚拟内存,使用时通过alloc_pages申请物理页面。如 果系统再也没有足够的可用物理页面了,将调用相关内核线程来释放一些物理页面,将之分配给当前需要页面的进程。Linux的内务子系统采用“尽量满足”的策略,因为Linux的内务子系统的首要任务是为了解决有限的系统资源和潜在的、未知的、无限的进程需求之间的矛盾,因此内核决不能使用“怕堵车就不让人买车”的策略,既然linux内务子系统是“服务性”的,它就要尽量满足进程的需求,只有在实在满足不了的情况下,才会返回一个错误,告知用户没有可以使用的内存了,这是合理的,起码,内务子系统没有什么私心。Linux的OOM-Killer存在很大的问题,问题就出在策略上,内核不能简单的将占用内存最多的进程kill掉,比如说一个重要的服务占据可300M的内存,够大了,然而一个恶意的程序仅占3M的内存,可是它fork出1000个子进程…接下来咋办?Linux内存子系统应该想办法探测到这个事情吗?如果这么做了,势必引起设计恶化的恶化,因为策略和机制耦合了,按道理来讲,机制应该不理解策略的…6、执行完毕,调用exit系统调用退出

成功是奋斗的结果,而奋斗是成功的必经之路。

Linux知识:操作系统内核子系统的协调工作

相关文章:

你感兴趣的文章:

标签云: