【Linux篇】Linux操作系统各部分详解

Linux操作系统的体系结构

    • 前言 什么是操作系统
    • 一 . 深入研究Linux内核
      • 1. 系统内存管理
        • 1> 部分计算机硬件设备的了解
        • 2> Linux内核是如何进行内存管理的
          • 1) 虚拟内存计技术
          • 2)什么是分页, 换出和换入
      • 2 . 软件程序管理
        • 1) 进程简略介绍
        • 2) 初始进程
        • 3) Linux操作系统的功能之 运行级别
      • 3 . 硬件管理
      • 4 . 文件系统管理
    • 二 . GNU实用程序
      • 1. 核心GNU实用程序
      • 2. GNU/Linux shell
        • 1) 什么是shell
        • 2) shell的多个版本
        • 3) GUI与CLI
          • 1> 什么是CLI
          • 2> CLI中的命令提示符
          • 3> 控制命令行提示符的环境变量
          • 4> bash shell部分 提示符格式字符
          • 5> 什么是GUI
    • 三 . 一图速览shell ,内核, 硬件, 用户四者关系

前言 什么是操作系统

操作系统 , 即Operating System – OS 。
OS 是内核(kernel), shell以及一系列应用软件, 驱动的集合
OS的作用:

  • 管理好硬件, 软件,包含进程管理, 文件管理, 内存管理和设备管理。 具体操作由内核执行
  • 为用户提供一个稳定的运行环境

一 . 深入研究Linux内核

    Linux系统的核心称为内核(kernel)。内核控制计算机系统上的
所有硬件和软件,并在必要的时候分配硬件,在需要时执行软件。
    内核主要有以下四种功能: 
        -   系统内存管理
        -   软件程序管理
        -   硬件管理
        -   文件系统管理

1. 系统内存管理

1> 部分计算机硬件设备的了解

在了解系统内存管理之前, 我们先来了简单介绍一下操作系统所管理的硬件设备。

计算机存储器分为两大类: 内存存储器和外存存储器(简称内存和外存)

  • 内存 : 它用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平,内存中储存的数据断电后就会消失。
  • 外存 : 除计算机内存及CPU缓存以外的储存器,此类储存器一般断电后仍然能保存数据 。 外存主要是磁盘。
  • 物理内存 : 是指由于安装内存条而获得的临时储存空间。主要作用是在计算机运行时为操作系统和各种程序提供临时储存。
  • 磁盘: 是用电磁原理记录的数据,由涂上磁性物质的盘片和盘片读写装置(驱动器)组成,可分为软盘、硬盘等。
  • 硬盘 : 是一种最为常见的外存储器,又叫固定盘。常用的硬盘有 SSD(固态硬盘),HDD(机械硬盘)等

内存,外存,硬盘,软盘,磁盘区别 // 部分引用该篇博客

2> Linux内核是如何进行内存管理的
1) 虚拟内存计技术

什么是虚拟内存技术, 先开下来自维基百科的回答

虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。

怎么理解呢? 是这样的。

     Linux内核在进行内存管理时, 需要用到两个模块,  一个是硬盘,
一个是内存储器。 
     对于硬盘, 进行内存管理所使用的那部分硬盘空间被称为交换空间。
     对于内存储器,通常意义上使用的是物理内存, 也就是由于安装内存
条而获得的临时储存空间, 内存条的规格决定了这部分临时存储空间的大小。
     在进行内存管理时, 物理内存和交换空间中的数据不断地进行着交换, 
而这样的一个数据循环交换的过程就是虚拟内存技术。 
     为什么说它是虚拟内存呢?  因为这项技术需要使用物理内存以及交换
空间, 而交换空间是硬盘中的一部分空间,属于外存。这部分外存并非内存
它的作用只是 临时性的保存内存信息。

总而言之 ,虚拟内存就是用硬盘,U盘等非内存介质来存储内存信息。

2)什么是分页, 换出和换入
  1. 分页
    • 将内存划分为固定大小的数据块, 此操作被称为分页
    • Linux内核定位和跟踪每一个内存分页
  2. 换出
    • 内核跟踪被使用的内存分页, 并且自动将一段时间内没有被访问的内存分页从物理内存复制到交换空间 , 此操作被称为 换出
    • 即使内存仍然够用也会这样做
  3. 换入
    • 当程序需要访问已经换出的内存分页时,Linux内核先将另一个内存分页换出, 然后将需要的位于交换空间的内存分页复制到物理内存中, 此操作被称为换入
    • 先换出另一个内存分页是为了在内存中为需要换入的内存分页腾出空间
  4. 在换出和换入的过程中伴随着空间的释放。 具体不作过多解释。
  5. 内核会维护一个内存分页表, 此表记录了每个内存分页的位置
  6. 在Linux运行期间, 为运行应用程序换出内存分页的过程时刻进行着。

2 . 软件程序管理

1) 进程简略介绍
  • Linux操作系统将在正在运行的程序称为进程。
  • 进程可以在前台运行(在显示器上运行的时候), 也可以在后台运行。
  • 内核控制Linux系统如何管理在系统中运行的所有进程
2) 初始进程

在系统启动的时候, 内核会创建第一个进程, 该进程称为初始进程,

  • 初始进程用于在系统上启动其他所有进程。
  • 内核启动时, 会将初始进程加载到虚拟内存中。
  • 内核每次启动一个其他进程, 都会在虚拟内存中为其分配一个唯一的空间, 用于存储该进程所使用的数据和代码。

有些Linux实现包含一个进程表, 进程表在引导时自动启动。

3) Linux操作系统的功能之 运行级别

Linux操作系统使用具有 运行级别 功能的初始系统。 运行级别可以指示初始进程 只运行哪些特定的进程

  • (其他进程需要初始进程来启动, 因此通过初始进程可以控制指定程序运行, 非指定程序无法运行)

几个初始运行级别

  1. 运行级别1 : (单用户模式)
    - 只允许初始进程启动基本系统进程, 以及一个控制台终端进程。
    - 单用户模式通常用于紧急情况下(如某些内容损坏)的系统维护。
    - 在这种模式下, 只允许一个人(通常是管理员)登录系统操作数据
  2. 运行级别3:
    - 可以启动大部分应用软件,如网络支持软件。
    - 此时为基于控制台的系统
  3. 运行级别5:
    - 可以启动图形化 X Window软件, 并允许使用图形化桌面窗口登录
    - 此时为高级的图形化X Window 系统

3 . 硬件管理

       内核的另一个职责是硬件管理。
       在Linux系统中 所有需要与Linux通信的设备都必须在内核代码中
插入 “设备驱动程序”
      设备驱动程序,是一种可以使计算机和设备通信的特殊程序,可以说
相当于硬件的接口,Linux内核只能通过这个接口,才能控制硬件设备的工作。
      设备驱动程序, 它使内核能够向设备传输数据。 它的作用就像是 
应用程序与硬件 之间的中间人。

在Linux内核中插入设备驱动程序代码有两种方法:

  • 在内核中编译驱动程序
    - 之前, 插入设备驱动程序代码的唯一方式是重新编译内核。 每次向系统添加一个新设备时, 都必须重新编译内核代码。
    - 但是随着Linux内核支持硬件的增多, 这种方法越来越低效。
  • 向内核添加驱动程序模块
    - 开发人员开发了内核模块, 可以在运行内核中插入设备驱动程序的代码而无需重新编译内核。 此外, 当设备使用完毕时, 还可以从内核中移除相应的内核模块。

Linux系统将硬件设备标识为特殊文件, 称为设备文件。 分为三种:
- 字符 文件 : 一次仅处理一个字符的设备 。大部分调制解调器和终端类型都识别为字符文件
- 块 文件 : 用于哪些一次可处理大量数据块的设备。 如磁盘驱动器
- 网络 文件 : 用于哪些使用数据包发送和接受数据的设备。 这包括网卡和特殊的回路设备。

4 . 文件系统管理

Linux内核可以使用不同类型的文件系统与硬盘传输数据。
Linux系统可以用来读取和写入数据的文件系统有十多种, 在此暂不说明。

Linux内核使用虚拟文件系统与每个文件系统进行连接。 这为内核与其他文件系统类型的通信提供了一个标准接口

二 . GNU实用程序

除了通过内核控制硬件设备外, 计算机操作系统还需要实用程序执行标准功能, 如控制文件, 启动程序等。
Linux内核需要实用性程序指示它去完成指定的操作, 而Linux与GNU程序的结合诞生了一个完整的,功能强大的操作系统

  • GNU实用程序是GNUI组织开发的一个完整的Unix实用程序集。
  • GNU实用程序移植了许多常用的Unix系统命令行使用程序

1. 核心GNU实用程序

GNU项目提供给Linux系统的核心实用程序包称为 coreutils 软件包

GNU coreutils软件包主要由 3 部分组成

  • 处理文本的实用程序
  • 操作文本的实用程序
  • 管理进程的实用程序

2. GNU/Linux shell

shell 为用户提供了:

  • 启动程序的方式
  • 管理文件系统中的文件的方式
  • 管理运行在Linux系统上进程的方式
1) 什么是shell
        GNU/Linux shell 是一个特殊的交互式实用程序。在计算机科学
中, 俗称壳(用来区别于内核), 它是为用户与内核进行交互的一个工具。
        shell 交互式的解释并执行用户输入的命令,然后向内核传递某种请求
,Linux内核根据从shell传递来的请求执行相应的操作
        shell通常会在用户打开Linux系统时启动。(开机启动)
        补充 : 向内核传递某种需求,其实质是调用内核暴露出来的某个接
口,然后内核根据被调用的接口,去管理系统资源 
2) shell的多个版本
        可以在Linux系统上使用的Linux shell有很多。 不同的shell
有不同的特征。
       在所有Linux发行版中默认使用的shell是 bash shell。
       bash shell 是GNU项目开发的, 用于取代标准的 Unix shell。

其他常用的shell:

shell 特征
ash 一个简单的轻量级shell, 运行于低内存环境, 但与bash shell完全兼容
korn 与bash shell 兼容的编程shell, 但支持高级编程功能, 如关联数组和浮点算法
tcsh 在shell脚本中吸收了C编程语言元素的 shell
zsh 吸收了bash,tcsh, korn等shell功能的高级shell,还提供高级编程功能,共享历史文件和主题提示符
3) GUI与CLI
1> 什么是CLI
  • CLI是shell提供的文本 命令行界面。 它是用户与Linux操作系统进行交互的一个文本界面。
    • (实际是与Linux内核进行交互, 而Linux内核获取shell传递的需求从而对硬件设备执行相应的操作)
    • CLI只允许文本输入, 并且只能显示文本和基本的图形输出
    • 从Linux控制台登录后, 便可以访问到shell CLI的命令提示符。

下图整个界面就是 CLI – 命令行界面
【Linux篇】Linux操作系统各部分详解_第1张图片

2> CLI中的命令提示符

下路就是CLI中的 命令提示符
在这里插入图片描述
shell CLI 命令提示符是通往shell的大门, 是输入shell命令的地方。

[root@VM - 4 - 8 - centos ~] #

  • root 表示启动shell 的用户名
  • @ – 分隔符
  • -4 -8 centos 表示当前虚拟控制台编号
  • ~ 代表当前目录, ~ 代表当前目录为家目录
  •      # 是bash shell 的默认提示符, root用户为 # , 普通用户
    普通用户为 $。
    
3> 控制命令行提示符的环境变量
  1. PS1 : 控制默认命令行提示符的格式
    - echo $PS1 // 显示命令行提示符的当前格式设置
    - PS1 = “[\t] [\u] $” // 设置命令行提示符的格式
    - 显示效果为 [20:25:46] [root] $
  2. PS2 : 控制第二层命令行提示符的格式
    • echo $PS2 // 显示第二层命令行提示符的当前格式设置
    • PS2 = “[\t] [\u] $” // 设置第二层命令行提示符的格式
4> bash shell部分 提示符格式字符
格式字符 描述
\a 铃声字符
\d 格式为 “年 月 日”的字符
\e ASCII转义字符
\h 本地主机名称
\t 格式为 “小时 : 分钟 : 秒” 的24小时制的当前时间
\u 当前用户的用户名
5> 什么是GUI

GUI 是一种图形化界面, shell 中的 图形界面, 类似于Windows的图形化界面

三 . 一图速览shell ,内核, 硬件, 用户四者关系

二次补充 : 系统调用接口 是 Linux内核的接口, 可以通过shell来调用
内核四种功能这一模块才是真正的Linux内核 (也就是操作系统这个软件)
【Linux篇】Linux操作系统各部分详解_第2张图片

补充说明:

  • 出于安全性考虑,为了保护内核。 内核并不能由用户直接操作, 而是 内核向外提供了一系列对计算机资源进行管理的接口, 即系统调用接口。
  • 这一系列接口只能通过 包裹在外部的壳 shell 来调用
  • 内核以外的程序统称为外管理程序
  • shell是一个程序, 一个既能与用户进行交互,又可以与内核进行交互的程序
  • shell可对用户输入的命令进行解释和执行, 基于这一点, 常被称为命令解释器。
  • 操作系统是一个进行软硬件资源管理的一款软件
    • 通过驱动程序管理多种硬件 ,也就是驱动管理
    • 通过控制进程管理软件, 也就是进程管理

你可能感兴趣的:(Linux笔记,网络,服务器,linux)