系统及其存储相关

1.区分系统(软件)和固件

1.1概念辨别

  1. 系统(软件software):
    • 角色: 系统是计算机中的核心软件,提供基本的管理、控制和资源分配功能。它通常包括操作系统,负责管理硬件资源、提供用户界面(命令行界面或者图形化界面),以及执行基本的系统任务。
    • 关系: 应用程序和插件通常依赖于操作系统,因为它们需要操作系统提供的服务、资源管理和用户界面。
  2. 固件(Firmware):
    • 角色: 固件是嵌入在硬件设备中的软件,用于控制设备的基本功能。它通常存储在设备的非易失性存储器中,如芯片上的闪存。固件可以不依赖操作系统而工作。
    • 关系: 固件通常独立于操作系统,但某些设备可能在引导过程中依赖于固件。固件可以包含引导加载程序、嵌入式系统的驱动程序和控制代码等。
    • 路由器固件其实是包含了固件和嵌入式操作系统的集合。
  3. 插件(Plugin):
    • 角色: 插件是一种可插拔的软件组件,设计用于增强主要软件应用程序的功能。它们可以在运行时动态加载和卸载。
    • 关系: 插件依赖于主程序的框架和接口,可以是系统级的也可以是应用级的。插件通过主程序提供的接口与用户和系统进行交互。
  4. 应用(Application):
    • 角色: 应用是独立运行的软件程序,为用户提供特定的功能或服务。它们建立在操作系统之上,利用操作系统的服务和资源来完成任务。
    • 关系: 应用程序依赖于操作系统提供的运行环境,但通常是独立于其他应用程序的。
  5. 系统,应用,驱动,脚本等都是软件,系统软件可以为应用软件提供工作环境,比如微软系统为qq提供用户操作界面等,而插件是依赖在系统软件之上工作的。应用软件虽然是独立工作的不依赖系统,但是与硬件沟通还是需要操作系统才能完成,操作系统软件的作用就是沟通硬件和应用软件,并为软件提供用户界面,应用软件可以与硬件直接沟通(固件),但是缺乏有效管理和资源分配,不受控制,稳定性就弱了。
    1. 系统软件:
      • 是一类管理计算机硬件和提供基本服务的软件。
      • 包括操作系统、引导加载程序、设备驱动程序等。
      • 主要任务是协调和管理计算机的各种资源,提供运行环境,为应用程序提供服务。
      • 提供用户管理界面,允许用户与计算机进行交互,配置系统设置,启动应用程序等。
    2. 应用软件:
      • 是为执行特定任务或提供特定服务而设计的软件。
      • 包括各种应用程序,如文字处理软件、图形设计软件、游戏、浏览器等。
      • 依赖于操作系统提供的服务和资源,通过这些服务与硬件交互。
      • 提供具体的功能和体验,使用户能够完成特定的工作或娱乐活动。

1.2操作系统分类

  1. 个人计算机操作系统(Personal Computer Operating System):一种单用户多任务的操作系统。
    特点: 计算机在某一时间内为单个用户服务采用图形界面人机交互的工作方式,界面友好;使用方便,用户无需具备专门知识,也能熟练地操作系统。
  2. 嵌入式操作系统(Embedded Operating System):运行在嵌入式芯片的环境中,对整个芯片以及它所操作、控制的各种部件装置等资源进行统一协调、调度、指挥和控制的系统软件。
    嵌入式操作系统:具有
    高可靠性、实时性、占有资源少、智能化能源管理、易于连接、低成本
    等特点。嵌入式操作系统是嵌入式系统(Embeded System)的控制中心,而嵌入式系统则是嵌入式操作系统、相应设备环境与应用环境的结合,是一个很宽的概念。
  3. 服务器操作系统一般指的是安装在大型计算机上的操作系统,比如Web服务器、应用服务器和数据库服务器等,是企业IT系统的基础架构平台,
  4. 分布式操作系统将大量的计算机通过网络连接起来,可以获取极高的运算能力及广泛的数据共享。这样一种系统称之为分布式系统。为分布式系统配置的操作系统称之为分布式操作系统。

2系统启动中的引导

2.1BIOS和BOOT

BIOS(基本输入/输出系统)和 boot(引导)是计算机启动过程中两个关键的组成部分,它们共同协作以确保计算机能够成功启动并加载操作系统。以下是它们之间的关系:

  1. BIOS(基本输入/输出系统):

    • 作用: BIOS 是计算机启动过程中的第一个阶段。它负责执行系统的自检(POST,Power-On Self-Test)并提供一组基本的硬件初始化和服务,以便让计算机能够进行基本的输入和输出操作。(检测处理器,内存,适配器,鼠标键盘,存储设备,时钟,总线控制,外设等)
    • 存储位置: BIOS通常存储在计算机主板上的一块芯片中,通常是闪存(Flash)或只读存储器(ROM)。
    • BIOS本身就是一个固件(为硬件服务的专用软件)。
    • BIOS设置: 计算机的BIOS中通常有一个设置,指定引导设备的顺序。这个设置被称为“引导顺序”或“启动顺序”(提供磁盘,网络,U盘等)。用户可以在BIOS设置中配置这个顺序,决定计算机将首先尝试从哪个设备引导。
    • UEFI设置(Unified Extensible Firmware Interface): 在使用UEFI(统一扩展固件接口)的计算机中,引导顺序的配置通常在UEFI设置中完成。UEFI是一种更现代的固件替代品,取代了传统的BIOS。
  2. Boot(引导):

    • 作用: 引导阶段是计算机启动的第二个关键阶段。在BIOS自检完成后,计算机需要加载操作系统。这是引导加载程序(Boot Loader)的工作。引导加载程序是一个小型的程序,其任务是从存储介质(通常是硬盘或固态硬盘)中加载操作系统的内核到计算机的内存中
    • 存储位置: 引导加载程序通常存储在启动分区的引导扇区(通常是硬盘的第一个扇区)上。
  3. 关系:

    • BIOS启动过程: 计算机启动时,BIOS首先执行,进行自检和硬件初始化。接着,BIOS查找引导设备(通常是硬盘)上的引导扇区,并将控制权传递给该扇区的引导加载程序。
    • 引导加载程序: 引导加载程序接管控制权,负责加载操作系统的内核到内存中,并开始执行操作系统的初始化过程。
  4. U-Boot(Universal Bootloader):是一个开源的引导加载程序,用于嵌入式系统的引导。它是一个通用的引导加载程序,可以在各种嵌入式平台上使用。U-Boot 提供了许多功能,包括引导操作系统、加载内核映像、进行设备初始化等。U-Boot 提供了命令行界面,允许用户通过串口或网络进行交互。在 U-Boot 中,你可以执行一系列的命令,包括刷写固件、更新引导配置等,为了方便路由器的uboot提供了web界面,通过难过web界面刷固件。

    • 引导过程: U-Boot 通常被用于引导嵌入式系统。在启动过程中,U-Boot 会初始化硬件,加载引导加载程序和内核,然后将控制权转交给操作系统。

    • 命令行界面: U-Boot 提供了一个命令行界面,通过该界面,用户可以手动执行各种命令,如加载和启动内核、设置环境变量、烧写固件等。

    • 支持的架构: U-Boot 支持多种处理器架构,包括 ARM、MIPS、PowerPC、x86 等。

    • 配置文件: 为了适应不同的硬件和需求,U-Boot 使用一个配置文件,允许用户根据其特定的硬件配置进行自定义。

    • 开发和维护: U-Boot 是一个开源项目,具有活跃的社区支持。它经常用于嵌入式 Linux 系统中,特别是在嵌入式设备和嵌入式开发板上。

  5. **总结:**个人操作系统的bios是由主板决定,集成了boot,(有统一规定,所以可以装成不同的系统)直接进行设置就可以直接引导进入系统,而路由器的硬件不同的厂商硬件不同,自定义bios和boot(两个是分开的),导致自身的boot兼容性差,因此需要刷入uboot来支持openwrt。

    1. 个人计算机操作系统是通用的,系统就是一个软件称作系统软件,如果需要支持特殊的硬件就通过驱动进行支持。这个系统软件可以和其他应用软件分别单独工作,系统软件可以为应用软件提供用户界面。
    2. 嵌入式操作系统的核心是为了管理固件(为特殊硬件提供的配套软件支持),系统的核心是通过web界面管理固件,而openwrt是基于Linux的系统来支持管理固件,还可以支持各种个样的插件(插件运行在操作系统上),提供丰富的服务。嵌入式操作系统的重点是固件,因为固件才是调动硬件的关键。
    3. 固件和驱动程序有相似之处,但是在本质上还是有一些区别的。首先,固件是固化到 ROM 或者闪存等非易失性存储器中,并且不容易被修改或替换。而驱动程序通常存在于磁盘或其他可写的存储介质中,并且可以随时更新。其次,固件是为特定的硬件环境而设计的,因此它更加紧凑、高效,更易于与硬件相结合。而驱动程序则更加通用一些,它可以被多个不同的操作系统共享,并且可以从各种不同的源获取。(简单理解:为特殊硬件提供支持的软件固化在rom中叫固件,放在操作系统上叫驱动)

2.2软路由和应路由的关系

  1. 软路由:
    • 固件: 在软路由中,通常使用嵌入式操作系统,例如基于 Linux 的路由发行版(如OpenWrt)。固件在这里是嵌入在操作系统中的,而不同的软件包和配置选项可以通过操作系统的机制进行安装和定制。
    • 工作方式: 软路由需要完整的操作系统来运行,而路由功能是通过运行在这个操作系统上的路由软件实现的。这使得软路由非常灵活,可以通过添加软件包来增加新的功能。
  2. 硬路由:
    • 固件: 在硬路由中,通常存在一个轻量级的嵌入式操作系统,也称为固件。这个固件通常是预先安装在设备上的,用于提供基本的路由功能。
    • 工作方式: 硬路由通常不需要完整的通用操作系统,因为它们的设计目标是专注于提供基本的路由服务。这些设备可以直接通过预装的固件进行工作,而无需运行类似通用操作系统的完整软件堆栈。
  3. 总结
    1. 应路由是把系统(系统就是软件)嵌入到固件中,存储在固定的rom上,操作系统的作用就是管理固件,设置配置参数(系统成为嵌入式操作系统),而软路由是把固件安装在操作系统上(此时的固件其实就是驱动程序),在系统中能够安装各种插件实现不同功能(严格上讲这不是嵌入式操作系统,而就是一个通用的系统)。只不过习惯把这两种方式都叫嵌入式操作系统而已。
    2. 硬路由是不经过操作系统控制的,固件可以直接和操作系统系统沟通,因此叫嵌入式系统,软路由则是驱动程序(固件)是需要通过操作系统和硬件进行沟通的。

3.开机的过程

  1. BIOS/UEFI阶段:
    • 自检(POST): 电脑通电后,主板上的基本输入/输出系统(BIOS)或统一可扩展固件接口(UEFI)会进行自检(Power-On Self-Test,POST)。这一阶段检查计算机硬件的状态,包括处理器、内存、显卡、硬盘等。
    • 启动加载: BIOS/UEFI会根据预设的启动顺序(通常是从硬盘、光盘、USB等)加载引导程序。
  2. 引导加载程序阶段:
    • 引导记录加载: 引导加载程序(如GRUB或Windows Boot Manager)被加载到内存中(因此c盘删除的话,不重启是不出问题,但是重启的话就出问题,)。这个加载程序负责引导操作系统的启动。(但是删根的话会导致系统访问磁盘文件无法进行,就会直接出问题)
    • 操作系统加载: 引导加载程序读取操作系统的引导文件(比如Windows的ntldr或Linux的vmlinuz)。
  3. 操作系统加载阶段(核心):
    • 内核加载: 操作系统的引导文件加载操作系统内核到内存中。
    • 初始化: 操作系统内核开始初始化系统的各个部分,建立基本的系统环境。
  4. 用户登录阶段:
    • 用户登录: 操作系统启动后,通常会显示登录界面。用户输入用户名和密码进行登录。
    • 用户环境初始化: 操作系统根据用户的配置初始化用户的桌面环境和其他设置。
  5. 用户桌面加载阶段:
    • 图形界面加载(可选): 如果是图形用户界面(GUI),则加载桌面环境和相关服务。如果是文本界面,则直接显示命令行。
  6. 用户应用启动阶段:
    • 启动应用程序: 用户可以开始启动和使用各种应用程序。

启动过程中的引导加载程序(Bootloader)的主要责任是加载操作系统内核到内存中,并将控制权转交给内核,这个过程确实是启动过程的核心部分。

一旦操作系统内核加载到内存中并开始运行,引导加载程序的使命基本上就完成了。然后,内核负责启动和初始化系统的各种组件、服务以及用户空间程序。

启动过程并不仅限于加载内核。内核启动后,它会进一步执行系统初始化、设备初始化、加载系统服务(如网络服务、文件系统服务等)以及用户级应用程序。这些后续的步骤和服务启动的管理,通常由操作系统的各种管理器、初始化脚本或服务管理工具来完成。

所以,启动过程只是启动了内核,而后续的服务加载和应用程序启动确实是由系统内核及相关的管理模块或配置执行的,与引导加载程序(Bootloader)的职责并不直接相关。

4.存储数据相关

4.1.数据文件存储方式

  1. 数据文件都是通过二进制的方式存储在磁盘中的,1kbyte【百特】=1000Kb=8000bit
  2. ascii码通过一字节也就是8bit(连续8个二进制)表示一个符号,用0-127表示常见的换行,回车,英文字符大小写,数字等。通过对字符进行编号,就能通过二进制表示任何数字。
  3. unicode对ascii码进行升级,可以表示已知的任何一个字符,对与任何一个字符都使用32bit(四个字节)进行表示,因此就浪费资源。
  4. UTF-8字符集合采用可变字节表示字符(1-4字节),兼容前边的编号设置,对于编号只需要1字节的就通过一字节表示,多字节就多字节表示,弥补了unicode的不足。
  5. 在计算机图形学中,常用的颜色编码方式是RGB(红绿蓝)颜色模型。每种颜色都由三个分量组成,分别表示红色、绿色和蓝色的强度。每个分量通常用8位无符号整数来表示,范围为0到255。
  6. 颜色需要3个字节(即24位)来存储。这被称为24位真彩色或Truecolor。在这种编码方式下,可以表示16,777,216种不同的颜色。红色可以被编码为(255, 0, 0),绿色可以被编码为(0, 255, 0),蓝色可以被编码为(0, 0, 255)。白色可以被编码为(255, 255, 255),黑色可以被编码为(0, 0, 0)。
  7. 声音也是通过采样,扫描编码,表示声音的音色响度频率,从而存储在磁盘中

4.2磁盘

磁盘是一种存储设备,它可以永久地保存数据,即使在电源关闭后也能保持数据不丢失。磁盘的开头位置通常用于存放引导记录(Boot Record)、分区表(Partition Table)以及文件系统的元数据,比如超级块、文件系统结构等。具体内容包括:

  1. 引导记录(Boot Record):位于磁盘的最开始位置,包含引导加载程序,这是启动计算机时系统加载的第一段代码。它指示计算机在哪里找到操作系统,并启动该操作系统的加载过程。

    • 作用:引导记录位于磁盘的最开始位置,包含了启动计算机所需的引导加载程(Bootloader)。这个引导加载程序指示计算机在哪里找到操作系统,并启动加载操作系统内核到内存的过程**(核心)**。
    • 内容:引导记录一般包括引导加载程序的代码和指令,该程序负责加载操作系统的内核文件,使计算机能够启动。
  2. 分区表(Partition Table):紧随引导记录之后的内容,它记录了磁盘上分区的信息,指示每个分区的起始位置、大小和类型。分区表告诉操作系统如何识别和访问磁盘上的不同分区。

    • 作用:分区表位于引导记录之后,记录了磁盘的分区信息,指导操作系统识别和访问磁盘上的不同分区。(引导记录中的引导加载程序确实记录了操作系统内核在磁盘中的位置,类似于文件系统中inode表的作用)
    • 内容:分区表包含了磁盘分区的条目,每个条目描述了一个分区的起始位置、大小和类型等信息。常见的分区表格式包括传统的MBR(主引导记录)和新的GPT(GUID 分区表)。
  3. 超级块(Superblock):对于文件系统而言,紧随分区表之后的是超级块。超级块包含文件系统的元数据,例如文件系统的类型、大小、空闲块数量、inode表的位置等重要信息。

    • 文件系统类型:指示文件系统的类型(如EXT4)。

    • 文件系统大小:指示整个文件系统的总大小。

    • 空闲块和空闲inode数量:表示文件系统中可用的空间数量。

    • 块大小:确定文件系统中块的大小(通常以字节为单位)。

    • inode数量和inode表位置:指示文件系统中的inode总数(小文件占用过多的inode号,则会导致磁盘空间足够,但是不能存储数据的情况),以及inode表的磁盘存放位置。

    • 挂载信息:记录文件系统的挂载次数、上次挂载时间等信息,用于维护文件系统的一致性。

    • 文件系统的布局和结构信息:包括数据块的分布方式、索引结构等。

      元数据是指描述文件系统中文件和目录的数据,包括文件的属性、权限、位置等信息。常见的元数据包括:
      Inode(索引节点):
      每个文件或目录在文件系统中都有一个对应的inode。Inode中存储了文件或目录的元数据,如文件类型、权限、所有者、大小、时间戳以及数据块的位置等信息。
      
      文件名:
      文件系统中的目录项包含文件名和对应的inode号码,它们一起构成了文件的关联。文件名作为用户识别文件的标识符。
      
      权限和属性:
      包括文件或目录的读取、写入和执行权限,以及所有者、所属组、大小、创建时间、修改时间和访问时间等属性。
      
      时间戳:
      包括文件的创建时间(ctime)、修改时间(mtime)和访问时间(atime),这些时间戳记录了文件的不同操作和状态变化时间。
      
      数据块指针: 
      对于较小的文件,inode直接存储文件数据的指针;对于大文件,inode会存储指向数据块的指针,这些数据块实际上存储着文件的内容。
      
      链接计数:
      记录了指向该inode的硬链接数量。当链接计数归零时,系统才会释放该inode所占用的存储空间。
      
      扩展属性:
      一些文件系统支持额外的元数据,如扩展文件属性(Extended Attributes)或访问控制列表(Access Control Lists),用于存储更多的文件信息或设置更复杂的权限控制。
      
  4. Inode表:在文件系统中,inode表紧随超级块,存储了所有文件和目录的元数据。每个文件或目录都有对应的inode条目,包含了文件的权限、所有者、大小和数据块的位置等信息。

    • Inode(索引节点):每个文件或目录在文件系统中都有一个对应的inode。Inode存储了文件或目录的元数据,如权限、所有者、大小、时间戳以及数据块的位置等信息。例如,文件的名称并不直接存储在inode中,而是存储在目录项中,指向对应的inode。
    • 目录项:目录是一种特殊的文件,其中的条目将文件名映射到对应的inode。目录项包含了文件名和对应的inode号码。
    • 权限和属性:文件或目录的权限和属性,例如所有者、读写执行权限等。
    • 时间戳:记录文件或目录的创建时间、修改时间和访问时间。
    • 数据块指针:对于较小的文件,inode直接存储文件数据的指针。对于大文件,inode会存储指向数据块的指针,这些数据块实际上存储着文件的内容。
超级块包含了整个文件系统的信息,其中包括了inode表的位置和inode的大小等重要信息。
Inode表是由超级块描述的一部分,它存储了文件和目录的元数据,比如文件的权限、所有者、大小和数据块的位置等信息。
超级块提供了对inode表的定位和描述,而inode表则提供了每个文件或目录的详细元数据信息。
虽然两者都是元数据,但超级块更多地关注整个文件系统的全局信息,而inode表则关注于单个文件或目录的详细信息。

4.3文件系统

文件系统是操作系统的一部分,用来管理和组织计算机存储设备上文件和数据的方法。它定义了文件和目录的组织方式、访问权限、存储结构以及如何存储和检索数据的规则。文件系统提供了创建、删除、移动、重命名文件和目录的功能,以及分配存储空间和跟踪磁盘使用情况的能力。

文件系统执行以下功能:

  1. 文件管理:文件系统负责管理文件和目录的创建、删除、复制、移动以及对其进行访问和修改的操作。
  2. 存储管理:文件系统管理物理存储设备,将文件组织成逻辑上的数据单元,负责数据的存储、读取和写入。
  3. 命名和定位:文件系统提供了命名机制,使用户能够通过文件名来标识和访问文件。它还负责将文件名映射到文件的物理存储位置。
  4. 权限和保护:文件系统管理文件和目录的访问权限,控制哪些用户或进程有权对文件进行读取、写入和执行操作,并保护文件不受未经授权的访问或损坏。
  5. 元数据管理:文件系统维护文件和目录的元数据,包括文件的属性、权限、时间戳以及文件在存储设备上的物理位置等信息。
  6. 错误恢复和一致性:文件系统需要处理和恢复因存储设备故障或意外断电等原因造成的数据损坏或丢失,并确保文件系统的一致性和稳定性。

常见的文件系统包括NTFS(Windows系统的文件系统)、FAT32、EXT4(Linux系统的文件系统)、HFS+(苹果系统的文件系统)等,它们各自有不同的特点、优势和适用场景。不同文件系统的选择取决于所需的功能、性能、兼容性以及特定操作系统的支持。

4.4磁盘和文件系统的关系

磁盘是物理存储设备,而文件系统则是操作系统对磁盘上的数据进行管理和操作的一种逻辑结构,通过难过文件系统能够实现管理磁盘,储存数据。

  1. 访问文件的过程:

    • inode表通过一个唯一的编号(即inode号)来标识文件,并将元数据存储在该inode中。
    • 当访问文件时,操作系统首先会根据文件名找到对应的inode号,然后读取该inode中的元数据信息,如文件大小、权限等。此外,inode还包含了指向文件数据块的指针,操作系统可以通过这些指针找到文件数据的实际存储位置。
    • 因此,当我们访问一个文件时,实际上是在访问该文件的inode和相关的数据块。这也是为什么Linux系统中经常会出现“磁盘空间没占满,但inode占满了”的情况,因为大量的小文件会导致inode数量不足,而无法创建更多的文件。
  2. 硬链接和软连接:

    1. 硬链接(Hard Link)
      • 硬链接是文件系统中的一个文件和另一个文件(可以是文件或目录)之间的直接连接,它们共享同一个inode和存储块。对于用户来说,硬链接就像是同一个文件的多个拷贝(对个硬链接指向同一份inode)。
      • 执行删除的本质是删除硬链接,如果有多个硬链接是不会删除inode表的,只有删除最后一个硬链接的时候才会删除inode表,从而链接不上磁盘,这部分磁盘会被标记为可以覆写。
      • 硬链接不能跨越文件系统,即只能在同一个文件系统中创建硬链接。
    2. 软链接(Symbolic Link 或 Soft Link)
      • 软链接是一个指向另一个文件或目录的特殊类型文件,类似于快捷方式。它实际上是一个指向目标文件的路径的指针。
      • 删除原始文件并不会影响软链接的有效性,但如果目标文件被删除,软链接则会失效。
      • 软链接可以跨越文件系统,允许在不同文件系统间创建链接。
    3. 主要区别:硬链接是直接连接到inode,而软链接是一个指向文件路径的符号链接。硬链接在文件系统中具有更强的连接,因为它们共享相同的inode和数据块,而软链接则是一个独立的文件,存储着指向目标文件的路径。(硬链接是指向inode的指针,而软连接是指向硬链接的指针)

    需要注意的是,硬链接不能用于目录,因为硬链接会造成循环引用。软链接则可以指向文件或目录。

你可能感兴趣的:(系统,操作系统)