【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-Chapter1-初始 Linux Shell

一、初识 Linux shell
  1. Linux 系统可划分为以下 4 部分。

    • Linux 内核
    • GNU 工具
    • 图形化桌面环境
    • 应用软件
  2. 内核主要负责以下 4 种功能。

    1. 系统内存管理
      • 内核通过硬盘上称为交换空间(swap space)的存储区域来实现虚拟内存。内核在交换空间和实际的物理内存之间反复交换虚拟内存中的内容。这使得系统以为自己拥有比物理内存更多的可用内存。
      • 内存被划分为若干块,这些块称作页面(page)。内核会将每个内存页面置于物理内存或交换空间中。然后,内核会维护一张内存页面表,指明哪些页面位于物理内存,哪些页面被交换到了磁盘。
      • 内核会记录哪些内存页面正在使用中,自动把一段时间未访问的内存页面复制到交换空间区域(称之为换出,swapping out)——即使还有内存可用。当程序要访问一个已被换出的内存页面时,内核必须将物理内存中的另一个页面换出来为其腾出空间,然后从交换空间换入(swapping in)所请求的页面。
    2. 软件程序管理
      • 内核创建了第一个进程(称为 init 进程)来启动系统中所有其他进程。当内核启动时,它会将 init 进程载入虚拟内存。内核在启动其他进程时,会在虚拟内存中给新进程分配一块专有区域来存储该进程用到的数据和代码。
      • 在 Linux 中,有多种 init 进程实现,目前最流行的是以下两种。
        • SysVinit:Linux 最初使用的是 SysVinit(SysV)初始化方法,该方法基于 Unix System V 初始化方法。尽管如今很多 Linux 发行版已经不再使用 SysVinit 了,但在一些比较旧的 Linux 发行版中还能找到其身影。
        • systemd:systemd 初始化方法诞生于 2010 年, 现在已经成为 Linux 发行版中最流行的初 始化和进程管理系统。
      • systemd 初始化方法得以流行起来的原因在于能够根据不同的事件启动进程。
        • 系统启动时
        • 连接到特定的硬件设备时
        • 服务启动时
        • 建立好网络连接时
        • 计时器到期时
      • systemd 方法通过将事件与单元文件(unit file)链接来决定运行哪些进程。每个单元文件定义了特定事件发生时要启动的程序。systemctl 程序允许启动、停止和列出系统中当前运行的单元文件。
      • systemd 方法将单元文件划归为目标(target)。目标定义了 Linux 系统的特定运行状态,这和 SysVinit 运行级的概念类似。在系统启动时,default.target 单元定义了要启动的所有单元文件。可以使用 systemctl 命令查看当前默认目标:
        $ systemctl get-default
        graphical.target
        
      • graphical.target 单元文件定义了多用户图形环境运行时要启动的进程。
    3. 硬件设备管理
      • 任何 Linux 系统需要与之通信的设备都必须在内核代码中加入其驱动程序。向 Linux 内核中插入设备驱动的方法有两种:
        • 将驱动程序编译入内核(低效)
        • 将设备驱动模块加入内核(无需重新编译内核、可插入、可移走)
      • Linux 系统将硬件设备视为一种特殊文件,称为设备文件。设备文件分为 3 种:
        • 字符设备文件
        • 块设备文件
        • 网络设备文件
      • 字符设备文件对应于每次只能处理一个字符的设备。大多数类型的调制解调器和终端是作为字符设备文件创建的。块设备文件对应于每次以块形式处理数据的设备,比如硬盘驱动器。网络设备文件对应于采用数据包发送和接收数据的设备,这包括网卡和一个特殊的环回设备,后者允许 Linux 系统使用常见的网络编程协议同自身通信。
      • Linux 会为系统的每个设备都创建一种称为“节点”的特殊文件。与设备的所有通信都是通过设备节点完成的。每个节点都有一个唯一的数值对,以供 Linux 内核标识。数值对包括一个主 设备号和一个次设备号。类似的设备会被划分到相同的主设备号下。次设备号用于标识主设备组 下的某个特定设备。
    4. 文件系统管理
      • Linux 还能够读写其他操作系统(比如 Microsoft Windows)的文件系统。内核必须在编译时就加入对所有要用到的文件系统的支持。
      • Linux 内核采用虚拟文件系统(virtual file system,VFS)作为和各种文件系统交互的接口。这为 Linux 内核与其他类型文件系统之间的通信提供了一个标准接口。当文件系统被挂载和使用时,VFS 会在内存中缓存相关信息。
  3. GNU 实用工具

    1. 除了由内核来控制硬件设备,操作系统还需要实用工具来实现各种标准功能,比如控制文件和程序。
    2. GNU coreutils 软件包由 3 部分构成。
      • 文件实用工具
      • 文本实用工具
      • 进程实用工具
    3. Linux shell 属于 GNU 核心工具集的一部分。GNU/Linux shell 是一种特殊的交互式工具,为用户提供了启动程序、管理文件系统中的文件以及运行在 Linux 系统中的进程的途径。shell 的核心是命令行提示符,负责 shell 的交互部分,允许用户输入文本命令,然后解释命令并在内核中执行。
    4. 所有 Linux 发行版默认的 shell 都是bash shell。
    5. 其他几种流行的 shell:
      shell描 述
      ash一种简单的轻量级 shell,运行在内存受限环境中, 但与 bash shell 完全兼容
      korn一种与 Bourne shell 兼容的编程 shell,但支持如关联数组和浮点算术等高级编程特性
      tcsh一种将 C语言中的一些元素引入 shell脚本中的 shell
      zsh一种结合了 bash、tcsh 和 korn 的特性,同时提供高级编程特性、共享历史文件和主题化提示符的高级shell
  4. 多数 Linux 发行版也有 LiveCD 版本可用。LiveCD 版本是一个自成一体(self-contained)的 ISO 镜像文件,可以刻录成 DVD(或写入 U 盘),直接引导 Linux 系统,无须安装在硬盘上。LiveDVD 的好处是可以在安装系统之前先测试系统硬件, 解决存在的问题。

  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:精致技术 设计师:CSDN官方博客 返回首页
评论

打赏作者

江湖人称菠萝包

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值