冷月nuanyang 发表于 2022-8-8 23:39:43

第一章 初始Linux shell

本帖最后由 冷月nuanyang 于 2022-8-9 08:05 编辑

1.1 什么是Linux
        如果你以前从未接触过Linux,可能就不清楚为什么会有这么多不同的Linux发行版。在查看Linux软件包时,你肯定被发行版、Live CD和GNU之类的术语搞晕过。初次进入Linux世界会让人觉得不那么得心应手。
        首先,Linux可划分为以下四个部分
                1)Linux内核
                2)GNU工具
                3)图形化桌面环境
                4)应用软件
        每一部分在Linux系统中各司其职。但就单个部分而言,其作用并不大。图1-1是一个基本结构框图。

1.1.1 深入探究Linux内核
        Linux系统的核心是内核。内核控制着计算机系统上所有硬件和软件,在必要时分配硬件,并根据需要执行软件。
        内核主要负责以下四种功能:
                1)系统内存管理
                2)软件程序管理
                3)硬件设备管理
                4)文件系统管理
        ①.系统内存管理
        操作系统内核的主要功能之一就是内存管理。内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存(即实际并不存在的内存)。
        内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为交换空间(swap space)。内核不断地在交换空间和实际的物理内存之间反复交换虚拟内存中的内容。这使得系统以为它拥有比物理内存更多的可用内存图1-2

        内存存储单元按组划分成很多块,这些块称作页面(page)。内核将每个内存页面放在物理内存或交换空间。然后,内核会维护一个内存页面表,指明那些页面位于位于物理内存内,那些页面被换到了磁盘上
        内核会记录那些内存页面正在使用中,并自动把一段时间未访问的内存页面复制到交换空间区域(称为换出,swapping out)即使还有可用内存。当程序要访问一个已被换出的内存页面时。显然,这个过程要花费时间,拖慢运行中的进程。只要Linux系统在运行,为运行中的程序换出内存页面的过程也不会停歇。
        ②.软件程序管理
        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 Windows系统,允许用户通过图形化桌面窗口登录系统。
        Linux系统可以通过调整启动运行级来控制整个系统的功能。通过将运行级从3调整成5,系统就可以从基于控制台的系统变成更先进的图形化X Windows系统
        ③.硬件设备管理
        内核的另一职责是管理硬件设备。任何Linux系统需要与之通信的设备,都需要在内核代码中加入其驱动程序代码。驱动程序代码相当于应用程序和硬件设备的中间人,允许内核与设备之间交换数据。在Linux内核中有两种方法用于插入设备驱动代码
        1)编译进内核的设备驱动代码
        2)可出入内核的设备驱动代码
        Linux系统将硬件设备当成特殊的文件,称为设备文件。
        1)字符型设备文件
        2)块设备文件
        3)网络设备文件
        字符型设备文件是指处理数据时每次只能处理一个字符的设备。大多数类型的调制解调器和终端都是作为字符型设备文件创建的。块设备文件是指处理数据时每次能处理大块数据的设备,如硬盘
        网络设备文件是指采用数据包发送和接受数据的设备。包括各种网卡和一个特殊的回环设备。这个回环设备允许Linux系统使用常见的网络编程协议同自身通信。
        Linux为系统上每个设备都创建一种称为节点的特殊文件。与设备的所有通信都通过设备节点完成。每个节点都有唯一的数值对供Linux内核标识它。数值对包括一个主设备号和一个次设备号。类似的设备被划分到同样的主设备号下。次设备号用于标识组下的某个特定设备。
        ④.文件系统管理
        Linux内核支持通过不同类型的文件系统从硬盘中读写数据。除了自有的诸多文件系统外,Linux还支持从其他操作系统(如Windows)采用的文件系统中读写数据。内核必须在编译时就加入对所有可能用到的文件系统的支持。表1-1Linux系统用来读写数据的标准文件系统

        Linux服务器所访问的所有硬盘都必须格式化成上表所列文件系统类型中的一种。
        Linux内核采用虚拟文件系统(Virtual File System,VFS)作为每个文件系统交互的接口
这为Linux内核同任何类型文件系统通信提供了一个标准接口。当每个文件系统都被挂载和使用时,VFS将信息都缓存在内存中。

—————————————————————————————————————————————————————————————————
初始Linux shell-GNU
https://www.chncert.cn/forum.php?mod=viewthread&tid=713&fromuid=1016784

页: [1]
查看完整版本: 第一章 初始Linux shell