Linux系统结构

news/2024/11/8 22:40:07/

UNIX/Linux 系统可以粗糙地抽象为 3 个层次,底层是系统内核(Kernel);中间层是Shell层,即命令解释层;高层则是应用层。

(1)内核层

内核层是 UNIX/Linux 系统的核心和基础,它直接附着在硬件平台之上,控制和管理系统内各种资源(硬件资源和软件资源),有效地组织进程的运行,从而扩展硬件的功能,提高资源的利用效率,为用户提供方便、高效、安全、可靠的应用环境。

(2)Shell层

Shell 层是与用户直接交互的界面。用户可以在提示符下输入命令行,由 Shell 解释执行并输出相应结果或者有关信息,所以我们也把 Shell 称作命令解释器,利用系统提供的丰富命令可以快捷而简便地完成许多工作。

(3)应用层

应用层提供基于 X Window 协议的图形环境。X Window 协议定义了一个系统所必须具备的功能。

回到顶部

二、深入探究Linux内核

Linux系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。内核主要负责以下四种功能:

  • 系统内存管理
  • 软件程序管理
  • 硬件设备管理
  • 文件系统管理

1. 系统内存管理

操作系统内核的主要功能之一就是内存管理。内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存(即实际并不存在的内存)。

内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为交换空间(swap space)。内核不断地在交换空间和实际的物理内存之间反复交换虚拟内存中的内容。这使得系统以为它拥有比物理内存更多的可用内存。

内存存储单元按组划分成很多块,这些块称作页面(page)。内核将每个内存页面放在物理内存或交换空间。然后,内核会维护一个内存页面表,指明哪些页面位于物理内存内,哪些页面被换到了磁盘上。

2. 软件程序管理

Linux操作系统将运行中的程序称为进程。进程可以在前台运行,将输出显示在屏幕上,也可以在后台运行,隐藏到幕后。内核控制着Linux系统如何管理运行在系统上的所有进程。

内核创建了第一个进程(称为init进程)来启动系统上所有其他进程。当内核启动时,它会
将init进程加载到虚拟内存中。内核在启动任何其他进程时,都会在虚拟内存中给新进程分配一块专有区域来存储该进程用到的数据和代码。

一些Linux发行版使用一个表来管理在系统开机时要自动启动的进程。在Linux系统上,这个表通常位于专门文件/etc/inittab中。

另外一些系统(比如现在流行的Ubuntu Linux发行版)则采用/etc/init.d目录,将开机时启动
或停止某个应用的脚本放在这个目录下。这些脚本通过/etc/rcX.d目录下的入口(entry)启动,这里的X代表运行级(run level)。

Linux操作系统的init系统采用了运行级。运行级决定了init进程运行/etc/inittab文件或/etc/rcX.d目录中定义好的某些特定类型的进程。 Linux操作系统有5个启动运行级。

  • 运行级为1时,只启动基本的系统进程以及一个控制台终端进程。我们称之为单用户模式。单用户模式通常用来在系统有问题时进行紧急的文件系统维护。显然,在这种模式下,仅有一个人(通常是系统管理员)能登录到系统上操作数据。
  • 标准的启动运行级是3。在这个运行级上,大多数应用软件,比如网络支持程序,都会启动。另一个Linux中常见的运行级是5。在这个运行级上系统会启动图形化的X Window系统,允许用户通过图形化桌面窗口登录系统。

可以使用ps命令查看当前运行在Linux系统上的进程。

3. 硬件设备管理

内核的另一职责是管理硬件设备。任何Linux系统需要与之通信的设备,都需要在内核代码
中加入其驱动程序代码。驱动程序代码相当于应用程序和硬件设备的中间人,允许内核与设备之间交换数据。在Linux内核中有两种方法用于插入设备驱动代码:

  • 编译进内核的设备驱动代码
  • 可插入内核的设备驱动模块

以前,插入设备驱动代码的唯一途径是重新编译内核。每次给系统添加新设备,都要重新编译一遍内核代码。随着Linux内核支持的硬件设备越来越多,这个过程变得越来越低效。不过好在Linux开发人员设计出了一种更好的将驱动代码插入运行中的内核的方法。

开发人员提出了内核模块的概念。它允许将驱动代码插入到运行中的内核而无需重新编译内
核。同时,当设备不再使用时也可将内核模块从内核中移走。这种方式极大地简化和扩展了硬件设备Linux上的使用。

Linux系统将硬件设备当成特殊的文件,称为设备文件。设备文件有3种分类:

  • 字符型设备文件:指处理数据时每次只能处理一个字符的设备 ,比如大多数类型的调制解调器和
    终端 。
  • 块设备文件: 指处理数据时每次能处理大块数据的设备,比如硬盘。
  • 网络设备文件:指采用数据包发送和接收数据的设备,包括各种网卡和一个特殊的回环设备。

4. 文件系统管理

不同于其他一些操作系统, Linux内核支持通过不同类型的文件系统从硬盘中读写数据。除
了自有的诸多文件系统外, Linux还支持从其他操作系统(比如Microsoft Windows)的文件
系统中读写数据。内核必须在编译时就加入对所有可能用到的文件系统的支持。下表列出了Linux系统用来读写数据的标准文件系统。

文件系统描 述
extLinux扩展文件系统,最早的Linux文件系统
ext2第二扩展文件系统,在ext的基础上提供了更多的功能
ext3第三扩展文件系统,支持日志功能
ext4第四扩展文件系统,支持高级日志功能
hpfsOS/2高性能文件系统
jfsIBM日志文件系统
iso9660ISO 9660文件系统( CD-ROM)
nfs网络文件系统
ntfs支持Microsoft NT文件系统
ufsBSD文件系统
vfatWindows 95文件系统( FAT32)

Linux服务器所访问的所有硬盘都必须格式化成上表所列文件系统类型中的一种。

 个人搜集整理学习路线及笔记icon-default.png?t=N3I4https://mp.weixin.qq.com/s/KQx_eIwdjCj3QdErxKb7ZQ


http://www.ppmy.cn/news/66713.html

相关文章

ChatGPT入门到高级【第六章】

第一章:Chatgpt的起源和发展 1.1 人工智能和Chatbot的概念 1.2 Chatbot的历史发展 1.3 机器学习技术在Chatbot中的应用 1.4 Chatgpt的诞生和发展 第二章:Chatgpt的技术原理 2.1 自然语言处理技术 2.2 深度学习技术 2.3 Transformer模型 2.4 GPT模型 第…

设计师常用的7款界面设计工具!

不同的界面设计工具都有其独特的优点和不足之处。本文为大家介绍设计师常用的7款界面设计工具:即时设计是一款在线UI界面设计工具,拥有中文界面和丰富的社区资源,适合初学者和专业设计师使用。Sketch具有直观的矢量编辑工具和可重复使用的符号…

工作记录------常用SQL

工作记录------常用SQL 给表新增字段以及注释 ALTER TABLE 表名 ADD 字段名 字段类型 DEFAULT NULL comment ‘注释’; ALTER TABLE t_user ADD user_id VARCHAR(64) DEFAULT NULL comment ‘userId(关联字典表)’; 给表字段以及注释,修改表…

二叉树基础

https://www.bilibili.com/video/BV1Hy4y1t7ij/?spm_id_from333.337.search-card.all.click&vd_source168d5f618ec1a68e1f162d91a35a12b6 完全二叉树的底部一定是从左到右是连续的。满二叉树一定是完全二叉树。 二叉搜索树:左边左子树的所有节点都小于这个中间…

Dev C++中出现 undefined reference to XXX 错误的解决方式

出现 undefined reference to XXX 错误的现象: 主函数中调用在其他文件中定义的函数,编译报错:未定义的引用xxx。 原理:编译器在生成可执行文件的过程包括预处理、编译、汇编、链接,这4个过程,这个问题一般…

ACM - DP习题集(word里面的一小部分题集)

DP 一、经典问题1、编辑距离2、扔鸡蛋问题3、整数背包4、最大独立集5、最长公共子序列6、最长公共递增子序列7、最长公共子串(ing)8、最长上升子序列9、最长回文子序列10、最长回文子串(ing)11、最长不重复子字符串(in…

MySQL集群

目录 主从复制 主从复制流程: 为什么要有relay log中继日志? 为什么要有主从复制,好处? 实际生产环境中。如果对MySQL数据库的读写都在一台数据库服务器中操作,无论是再安全性、高可用性,还是高并发性等…

Eclipse字体大小设置的5个步骤

Eclipse是一款非常流行的Java集成开发环境(IDE),它被广泛地用于开发Java应用程序。在Eclipse中,字体大小对于用户体验至关重要。因此,了解如何在Eclipse中设置字体大小是非常有用的。 1、打开Eclipse 首先,打开Eclipse IDE。如果E…