Linux 内核系统架构

本文详细介绍了Linux内核的系统架构,包括进程管理、CFS红黑树调度算法、内存管理和虚拟地址空间、虚拟文件系统、设备驱动以及网络模型。通过分析各个关键模块,阐述了操作系统如何管理资源、软硬件协同工作以及软硬件分工。文章强调了阅读源代码的重要性,特别是对希望成为技术专家的人来说。
摘要由CSDN通过智能技术生成

但是对于初学者,还是应该多学习多看,毕竟上亿字不能一下子就明白的。

即使看了所有的Linux 内核文章,估计也还不是很明白,这时候,还是需要fucking the code.

28年前(1991年8月26日)Linus公开Linux的代码,开启了一个伟大的时代。这篇文章从进程调度,内存管理,设备驱动,文件系统,网络等方面讲解Linux内核系统架构。Linux的系统架构是一个经典的设计,它优秀的分层和模块化,融合了数量繁多的设备和不同的物理架构,让世界各地的内核开发者能够高效并行工作。先来看看Linus在多年前公开Linux的邮件。

"Hello everybody out there using minix - I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I’d like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).

I’ve currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I’ll get something practical within a few months, and I’d like to know what features most people would want. Any suggestions are welcome, but I won’t promise I’ll implement them :-)

Linus (torv...@kruuna.helsinki[1].fi)"

事实上,从那一天开始,Linux便是博采众长,融合了非常多的优秀设计。在了解操作系统的时候,我们至少需要知道:

1.操作系统是如何管理各种资源的?

2.软硬件如何协同工作?3.如何通过抽象化屏蔽差异4.软硬件如何分工?

这篇文章通过对内核主要模块的介绍,希望能为大家寻找这些问题的答案起一个抛砖引玉的作用。实际上,建议每一个希望成为技术专家的人都读一遍Linux的源代码。

先来看看Linux内核一个高阶架构图:

Linux 内核系统架构

 

Linux系统架构图

架构非常清晰,从硬件层,硬件抽象层,内核基础模块(进程调度,内存管理,网络协议栈等)到应用层,这个基本上也是各类软硬件结合的系统架构的基础设计,例如物联网系统(从单片机,MCU等小型嵌入式系统,到智能家居,智慧社区甚至智慧城市)在接入端设备的可参考架构模型。

Linux最初是运行在PC机上的,使用的x86架构处理器相对来说比较强大,各类指令和模式也比较齐全。例如我们看到的用户态和内核态,在一般的小型嵌入式处理器上是没有的,它的好处是通过将代码和数据段(segment)给予不同的权限,保护内核态的代码和数据(包括硬件资源)必须通过类似系统调用(SysCall)的方式才能访问,确保内核的稳定。

想象一下,如果需要你写一个操作系统,有哪些因素需要考虑?

进程管理:如何在多任务系统中按照调度算法分配CPU的时间片。

内存管理:如何实现虚拟内存和物理内存的映射,分配和回收内存。

文件系统:如何将硬盘的扇区组织成文件系统,实现文件的读写等操作。

设备管理:如何寻址,访问,读,写设备配置信息和数据。

这些概念是操作系统的核心概念,由于篇幅原因,本文章主要从高阶的角度来讲,更多细节不在本文覆盖。

 

进程管理

进程在不同的操作系统中有些称为process,有些称为task。操作系统中进程数据结构包含了很多元素,往往用链表连接。

进程相关的内容主要包括:虚拟地址空间,优先级,生命周期(阻塞,就绪,运行等),占有的资源(例如信号量,文件等)。

CPU在每个系统滴答(Tick)中断产生的时候检查就绪队列里面的进程(遍历链表中的进程结构体),如

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值