尽管计算机相关专业,操作系统和计算机组成原理是选修课。并且学院时和真正从事相关专业工作以后,对于知识的认知自然会发生变化。还很有可能,一辈子呆在中学的老师们只是照本宣科,自己的理解也不深。所以明天我站在真正排查解决问题时的须要层面,用白话说一说linux操作系统的这些知识。
本文整体采用的是类似递归调用的递进式结构。
linux内核的本质
简单来说如上图所示,俺们平常的应用程序或则linux命令要和操作系统打交道,都要经过一个称作linux内核的软件。所有的硬件操作都须要通过他。如同唐代男子出阁,都要有做媒。
尽管如今都是婚姻自由,没有父亲之命媒妁之言那一套。虽然在唐代,媒婆对于整个唐代历史上的婚姻而言,起到的正向的作用。现今社会误导的婚姻也不少。而古时媒婆都要是对两家熟悉,或则做过背调,把握了情况的人。多数都是门当户对,不仅某些婚后就心有所属的,大多数还是过得很幸福的。其实多数人的标准都差不多:好看就行。我感觉自己儿子长得就很好看,只是出去寻问了一下,95%的人不那么觉得
本文不是为封装制度正名。想抒发的是:媒婆最初是一种保护机制。而linux之父林纳斯最初设计linux内核也是设计成一种保护机制。
为何说linux内核是一种保护机制呢,这要从冯·诺依曼体系结构说起。
冯·诺依曼体系结构
冯·诺依曼体系结构的要点是:
计算机的数制采用二补码。计算机应当依照程序次序执行。它采用储存程序形式,指令和数据不加区别,混和储存在同一个储存器中。数据和程序在显存中是没有区别的,它们都是显存中的数据。当EIP表针指向哪,CPU就加载哪段显存中的数据。若果是不正确的指令格式,CPU才会发生错误中断。
这儿提及计算机是在次序的执行指令,而且俺们明明可以一边听歌一边敲代码。这个不仅在目前多CPU构架下可以实现,之前单CPU下也可以实现。由于有时钟分片。若果没有插入优先级高的任务,cpu会在均匀的执行多项任务分片。由于CPU执行速率快,人可能完全觉得不到实际上是断续执行的。
不过我记得上学院的时侯,03年我买了一台电脑拿来打魔兽。当时而且用的市面上的高配呢。有时侯还是会一卡一卡的。可以切身感遭到时钟分片。
若果出现错误,可以通过中断来处理。中断也须要等待时钟分片。好在linux内核的分片非常合理,让中断可以及时响应。
在现代CPU的保护模式中linux文件描述符,每位显存段都有其描述符。这个描述符记录着这个显存段的访问权限。在《接出来一段时间会对你们进行网路通讯的魔鬼训练-理解socket》里我就提及过文件描述符。这儿稍详尽的解释下。
文件描述符
linux系统中,一切皆文件。文件描述符是一个索引值linux虚拟主机,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或则创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编撰常常会围绕着文件描述符展开。
文件描述符、文件、进程间的关系
1.描述:
2.系统为维护文件描述符,完善了三个表
3.通过这三个表,认识文件描述符
文件描述符限制
有资源的地方就有战争redhat linux,文件描述符也是一种资源,系统中的每位进程都须要有文件描述符才会进行改变世界的宏图霸业。世界须要秩序,于是就有了“文件描述符限制”的规定。
如下表:
查看文件描述符限制也可以使用linux命令。
在《提供一个排查性能问题的思路》里,我就提及过解决过toomanyopenfiles问题。俺们明天来实际理解一下。执行下边命令:
这就是一个进程实际占用的文件描述符和文件描述符数。超过系统设定值都会发生toomanyopenfiles异常。这儿你们应当可以着力理解一个文件描述符就是一个文件,文件描述符占用超限就是toomanyopenfiles啦。
特殊的文件描述符
有三个特殊的文件描述符linux文件描述符,分别是0、1、2,对应每位进程的标准输入、标准输出和错误输出。每位进程启动时,操作系统都会给它分配这三个标准的文件描述符。俺们平常用的console控制台就是通过读写这三个文件来实现滴。
linux基础里有介绍如何重定向,下边一条命令可以将标准输出1和错误输出2重定向到一个文件:
总结
linux的显存分段、中断机制和文件描述符限制都是内核的保护机制。其实这并不全面,还有其他机制。
更多Linux内核源码高阶知识请加开发交流Q群篇【318652197】获取,进群免费获取相关资料,免费观看公开课技术分享,入群不亏,快来加入我们吧~
前100名进群发放,额外附赠一份价值699的内核资料包(含视频教程、电子书、实战项目及代码)
资源免费领
学习直通车