news 2026/5/30 18:56:50

操作系统概述和硬件视角

作者头像

张小明

前端开发工程师

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/29 1:05:14

YOLOFuse轻量化版本开发中:面向嵌入式设备裁剪模型

YOLOFuse轻量化版本开发中:面向嵌入式设备裁剪模型 在智能安防、自动驾驶和工业检测等场景日益复杂的今天,单一视觉模态的局限性正变得越来越明显。尤其是在夜间、烟雾或强光干扰环境下,仅依赖RGB图像的目标检测系统常常“失明”——行人轮廓…

作者头像 李华
网站建设 2026/5/28 12:56:03

Multisim14.2安装后无法启动?Win10专项修复

Multisim 14.2在Win10上点开没反应?别急,一文搞定启动难题 你是不是也遇到过这种情况:好不容易按照网上的 multisim14.2安装教程 走完流程,结果双击图标—— 毫无反应、闪退、弹窗报错“0xc000007b” ?尤其在新装…

作者头像 李华
网站建设 2026/5/28 16:24:25

YOLOFuse项目根目录结构解析:train_dual.py与infer_dual.py使用说明

YOLOFuse项目根目录结构解析:train_dual.py与infer_dual.py使用说明 在智能安防、自动驾驶和夜间监控等现实场景中,单一可见光摄像头在低光照、烟雾或恶劣天气下常常“失明”。你是否曾遇到过这样的问题:白天表现良好的目标检测模型&#xff…

作者头像 李华
网站建设 2026/5/30 0:31:07

自动驾驶决策控制仿真:系统学习核心模型构建

自动驾驶决策控制仿真:从零构建高保真闭环系统你有没有遇到过这样的困境?算法在仿真里跑得完美无缺,实车一上路却频频“翻车”——变道失败、轨迹抖动、紧急制动……背后的原因往往不是代码写错了,而是仿真的世界太“理想化”了。…

作者头像 李华
网站建设 2026/5/28 12:25:09

YOLOFuse打鼾与呼吸暂停检测:健康风险早期提示

YOLOFuse打鼾与呼吸暂停检测:健康风险早期提示 在深夜的卧室里,一个人正安静地躺着——看起来一切正常。但如果你能“看见”他的呼吸节律,或许会发现异常:胸腹长达十秒没有起伏,血氧可能正在悄然下降。这样的场景每天在…

作者头像 李华