news 2026/5/8 23:38:27

操作系统概述和硬件视角

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
操作系统概述和硬件视角

操作系统概述和硬件视角

文章目录

  • 操作系统概述和硬件视角
    • 一、前言
    • 二、操作系统的概述
      • 2.1 定义
      • 2.2 目的
      • 2.3 关注点
      • 2.4 程序来看OS
        • 2.4.1 提出问题
        • 2.4.2 解决编译器的很多问题
    • 三、硬件视角
      • 3.1 组成
      • 3.2 核心概念
        • 3.2.1 CPU
        • 3.2.2 存储器
        • 3.2.3 I/O设备
        • 3.2.4 总线
    • 四、小结

一、前言

今天,我们开始步入操作系统的学习啦~

二、操作系统的概述

2.1 定义

Operating System,简称OS,是一组控制和管理计算机硬件软件资源的程序集合

本质:OS是一个软件,需要在硬件上运行,为软件系统提供访问接口

s:software

上管软件,下管硬件,就是操作系统

程序集合:操作系统需要编码

2.2 目的

  • 合理地对各类作业进行调度,方便用户使用计算机

  • 使系统资源的利用率高,系统的吞吐量大

    利用率高:使一个事物可以尽可能的做更多事

    吞吐量大:一次性干好多事

2.3 关注点

如何设计操作系统以及设计操作系统需要解决的问题和方案

2.4 程序来看OS

2.4.1 提出问题
  • hello.c文件在磁盘怎么存,怎么读,可以我们在磁盘那么大的空间可以找到hello.c?

    文件系统

  • hello.c怎么变成CPU能认识的指令?

    识别指令(操作系统能做的活都限制在指令集中)

    我们现在写的程序都是基于OS的程序设计(裸机程序)

  • 软件可以运行多次,甚至同时运行很多软件,CPU如何管理多个任务?

  • 程序存放内存之中,内存如何进行管理?

核心:操作系统如何管理CPU,如何管理内存,如何管理磁盘,如何管理设备(IO)

涉及进程和线程(调度和同步机制)、内存管理、文件系统、IO设备

2.4.2 解决编译器的很多问题

编译器和操作系统的关系

操作系统和编译器是彼此辅助的关系:编译器是基于操作系统的,帮助操作系统管理资源的以及支持编译行为

一款编译器要解决的问题:解决CPU指令集问题;不同操作系统的问题

如果操作系统是none——说明它是直接面向CPU编程,不是为系统服务

gcc不像javac(java的编译器是javac),gcc在windows上写的程序,在Linux上就是运行不了。而java语言可以跨平台运行。

gcc编译过程

  • gcc是一个总的调度器,后面跟着一个选项,决定了干活干到什么程度(语法)
  • 预处理和汇编,一定程度上,人类还是看得懂的,后面不行
  • 运行出错,一般是链接出错
  • 编译器和汇编器都是来解决CPU的,链接器是解决内存管理的

gcc -E -o hello.i hello.c预处理

gcc -S -o hello.s hello.i生成汇编文件(人们能看懂的助记符) 编译

cc1 hello.c -o /tmp/cceVNE1I.s编译器 gcc -S

里面含有很多编译所产生文件的目录

在编写程序时,所谓的include就是把文件打开了,最终编译的是.c文件,只是将会重复编译的文件整成头文件,包含在.c文件中了,最终是一起编译的

gcc -c -o hello.o hello.s将助记符一一映射,变成了非ASCII码的文件 汇编

as -o /tmp/cc8ATX9H.o /tmp/cceVNE1I.sas-assembler 汇编器 gcc -c

借助nmobjdump来看懂

.o是gcc二进制指令流

里面有很多-c,-lc,-lgcc等都是第三方库——链接(组装车间)

gcc -o build hello.o链接

ld -o build /tmp/cc8ATX9H.o .../*.o -lc链接器 gcc

不仅需要自己的.o,还需要很多操作系统的依赖.o,还有很多第三方库的.o(-lc)

为什么说编译是在操作系统下运行的呢?因为编译器也把操作系统对应的依赖文件装进去了,并且第三方库(我们写程序也需要很多别人写好的函数,如标准C库)在操作系统中有

as,ld,cc1这些东西比较底层,做了解

三、硬件视角

3.1 组成

一个或多个处理器(CPU)、主存、键盘 + 鼠标、显示器、网络接口、打印机

  • CPU不存指令,CPU如果存指令,消耗会很大,于是有了主存,主存相当于CPU外面的一个仓库
  • 主存包括内存 + 磁盘
  • 键盘 + 鼠标、显示器、网络接口、打印机都属于IO
  • 磁盘是由磁盘控制器管理的,磁盘控制器是由驱动控制来工作的

CPU -> Cache -> 内存、数据内存、控制器

  • 控制器:控制硬件产生高低电压和频率和另外一个芯片达成通信过程(相当于一个小芯片)

    CPU不能做这个事情,因为它不能停,是一直高速转动的,CPU负责控制控制器

  • CPU里面有寄存器(不同CPU的寄存器不一样[厂家决定],数量少),数据是通过寄存器写到内存里面的,CPU就是依靠寄存器实现和内存的交互(有专门的指令集)

  • 指令集

    • PC:Program Counter(程序计数器),PC指哪,CPU就在哪运行
    • SP:Stack Pointer(栈指针),控制在内存存放东西

注意:每个厂家实现的行为不一样~

3.2 核心概念

3.2.1 CPU
  • 指令集和结构特点

    • 寄存器和内存的加载、存储指令

      把内存的东西取到寄存器里面,在寄存器里操作完之后,再放回内存

      寄存器不能通过地址来访问,只能通过写汇编访问

    • 基本运算指令

    • 特殊功能指令

  • 资源:寄存器

    • 通用寄存器

      R0-R12(ARM体系)

    • 特殊寄存器

      • PC寄存器

      • SP寄存器

        保护和恢复信息

      • PSW寄存器(状态寄存器)

        还在运行时需要保存(比如:中断)

  • 工作模式

    工作模式:有独立的空间,独立的任务

    特权 & 非特权

  • 中断模式 & 系统调用★

3.2.2 存储器

  • 存储器的访问时间和容量关系

    • 寄存器、缓存

      缓存是一行一行存

    • 局部性原理

      cache比内存快

  • 常见主存(Main Memory)

    意识性存储器(掉电易失)

    • RAM(Random Access Memory)

      掉电易失

    • ROM(Read Only Memory)

      存了不丢

  • 磁盘

    非意识性存储器

    • 磁盘结构
    • 磁道、柱面、扇区
3.2.3 I/O设备
  • I/O设备工作模型

    实现输入输出的3种方式:

    • 忙等(busy waiting)/轮询

    • 中断

      • 中断处理流程

        中断发生就要保护现场恢复现场,硬件/软件来保护,

      • 异常和中断

3.2.4 总线

衔接不同的设备

分高速总线和低速总线

四、小结

本篇仅对操作系统进行一个总览,有一个感性的理解,之后会分主题深入探索。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 19:46:57

YOLOFuse Token计费模式前瞻:API调用按次收费设想

YOLOFuse Token计费模式前瞻:API调用按次收费设想 在智能安防、工业巡检和无人系统日益依赖视觉感知的今天,单一可见光摄像头在夜间、烟雾或低光照环境下的局限性愈发凸显。尽管YOLO系列模型已在通用目标检测中表现出色,但在复杂环境下仍力不…

作者头像 李华
网站建设 2026/5/8 20:13:52

FPGA应用开发和仿真【2.0】

2.15 生成块 初学者可跳过此节,当觉得在模块中重复写类似的有规律的内容比较烦琐时,再来学习本节。 代码2-42 8位格雷码到二进制码转换 生成块可根据一定的规律,使用条件生成语句、循环生成语句等,重复构造生成块的内容,等效于按照规律重复书写了生成块中的内容。考虑代…

作者头像 李华
网站建设 2026/5/5 17:15:49

YOLOFuse train_dual.py高级用法:调整学习率与batch size

YOLOFuse train_dual.py 高级用法:学习率与 Batch Size 的调优艺术 在智能安防、自动驾驶和夜间监控等现实场景中,单靠可见光图像的目标检测早已捉襟见肘——低光照、雾霾遮挡、热源干扰等问题让传统模型频频“失明”。于是,RGB-红外双模态融…

作者头像 李华
网站建设 2026/4/27 14:31:58

framebuffer驱动中的显存管理机制详细解析

显存怎么管?深入剖析Framebuffer驱动的内存管理艺术你有没有想过,当你在嵌入式设备上点亮一块屏幕时,那幅图像背后是谁在默默搬运每一个像素?不是GPU渲染管线,也不是X Server那样的复杂图形系统——在许多工业控制面板…

作者头像 李华
网站建设 2026/4/25 5:21:11

只有RGB数据能跑YOLOFuse吗?模拟红外数据的临时方案

只有RGB数据能跑YOLOFuse吗?模拟红外数据的临时方案 在智能安防、自动驾驶和夜间监控等现实场景中,单一可见光摄像头常常力不从心——光线昏暗时图像模糊,烟雾遮挡下细节丢失,传统基于RGB的目标检测模型在这种环境下性能急剧下滑。…

作者头像 李华
网站建设 2026/4/22 23:20:53

YOLOFuse茶园春茶采摘进度跟踪:劳动力分布分析

YOLOFuse茶园春茶采摘进度跟踪:劳动力分布分析 清晨五点的茶园,薄雾弥漫,露水未干。采茶工人们已穿梭于茶垄之间,指尖翻飞,争分夺秒抢收头春嫩芽。然而,对管理者而言,如何掌握这片朦胧绿海中的人…

作者头像 李华