一文看懂linux内核详解

老实说,谈论 Linux 内核时最烦人的是术语,但说白了,内核就是处理你所有程序硬件的“大管家”。
当我第一次接触内核并查看汇编代码时,感觉就像在咀嚼一本来自天堂的书。

Linux内核的模块化设计非常有趣。
例如,当时我正在开发内核不直接支持的旧网卡驱动程序。
结果,硬件制造商直接提供了.ko模块,你所要做的就是安装它。
这种设计的优点是显而易见的。
后来我公司的服务器加了一块新的SSD,驱动安装比系统安装还快。
当然,模块化也存在障碍,模块之间的依赖关系就像解魔方一样,导致系统蓝屏。

说到内核内存限制,我有亲身经历。
当我在3 2 位系统上调试内存泄漏问题时,我发现内核只有1 G可用内存,但我的程序却占用了3 G。
当时的感觉真的就像挤一罐沙丁鱼一样。
然后我切换到6 4 位系统,问题立即得到解决。
不过,6 4 位现在正在成为标准,所以要小心。

CPU 时间片功能实际上非常好。
我们观察服务器负载时发现,当系统负载超过9 0%时,响应速度变得更快。
当时我很困惑,但后来意识到内核正在将时间片分成更小的部分。
然而,这种机制也有副作用。
我见过系统变得如此繁忙以至于CPU冒烟,导致用户程序运行得比蜗牛还慢。

我一直觉得init进程的作用相当神奇。
我记得第一次用 systemd 替换 init 时,整个启动过程变得更快了一个级别。
但说实话:systemd 打包了 init 完成的所有事情,这可能会让问题排查变得有点绕路。
这就像为您的管家配备了智能手环。
虽然他们很强大,但他们有时也会生气。

回想起来,Linux内核最好的一点就是它很好地分解了复杂的问题。
例如,内存管理表面上是堆栈分配,但实际上是通过页表切换和交换机制等来支持的。
我在写驱动的时候,经常因为不了解页表而遇到内存抖动的情况。
最后我发现加载模块时CMA区域设置不正确。

其实内核开发最考验人的就是经验的积累。
我的同事有一个简单的 USB有些人甚至可以通过编写驱动程序来冻结他们的系统。
后来发现是中断优先级设置不正确。
这种问题光看书是学不到的,必须钻进去。
现在回想起来,我最美好的回忆是那些深夜调试内核的日子。

4.4.1 认识linux文件系统——文件系统概述

说白了,Linux文件系统就是硬盘管理器。
将硬盘块变成文件夹和文件供您使用。
我上周刚刚处理了一个系统冻结问题,这是一个文件系统错误。

核心作用是三点。
首先,管理存储。
自动共享空间并释放已删除的文件。
第二,注意安全。
谁可以查看、谁可以更改,以及文件的创建时间都会被记住。
三是发挥桥梁作用。
你使用命令,系统通过VFS找到具体的文件系统,最后移动硬盘。

设计理念是“一切皆文件”。
常规文件是文本或程序,目录文件是文件夹。
设备文件比较有趣,光驱是一个文件,键盘也是一个文件。
符号链接就像Windows快捷方式,管道文件是进程之间的传输麦克风。

有四个关键角色。
首先统一接口。
您可以通过读取该文件来更改系统时间并查看CPU信息。
其次,管理硬件。
使用硬件作为文件操作,串口设备将数据直接回显到其中。
三是过好流程。
管道文件允许程序相互发送消息。
四、虚拟文件系统。
/proc目录比较特殊,这里存放的是系统信息。

这些是文件类型。
普通文件(-)是文本或程序。
目录文件(d)是文件夹。
设备文件分为两类:字符设备 (c)(如键盘)和块设备 (b)(如硬盘)。
链接文件(l)分为符号链接和硬链接。
套接字文件(s)用于网络,管道文件(p)用于传输数据。

你自己看看。
这就是 Linux 文件系统的意义所在。

Linux系统已经不实用了?十大理由让你了解Linux

Linux系统已经过时了。

免费。
开源省钱。
教育是免费的。

稳定。
9 9 .9 %。
服务器首选。
维护简单。

兼容。
各种硬件。
易于定制。

安全。
开源 病毒更少。

灵活性。
定制。
游戏支持。

社区很强大。
问题很快就得到了解决。
教育。
学习技术。
免费资源。

给自己计时。

linux是什么,能仔细跟我说下么,跟win8什么区别

简单来说,Linux是操作系统的核心,就像手机上Android系统的底层一样。
它本身是免费和开源的,因此基于Linux内核的操作系统,例如Ubuntu和CentOS,也是免费和开源的。

不同的Linux版本就像不同手机厂商的系统定制。
Ubuntu 是特别流行的操作系统之一。
它分为桌面版和服务器版。
你提到的红帽和红旗是类似的。
它们都基于 Linux 内核,但每个都有自己的调整和功能。

与Windows相比,Linux和Windows有不同的想法。
Linux 中的许多操作必须通过命令行(终端)执行,例如键入“ls”来查看文件列表。
Windows就方便多了,只需点击拖拽即可,图形界面非常好用。
文件系统也有很大不同。
Windows习惯于划分磁盘,比如C盘、D盘,一个硬盘被划分为很多块。
对于 Linux,它不会这样做。
它只有一个根文件夹,下面挂着许多不同的文件夹,像一棵树一样分层。
Windows 分区的概念在 Linux 中并不常见。
它采用“挂载点”,即硬盘或U盘以文件夹的形式直接连接到系统,使用更加灵活。

老实说,Linux是一个非常庞大和复杂的系统,光靠说实话是无法理解的。
你要自己去尝试,安装系统,使用命令,逐渐认识到Linux和Windows思维上的差异。
它实际上是一个与Windows完全不同的操作系统,有自己的方式。