网站首页 > 技术教程 正文
Linux 内核从1991年至2018年已经有27年的历史了,从原来不到1万行代码到现在已经超过2000万行代码了。我其实也挺佩服人类的大脑,可惜这佩服也是大脑想到的,细思极恐!
以下就是Linux内核的大概的总体样子!!
我大致总结一下,我打个不恰当比方,软件是上层建筑,就是你住的地方,地基面就是系统调用层,上层建筑只要根据地基面来规划就好了,不用管地基里面是什么样子。
一个Linux的内核总体能分三部分:
硬件层:包括cpu、物理内存、主板、磁盘和相应的外设。
内核空间:包括Linux内核的核心部件,比如arch抽象层、设备管理抽象层、内存管理、进程管理、总线管理、字符设备以及应用程序交互系统调用层
用户空间:这里包括c语言库、应用程序和虚拟机等。
那我们先关注一些主要的部件。
(1) system calls(系统调用层)这个我在上篇文章中说了。
linux内核把系统分成两个空间,用户空间和内核空间。
系统调用层
把系统想成一个大楼,调用层是地基平面,用户层就建立在上面,用户是不关心地基里面怎么运行的。比如编写用户进程的程序员不需要知道这个文件具体存放在磁盘哪个扇区里,只需要调用open()、read()、mmap()等函数就可以。
(2) 进程管理
进程是现在操作系统中非常重要的概念,包括上下文切换以及进程调度。每个进程运行时都感觉完全占有了全部的硬件资源。但是进程不会长时间占有硬件资源。操作系统利用进程调度器让多个进程并发执行。
进程管理还包括进程的创建和销毁、线程组管理、内核线程管理、队列等内容。
问个问题,一个进程和线程是啥区别呢?
(3) 内存管理
内存管理是Linux内核中最复杂的模块,它涉及了虚拟内存和物理内存的管理。作为Linux系统,Linux内核的虚拟内存管理非常重要。虚拟内存有很多优点,比如多个进程可以并发执行、进程请求的内存可以比物理内存大、多个进程可以共享函数库等,因此虚拟内存越来越复杂了。
物理内存的管理也比较复杂。页面分配器是核心部件,它需要考虑系统内存紧张时候,如何回收页面和继续分配物理内存。
(4) 文件系统
为多种文件系统提供统一的操作接口,当然有各种各样的文件系统,比如ext4和XFS等。为了支持各种各样的文件系统,Linux虚拟机出一个称为虚拟文件系统(VFS),这样linux内核就可以很方便的集成多种文件系统。
再墨迹一下,如何学习Linux的内核呢?
学习linux内核应该要对c语言有所了解,毕竟Linux内核是c语言写的,可以买一些书来看,或者关注我们的平台,我们是一个强大的团队,有老师可以问问他们问题,一起交流。
还有你还要了解Linux系统,熟悉vim和git等工具。
再Linux上做一些编程和调试的练习,如使用QEMU+GDB+Eclipse来调试内核,熟悉GDB等。
最后喜欢我文章的朋友请加圈子关注我们,私信关键词:加群。
就会自动分享给你群号。欢迎大家加入我们的安全大家庭。提高大家的安全意识,提升大家的网络安全技能一直是我们的初衷和愿景,让我们共同成为守护信息世界的“SaFeMAN”。
还有可以关注我们微信公众号,在公众号上输入安界网,就可以关注到我们。
猜你喜欢
- 2025-05-03 通俗易懂:把linux驱动编译进内核(linux驱动编译命令)
- 2025-05-03 Linux之父:Linux内核5.8是“我们有史以来最大的发行版之一”
- 2025-05-03 深度操作系统 Deepin V23 安装最新的 linux 内核
- 2025-05-03 TCP/IP协议栈在Linux内核中的运行时序分析
- 2025-05-03 Linux内核源码分析(linux内核源码谁会看)
- 2025-05-03 多年一直用Linux内核,微软也内疚
- 2025-05-03 深入了解Linux的虚拟内存管理「嵌入式工程师」
- 2025-05-03 从 0 到 1:如何用 eBPF 深入监控 Linux 内核?
- 2025-05-03 「技术干货」一文搞懂怎么使用Linux内核模块
- 2025-05-03 详解Linux内核源码体系结构与内核结构(图解)
你 发表评论:
欢迎- 最近发表
-
- linux日志文件的管理、备份及日志服务器的搭建
- Linux下挂载windows的共享目录操作方法
- Linux系统中的备份文件命令(linux系统中的备份文件命令有哪些)
- 麒麟KYLINOS|通过不同方法设置用户访问文件及目录权限
- 「Linux笔记」系统目录结构(linux目录的结构及含义)
- linux中修改归属权chown命令和chgrp命令
- 工作日报 2021.10.27 Android-SEAndroid权限问题指南
- Windows和Linux环境下,修改Ollama的模型默认保存路径
- 如何强制用户在 Linux 上下次登录时更改密码?
- 如何删除Linux文件夹中除某些扩展名之外的所有文件?
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)