news 2026/9/8 14:20:58

操作系统概述和硬件视角

作者头像

张小明

前端开发工程师

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/9/2 14:08:33

YOLOFuse与HTML5 Canvas结合:网页端图像标注工具开发

YOLOFuse与HTML5 Canvas结合:网页端图像标注工具开发 在智能安防、夜间巡检和自动驾驶等现实场景中,我们常常面临一个棘手问题:光线昏暗、烟雾弥漫或目标遮挡导致可见光摄像头“看不清”。单靠RGB图像做目标检测,模型很容易漏检行…

作者头像 李华
网站建设 2026/9/2 21:30:48

图解说明有限状态机在VHDL中的实现方式

有限状态机在VHDL中的实战解析:从状态图到三段式编码你有没有遇到过这样的情况?老师布置了一个VHDL课程设计大作业,题目是“设计一个交通灯控制器”或“实现自动售货机逻辑”,你打开Quartus或者Vivado,手放在键盘上&am…

作者头像 李华
网站建设 2026/9/8 0:37:15

xv6 进程调度

进程调度 1、概念 对于xv6操作系统,他是一个8核cpu,一个核心严格意义上在一个时间点上只能执行一个进程,一个8核的cpu严格意义上可以同时执行8个进程。那么为什么会有一个单核cpu同时执行多个进程的说法呢?实际上是cpu的进程调度机制,cpu规定一个进程不能一直执行下去,…

作者头像 李华
网站建设 2026/9/2 21:33:01

YOLOFuse预训练权重下载链接汇总:官方与镜像站点对照表

YOLOFuse预训练权重下载链接汇总:官方与镜像站点对照表 在智能安防、自动驾驶和工业巡检等现实场景中,单一可见光摄像头常常“力不从心”——夜晚看不清、烟雾里漏检、强光下过曝。这些问题催生了多模态感知技术的快速发展,尤其是RGB-红外双流…

作者头像 李华
网站建设 2026/9/4 4:11:08

YOLOFuse在百度云盘中的分享链接整理:直链下载提速技巧

YOLOFuse:多模态目标检测的“开箱即用”实践之路 在低光照、烟雾弥漫或强逆光等恶劣环境下,传统基于可见光的目标检测模型常常“失明”。行人轮廓模糊、车辆细节丢失、小目标难以捕捉——这些问题困扰着安防、巡检和自动驾驶领域的工程师。而与此同时&a…

作者头像 李华
网站建设 2026/9/3 2:34:53

YOLOFuse如何更新到最新版?Git pull同步代码最佳实践

YOLOFuse 如何安全高效地更新到最新版?Git 同步实战指南 在多模态感知技术飞速发展的今天,RGB-IR 双流目标检测已成为安防监控、自动驾驶和夜间巡检等场景中的关键技术。YOLOFuse 作为基于 Ultralytics YOLO 构建的开源融合检测框架,凭借其高…

作者头像 李华