1004 番外篇 操作系统之为什么

1004
此文试图回答以下问题:

  1. 为什么需要学习操作系统?
  2. 操作系统可以拆分成哪几个部份?
  3. 计算机程序是怎么运行起来的?

  1. 为什么需要学习操作系统?
    答:这个问题可以换成为什么学好编成语言需要了解操作系统?答:因为程序语言相当于是人和计算机之间的中介,我们依靠程序语言和计算机进行沟通,安排他们替我们做事。而程序语言显然不是计算机硬件(任务直接执行者)能读懂的,需要经过一级一级的翻译。而其中操作系统便是连接硬件和客户端(应用端)最重要的桥梁。举例说来,我们平时常用的单击双击拖动等鼠标操作,键盘输入汉字/字符等都是直接作用给了操作系统,操作系统经过一系列复杂的转换将这些信号以数字信号的形式传递给硬件。
    所以,我们对计算机下达的几乎每一个指令都会经过操作系统,为了设计出更友好更高效的程序必须了解操作系统。
    另外,因为操作系统本身也是程序,本身就蕴含着很多巧妙的设计思想。所以如果能学好操作系统的话,就意味着程序设计能力有了一定的水准。

  2. 计算机程序是怎么运行起来的?
    答:大致都会经过如下几步:
    a. 源程序经过编译器/解释器等变成机器语言
    b. 机器语言加载到内存,形成运动中的程序,也就是“进程”(需要操作系统的帮助)
    c. 进程被调度到CPU上运行(同样需要操作系统帮助)
    d. 然后,在CPU上执行的机器语言指令需要变成能够在一个个时钟脉冲里执行的基本操作,这需要指令集系统和硬件的支持。
    注意:整个程序的执行过程实际上当然不是像上述流程那样顺次进行的,而是充满了穿插和交互。比如硬件的执行肯定是贯穿始终的。另外,操作系统起到的平台作用也是贯穿始终的。

从中可以看出,程序的运行至少需要如下四个因素:
程序设计语言;
编译系统;
操作系统;
指令集结构(计算机硬件系统)。

  1. 操作系统可以拆分为哪几个有机的部分?
    答:先探讨以下一下操作系统充当的角色。
    像是魔术师:
    把差的东西变好,复杂东西变容易,相对于裸机编程。
    少的东西变多,虚拟内存抽象,用户感觉物理内存无限多。
    像是管理者:
    CPU管理(进程管理);
    内存管理;
    外存管理;
    I/O管理。

引用操作系统之哲学原理的目录回答此问题:
第六篇:I/O原理
第五篇:文件原理
第四篇:内存原理
第三篇:线程原理
第二篇:进程原理

### U-Boot驱动模型详解 #### 数据结构概述 U-Boot中的驱动模型由三个主要部分组成:`uclass`、`driver` 和 `device`。这些组件共同协作来管理硬件资源并提供抽象接口给上层应用[^2]。 #### 宏定义解析 为了简化驱动注册过程,U-Boot引入了`U_BOOT_DRIVER`宏,该宏用于声明一个新的驱动实例。通过这个宏可以指定诸如名称、ID以及其他属性等信息。具体来,此宏会创建一个静态全局变量,并将其链接到特定的初始化级别以便于后续处理[^1]。 ```c #define U_BOOT_DRIVER(name) \ static const struct driver __##name##_driver = { \ .name = #name, \ }; ``` 上述代码片段展示了如何利用C预处理器特性来自动生成必要的元数据,从而减少开发者的工作量并提高代码可读性和维护性。 #### 设备类(`uclass`)的作用 每个设备都归属于某个类别(即`uclass`),这有助于组织不同类型的外设并将它们分组在一起。例如,串口控制器可能属于UART类;而网卡则会被分配至网络适配器一类。这种分类方式不仅方便管理和查找,还允许共享通用逻辑和配置选项。 #### 驱动(`driver`)的功能 作为连接物理硬件与操作系统之间的桥梁,驱动负责执行具体的I/O操作以及状态查询等功能。它实现了针对某一特定型号芯片的操作方法集合,并向上暴露统一的标准API供其他模块调用。值得注意的是,在某些情况下也可以设计成虚拟化形式以支持多租户环境下的资源共享。 #### 实际案例明 假设现在有一个新的USB键盘需要加入系统,则可以通过如下步骤完成集成: 1. 创建对应的`.dts`(Device Tree Source)文件描述节点参数; 2. 编写相应的C源码实现基本功能如按键扫描、事件上报等; 3. 使用`U_BOOT_DRIVER()`宏将新开发出来的软件包正式纳入框架体系内; 4. 修改Makefile确保编译过程中能够正确识别新增加的内容。 以上就是关于U-Boot驱动模型较为全面介绍的一部分要点总结。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值