目录

什么是操作系统?

一、管理硬件资源

二、提供用户接口

三、管理软件资源

什么是操作系统内核?

一、主要功能

 1. 进程管理:

2. 内存管理:

3. 设备管理:

4. 文件系统管理:

二、特点

什么是驱动?

Linux启动流程

norflash与nandflash的区别

1. 接口与寻址方式:

2. 存储容量与成本:

3. 读写性能:

4. 数据存储的可靠性:

5. 应用场景:

bootloader程序工作过程:

一、硬件初始化

二、引导加载模式选择

三、内核加载

四、内核启动

操作步骤

uboot命令:

环境参数:

中途错误处理:


什么是操作系统?

操作系统是管理计算机硬件与软件资源的计算机程序。它主要有以下几个重要作用:

一、管理硬件资源

 1. 处理器管理:合理分配处理器的时间,使多个程序能够并发执行,提高处理器的利用率。例如,当你同时打开多个应用程序时,操作系统会调度处理器在不同程序之间快速切换,让每个程序都有机会运行。

2. 内存管理:负责内存的分配和回收,确保各个程序能够安全地使用内存空间。它会将内存划分成不同的区域,分配给不同的程序,同时防止程序之间的内存冲突。

3. 设备管理:对计算机的各种外部设备(如打印机、键盘、鼠标、硬盘等)进行管理和控制。操作系统会为设备驱动程序提供统一的接口,使得不同的设备能够在系统中协同工作。

二、提供用户接口

 1. 命令行界面:用户可以通过输入特定的命令来与操作系统进行交互,执行各种操作。这种方式对于专业用户来说比较高效,可以快速执行复杂的任务。

2. 图形用户界面:以直观的图形图标和窗口形式呈现,用户可以通过鼠标点击、拖拽等操作来完成各种任务。例如在 Windows 系统中,你可以通过点击图标打开应用程序、调整窗口大小、进行文件管理等操作。

三、管理软件资源

 1. 文件管理:负责文件的存储、检索、更新和保护。操作系统会将文件存储在磁盘等存储设备上,并提供文件系统来组织和管理文件。你可以通过操作系统提供的文件管理器来创建、删除、复制、移动文件等操作。

2. 程序管理:包括程序的安装、卸载、运行和监控。操作系统会确保程序在正确的环境下运行,并处理程序运行过程中出现的错误。例如,当一个程序出现崩溃时,操作系统会尝试恢复并通知用户。 常见的操作系统有 Windows、macOS、Linux 等。不同的操作系统在功能、性能、用户界面等方面可能会有所不同,但它们的核心目标都是为了有效地管理计算机资源,为用户和应用程序提供一个稳定、高效的运行环境。

什么是操作系统内核?

操作系统内核是操作系统的核心部分,它负责管理系统的最基本功能和资源,直接与硬件交互,并为上层软件提供基础服务。

一、主要功能

 1. 进程管理:

- 负责创建、调度和终止进程。当你打开一个应用程序时,内核会为这个程序创建一个进程,并分配相应的资源。例如,在多任务操作系统中,内核会根据一定的算法在不同的进程之间切换处理器的使用权,以保证每个进程都能得到执行的机会。

- 实现进程间的通信和同步机制,确保不同进程之间能够协调工作。比如,多个进程可能需要同时访问一个共享资源,内核需要提供机制来防止资源冲突和数据不一致。

2. 内存管理:

- 负责分配和回收内存空间。内核会根据程序的需求,为其分配适当大小的内存区域,并在程序不再需要时回收这些内存。例如,当你打开一个大型软件时,内核会为其分配足够的内存来存储程序的数据和代码。

- 提供内存保护机制,防止一个程序访问其他程序的内存空间,从而提高系统的安全性和稳定性。

3. 设备管理:

- 管理计算机的各种硬件设备,包括输入输出设备、存储设备等。内核会为设备驱动程序提供接口,使得设备能够与操作系统进行交互。例如,当你插入一个 USB 存储设备时,内核会检测到这个设备,并加载相应的驱动程序,使你能够访问这个设备上的文件。

- 实现设备的调度和缓冲管理,提高设备的利用率和性能。比如,对于硬盘等存储设备,内核会采用缓冲技术,将经常访问的数据缓存在内存中,以减少对硬盘的访问次数,提高系统的性能。

4. 文件系统管理:

- 提供文件系统的支持,负责文件的存储、检索和更新。内核会将文件存储在磁盘等存储设备上,并提供文件系统的结构和操作接口,使得用户和应用程序能够方便地管理文件。例如,你可以通过操作系统的文件管理器创建、删除、复制和移动文件,这些操作都是由内核中的文件系统管理模块来实现的。

- 实现文件的权限管理和安全机制,保护文件的安全性和完整性。内核会根据用户的权限设置,限制对文件的访问和操作,防止未经授权的用户访问敏感文件。

二、特点

 1. 高效性:内核需要高效地管理系统资源,以确保系统的性能和响应速度。它通常采用优化的算法和数据结构,以最小的开销完成各种管理任务。

2. 稳定性:作为操作系统的核心部分,内核的稳定性至关重要。一旦内核出现故障,可能会导致整个系统崩溃。因此,内核通常经过严格的测试和验证,以确保其稳定性和可靠性。

3. 可扩展性:随着计算机技术的不断发展,新的硬件设备和软件功能不断涌现。内核需要具备良好的可扩展性,以便能够轻松地适应新的环境和需求。

4. 安全性:内核负责管理系统的资源和安全机制,因此需要具备高度的安全性。它需要防止恶意软件的攻击和非法访问,保护系统的安全和稳定。 总之,操作系统内核是操作系统的核心组成部分,它负责管理系统的最基本功能和资源,为上层软件提供基础服务。了解内核的功能和特点,有助于更好地理解操作系统的工作原理和性能优化。

什么是驱动?

驱动,全称为设备驱动程序,是一种特殊的软件,它在计算机系统中起着至关重要的作用。

主要作用:

  1. 连接硬件与操作系统:驱动程序充当了硬件设备和操作系统之间的桥梁。不同的硬件设备有着各自独特的工作方式和指令集,而操作系统需要一种统一的方法来与这些设备进行交互。驱动程序将硬件设备的特定功能和操作转化为操作系统能够理解的指令和数据格式,使得操作系统可以控制和管理硬件设备。例如,当你插入一个打印机到计算机上时,操作系统需要通过打印机驱动程序来识别这个设备,并与它进行通信,以实现打印功能。
  2. 实现设备的特定功能:硬件设备通常具有多种功能和特性,驱动程序负责实现这些功能并将其暴露给操作系统和应用程序。例如,显卡驱动程序不仅要使显卡能够在屏幕上显示图像,还要支持各种图形特效、分辨率设置和多显示器配置等功能。
  3. 优化设备性能:驱动程序可以针对特定的硬件设备进行优化,以提高设备的性能和效率。例如,硬盘驱动程序可以采用缓存技术和优化的磁盘访问算法,以加快数据的读写速度;显卡驱动程序可以对图形处理进行优化,提高游戏和图形应用的帧率。

Linux启动流程

Linux启动过程:
1. 先启动bootloader—一段裸机程序,为内核启动准备环境
2. 启动内核 --- 操作系统
3. 加载(挂载)根文件系统

norflash与nandflash的区别

NorFlash与NandFlash有诸多区别,主要体现在以下方面:

1. 接口与寻址方式:

- NorFlash:带有SRAM接口,有足够的地址引脚来寻址,可以像普通内存一样随机访问,能够很容易地存取其内部的每一个字节,这使得它支持片上执行(XIP,Execute In Place),即应用程序可以直接在NorFlash闪存内运行,不必先把代码读到系统RAM中。

- NandFlash:使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。它的地址线和数据线是复用的,不能像NorFlash那样直接随机访问,只能以页(Page)为单位进行读取,以块(Block)为单位进行擦除和写入操作。

2. 存储容量与成本:

- 存储容量:NorFlash的存储容量相对较小,一般在1MB-16MB之间比较常见,虽然也有更高容量的产品,但整体上容量提升的难度较大且成本较高。NandFlash则能够提供更高的存储容量,常见的有几百MB甚至几十GB的容量,更适合大容量数据存储的需求。

- 成本:在相同容量的情况下,NorFlash的成本更高。因为NorFlash的生产工艺相对复杂,且每个存储单元的电路结构相对更复杂,导致其成本较高。而NandFlash由于生产过程相对简单,在大容量存储时具有明显的成本优势。

3. 读写性能:

- 读取速度:NorFlash的读取速度较快,与NandFlash相比具有一定优势,特别是在小容量数据读取时,速度差异较为明显。

- 写入速度:NandFlash的写入速度比NorFlash快很多。NorFlash的写入操作相对较慢,这是其一个较大的缺点。

- 擦除速度:NandFlash的擦除速度也远远快于NorFlash。NorFlash擦除一个块的时间可能需要5s左右,而NandFlash擦除一个块通常不超过4ms。

4. 数据存储的可靠性:

- 寿命(耐用性):NorFlash的擦写次数一般为十万次左右,而NandFlash每个块的最大擦写次数可达一百万次,NandFlash在寿命方面更具优势。

- 位交换现象:两种闪存都受位交换现象的困扰,但NandFlash发生的次数相对更多。位交换是指一个比特位会发生反转或被报告反转,对于存储关键文件可能会导致系统故障。在使用NandFlash时,通常需要使用错误探测/错误更正(EDC/ECC)算法来确保数据的可靠性。

- 坏块处理:NorFlash的坏块相对较少,并且在出厂时基本已经被标记出来,使用过程中遇到坏块的概率较低。NandFlash的坏块是随机分布的,需要在使用前对介质进行初始化扫描以发现坏块,并将坏块标记为不可用,否则可能会导致数据存储错误。

5. 应用场景:

- NorFlash:适用于对代码执行速度要求较高、存储容量需求不大且需要直接在闪存上运行代码的场景,如嵌入式系统中的BIOS、路由器的固件等。

- NandFlash:常用于大容量数据存储的设备,如固态硬盘(SSD)、U盘、存储卡、智能手机、平板电脑等。

bootloader程序工作过程:

初始化 CPU( 工作模式 )
初始化堆栈
初始化异常向量表
初始化时钟
初始化内存
关看门狗
Cache
MMU
初始化相关的硬件设备 ( 调试串口、网口、 led)
集成相关的通信协议
搬移内核到内存
向内核传参 -- 根文件系统位置,调试端口
Linux 启动过程:
1. 先启动 bootloader —一段裸机程序,为内核启动准备环境
2. 启动内核 --- 操作系统
3. 加载 ( 挂载 ) 根文件系统
引导内核启动
------CPU 的控制权彻底移交给内核, bootloader 不再
控制 CPU
Bootloader 是在操作系统内核运行之前运行的一段小程序,其主要工作过程如下:

一、硬件初始化

 1. 上电复位:当系统上电或复位时,处理器会从一个固定的地址开始执行指令,这个地址通常指向 Bootloader 的存储位置。
2. 处理器初始化:Bootloader 首先对处理器进行初始化,包括设置处理器的工作模式、时钟频率、中断向量表等。这确保处理器处于一个已知的、稳定的状态,以便后续的操作能够正确执行。 3. 内存初始化:Bootloader 接着初始化系统内存,包括检测内存的大小和类型、设置内存控制器的参数等。这为后续的代码加载和执行提供了必要的内存空间。
4. 其他硬件初始化:根据具体的系统需求,Bootloader 还可能对其他硬件设备进行初始化,如串口、网络接口、存储设备等。这些设备可能在后续的启动过程中被用于调试、下载操作系统内核或其他数据。

二、引导加载模式选择

 1. 自动引导:在大多数情况下,Bootloader 会自动尝试从预设的存储设备中加载操作系统内核。例如,它可能会从硬盘、闪存、网络等设备中查找内核映像文件,并将其加载到内存中准备执行。 2. 手动引导:有些 Bootloader 还提供了手动引导模式,允许用户通过特定的按键组合或命令行界面来选择引导设备、内核映像文件或其他启动参数。这在系统出现故障或需要进行特殊的启动配置时非常有用。

三、内核加载

 1. 查找内核映像:Bootloader 根据预设的搜索顺序和规则,在存储设备中查找操作系统内核的映像文件。这个映像文件通常包含了内核的代码和数据,以及一些启动参数和配置信息。
2. 加载内核到内存:一旦找到内核映像文件,Bootloader 将其加载到内存中的特定位置。这个位置通常是由内核的设计和启动要求决定的,一般是在内存的高地址区域,以避免与 Bootloader 本身和其他低地址的系统资源发生冲突。
3. 传递启动参数:Bootloader 还可能需要将一些启动参数传递给内核,这些参数可以包括内存大小、根文件系统的位置、设备驱动程序的配置等。这些参数通常通过特定的寄存器或内存区域传递给内核,以便内核在启动时能够正确地配置和初始化系统。

四、内核启动

 1. 跳转执行:当内核映像文件被成功加载到内存并传递了必要的启动参数后,Bootloader 最后一步是跳转到内核的入口点开始执行内核代码。这个入口点通常是一个特定的函数或地址,由内核的设计和编译过程决定。
2. 内核初始化:内核在开始执行后,会进行一系列的初始化操作,包括设置处理器的特权级别、初始化内存管理单元、建立进程调度器、加载设备驱动程序等。这些操作将使系统进入一个可运行的状态,准备为用户提供各种服务和应用程序。 总之,Bootloader 在系统启动过程中起着至关重要的作用,它负责初始化硬件、加载操作系统内核并传递启动参数,为系统的正常运行奠定了基础。不同的系统和 Bootloader 实现可能会有所不同,但基本的工作过程大致相似。

操作步骤

uboot命令:

环境参数:

中途错误处理:

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐