操作系统内核子系统的协调工作

简介:
第一部分、内务子系统 
  作系统内核的管理功能以及执行最终也要归于cpu的执行流,因此最简单的设计就是将内核的内务也设计成进程,但是对于一些特别的内务这个办法就不适用了,因为这些内务的特殊性恰恰在于它们是依赖cpu的,或者说是和cpu进行接口的。如果我们把计算机视为一台人类发明的智能的机器,那么很自然的,类似上帝造人那样,我们会把计算机设计成人的模样,计算机应该有心跳和反射。
     到底 什么是内核的内务  呢?其实举个例子就明白了。餐厅是顾客吃饭的地方,然而餐厅服务员也是人,也要吃饭,他们的吃饭问题就是内务问题,另外,餐厅需要及时打扫保持卫生,餐厅打扫卫生的阿姨的工作也属于内务问题。重要的问题是内务事务应该怎样执行。餐厅工作人员吃饭是直接付费还是免费还是从薪水中扣除...
     内务子系统包括操作系统所有的子系统(进程、文件、内存...)加上中断等内容
一、时钟 
1、时钟是最底层也是最基本的驱动器。  
  钟提供了基本的脉搏。
  如动物的心跳一样,时钟提供了一切的节拍。
  个机器依靠时钟的驱动运行。cpu芯片被精确设计,在周期性的时钟边缘触发事件中推进执行逻辑的值,比如EIP寄存器。然而cpu认为系统只有一个进程,一个执行流,这是冯.诺依曼机器模型决定的。
  作系统必须获取这个事件,然后执行操作系统相关的操作,比如进程调度等等。
2、中断处理  
  果再次和动物心跳进行类比,那么中断就类似于反射(条件反射和非条件反射),当人被从背后拍打肩膀时,人会本能的扭头,或者膝跳反射,这些都是明显的例子。
  作系统设置了中断处理程序,当cpu检测到中断事件发生时,将执行流自动路由到时钟中断处理程序。设置中断处理程序正如条件反射的学习过程一样。
3、时钟和中断的关系  
  于会思考的动物,心跳和反射无疑在其生理和心理行为中扮演了两大重要的角色,可以想象,没有心跳和瞬时反射的植物虽然也是生物,然而却几乎只能进行细胞分裂而无法进行丰富的生理和心理活动。
  于计算机而言,心跳和反射依然重要,然而不同于动物,计算机的心跳是反射的一部分,对于动物来讲,心跳是心脏完成的,而反射是神经系统完成的。
  钟中断也是一种中断,心跳和反射统一于中断。时钟也是由一个中断提供的。注意计算机和动物的区别,是否这一点导致了计算机不可能实现智能化?
  经系统和心脏的分工是好的,心脏仅仅提供节拍和能量,而神经系统只提供行为。然而问题真的如此简单吗?  
4、时钟中断处理-Linux  
  新当前进程的时间统计值
  查是否需要进行进程调度
  果需要调度的话,进行进程调度。使更需要运行的进程运行。
  次重申,具体实现不重要,代码不重要,因此此部分内容很少,看代码就好...  
二、软中断机制 
1、硬件中断机制  
  设有事件的时候,会发起硬件中断,硬件中断处理程序需要做的工作量很不统一。
  件中断处理程序必须需要很快完成。中断是一种异常执行流,它不应该过分的影响正常执行流。比如一家人其乐融融,突然被一个不速之客(比如送快递的或者送牛奶的)打断了快乐,此时,不速之客最好的办法就是办完事赶快离开,或者在不能快速干完事的情况下,告知主人重要事宜后离开,主人待到快乐过后自行处理...
L  inux在硬件中断处理程序中触发一种称为softirq的软中断。
2、软中断  
  时比较久的中断处理事务
三、内核线程和工作队列       
L  inux将内核的一些事务交给内核线程来做。
  何驱动程序或者内核子系统在任何时候都可以提交一些任务让内核来执行,这些任务全部交给工作队列是合理的。
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系统调用退出  

Game over ,我呀,也该睡觉啦。今天是五一,工作时间,工作时间,时间,时间,时间...



 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1271048

相关文章
|
3天前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
19 9
|
1天前
|
人工智能 Android开发 数据安全/隐私保护
移动应用与系统:探索开发趋势与操作系统的协同进化####
当今时代,移动应用不再仅仅是简单的软件工具,它们已成为扩展智能手机及平板等设备功能的关键。本文旨在深入分析当前移动应用的开发趋势,探讨移动操作系统的最新进展及其对应用开发的影响,并阐述两者如何相互促进、协同进化,共同推动移动互联网技术向前发展。 ####
|
3天前
|
移动开发 人工智能 Android开发
移动应用与系统:探索移动开发与操作系统的协同进化####
当今数字化时代,移动设备已成为日常生活不可或缺的一部分。本文旨在深入探讨移动应用开发与移动操作系统之间的紧密关系及其相互影响,揭示技术创新如何推动这一领域的发展。通过分析当前主流移动操作系统的特点、移动应用的开发趋势以及两者间的互动机制,本文为开发者和用户提供了一个全面了解该领域的窗口。 ####
|
1天前
|
开发工具 Android开发 iOS开发
移动应用与系统:涵盖移动应用开发、移动操作系统等相关话题####
本文深入探讨了移动应用开发和移动操作系统的复杂世界。从移动应用开发的基本概念到移动操作系统的核心功能,再到两者如何相互作用以提供无缝的用户体验,本文全面涵盖了这一领域的各个方面。无论你是开发者、技术爱好者还是普通用户,这篇文章都将为你提供有价值的见解。 ####
8 1
|
6天前
|
存储 人工智能 安全
操作系统的心脏——内核深度解析
【10月更文挑战第29天】 本文深入探讨了操作系统的核心组件——内核,包括其定义、功能、架构以及在现代计算中的重要性。通过对比不同操作系统内核的设计哲学和技术实现,揭示了内核如何影响系统性能、稳定性和安全性。此外,文章还讨论了未来内核技术的潜在发展方向,为读者提供了一个全面了解内核工作原理的平台。
|
3天前
|
缓存 运维 网络协议
深入Linux内核架构:操作系统的核心奥秘
深入Linux内核架构:操作系统的核心奥秘
17 2
|
3天前
|
存储 消息中间件 算法
深入探索操作系统的心脏——内核机制解析
本文旨在揭示操作系统核心——内核的工作原理,通过剖析其关键组件与机制,为读者提供一个清晰的内核结构图景。不同于常规摘要的概述性内容,本文摘要将直接聚焦于内核的核心概念、主要功能以及其在系统管理中扮演的角色,旨在激发读者对操作系统深层次运作原理的兴趣与理解。
|
4天前
|
算法 调度 C语言
探索操作系统的心脏:内核与用户空间的交互
【10月更文挑战第36天】本文将深入探讨操作系统的核心组件—内核,以及它如何与用户空间进行交互。我们将通过浅显易懂的语言和生动的例子来揭示这一复杂主题的面纱。文章不仅涉及理论知识,还会展示具体的代码示例,帮助读者更好地理解内核机制。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供新的视角和深入的理解。
|
6天前
|
人工智能 物联网 Android开发
移动应用与系统:探索开发趋势与操作系统的协同进化####
本文深入探讨了移动应用开发的当前趋势,以及这些趋势如何与移动操作系统的发展相互影响、协同进化。通过分析最新的技术动态、市场数据及用户行为变化,本文旨在为开发者提供关于未来移动应用开发方向的洞察,并讨论操作系统层面的创新如何促进或制约应用的发展。 ####
|
7天前
|
缓存 网络协议 Linux
Linux操作系统内核
Linux操作系统内核 1、进程管理: 进程调度 进程创建与销毁 进程间通信 2、内存管理: 内存分配与回收 虚拟内存管理 缓存管理 3、驱动管理: 设备驱动程序接口 硬件抽象层 中断处理 4、文件和网络管理: 文件系统管理 网络协议栈 网络安全及防火墙管理
29 4

热门文章

最新文章