理解Linux内核

在这里插入图片描述

如图,Linux内核主要包括5个模块:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。

进程管理:
进程管理负责进程对CPU的访问,如任务的创建、调度和终止等。

内存管理:
主要作用是控制和管理多个进程,使之能够安全的共享主内存区域。

文件系统:
Linux中虚拟文件系统(VFS)是linux基于各种逻辑文件系统抽象出的一种内存中的文件系统,隐藏了各种硬件设备细节,为用户提供统一的操作接口,使用户访问各种逻辑文件系统和设备时,不用区分具体的逻辑文件系统。

网络功能:
网络接口提供了对各种网络标准的存取和各种网络硬件的支持,接口可分为网络协议和网络驱动程序。

进程间通信:
进程间通信可分为管道、命名管道、信号、消息队列、内存共享、信号量和套接字等。

所有的模块都要通过进程调度来运行。


Linux内核流程图如图:

在这里插入图片描述

其中可以看到三个层次:硬件级、内核级和用户级。

用户程序通过陷入完成由用户态到内核态的转换。系统调用作为用户级与内核级交互方式,分为2部分:与文件子系统的交互和与进程控制子系统的交互。

文件子系统管理文件。包括:分配文件空间、管理空闲空间、控制对文件的存取以及为用户检索数据。

进程控制子系统负责进程同步、进程间通信、进程调度和存储管理。

用户程序去调用C函数库,C库去调用系统调用接口,系统调用接口可以完成底层的各种东西,比如调用某个程序,访问什么类型的文件等等。

在这里C函数库就是提供应用程序支配内核工作的系统接口

还有类似的图比如:该图参考《Advanced Programming in Unix Environment》

在这里插入图片描述

最内层是硬件,最外层是用户常用的应用,比如说firefox浏览器,evolution查看邮件,一个计算流体模型等等,硬件是物质基础,而应用提供服务。

比如Linux启动,Linux首先启动内核 (kernel),内核是一段计算机程序,这个程序直接管理管理硬件,包括CPU、内存空间、硬盘接口、网络接口等等,所有的计算机操作都要通过内核传递给硬件。

为了方便调用内核,Linux将内核的功能接口制作成系统调用(system call)。系统调用看起来就像C语言的函数,可以在程序中直接调用,Linux系统有两百多个这样的系统调用,用户不需要了解内核的复杂结构,就可以使用内核。系统调用是操作系统的最小功能单位,一个操作系统,以及基于操作系统的应用,都不可能实现超越系统调用的功能。

UNIX的一条哲学是让每个程序尽量独立的做好一个小的功能。而shell充当了这些小功能之间的"胶水",让不同程序能够以一个清晰的接口(文本流)协同工作,从而增强各个程序的功能。

(shell也有很多种,最常见的是bash, 另外还有sh, csh, tcsh, ksh。它们出现的年代不同,所支持的功能也有差异。)

在这里插入图片描述

一个使用bash shell的终端

一个shell对应一个终端 (程序)。曾经来说,终端是一个硬件设备,用来输入并显示输出。如今,由于图形化界面的普及,终端往往就像上图一样,是一个图形化的窗口,可以通过这个窗口输入或者输出文本,这个文本直接传递给shell进行分析解释,然后执行。

shell是系统的用户界面,是一个特殊的应用程序(命令行),提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

石子君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值