当前位置: 首页 > news >正文

操作系统(1) 计算机系统漫游

1.1 信息就是位+上下文

信息的最小单位是位(bit),即二进制数字0或1。位是信息的基本构建块,用于表示最简单的二元状态。在数字系统中,信息通过位的组合进行编码和传输。

1.2 程序被其他程序翻译成不同的格式

hello程序的生命周期从高级C语言程序写起,因为这种形式能够被人对读懂,为了在在系统上运行hello程序,每条C语句都必须被其他程序转化为一系列的低级机器语言程序。

1.预处理阶段

预处理阶段由预处理器完成,主要处理源代码中的预处理指令。宏定义展开、头文件包含、条件编译等操作都在此阶段进行。例如#include指令会被替换为对应文件内容,#define定义的宏会被展开。预处理后的代码通常以.i.ii为扩展名。

2.编译阶段

编译器将预处理后的代码转换为汇编代码。此阶段进行语法分析、语义分析、优化等一系列操作,生成与特定硬件架构相关的低级中间代码。编译阶段会检查语法错误,如类型不匹配或未声明的变量。生成的汇编代码通常以.s为扩展名。

3.汇编阶段

汇编器将汇编代码转换为机器码,生成目标文件。目标文件包含二进制指令和符号表等元数据,但尚未解决外部引用。不同平台的目标文件格式不同,例如Linux使用ELF格式,Windows使用PE格式。目标文件通常以.o.obj为扩展名。

4.链接阶段

链接器将一个或多个目标文件合并,解析外部符号引用,生成可执行文件或库。静态链接在编译时完成,动态链接在运行时完成。链接阶段会处理函数和变量的地址分配,解决跨文件的依赖关系。最终生成的可执行文件格式取决于操作系统。

1.3编译系统是如何工作的

1.编译系统的基本流程

编译系统将高级语言代码转换为可执行机器代码,通常分为多个阶段。每个阶段处理特定任务,最终生成目标文件或可执行程序。

词法分析:词法分析器将源代码分解为一系列标记。这些标记包括关键字、标识符、运算符和分隔符等。例如,代码 int x = 5; 会被分解为标记 intx=5;

语法分析:语法分析器根据语言的语法规则检查标记序列是否构成合法的程序结构。生成抽象语法树(AST),表示代码的层次结构。例如,x = 5 会被解析为一个赋值表达式节点。

语义分析:语义分析器检查程序是否符合语言规范,如类型匹配、变量声明等。例如,确保赋值语句两边的类型兼容,或函数调用参数数量正确。

中间代码生成:编译器将AST转换为中间表示(IR),如三地址码或LLVM IR。IR是一种与机器无关的低级表示,便于后续优化和翻译。

目标代码生成:代码生成器将优化后的IR转换为目标机器的汇编代码。这一阶段涉及寄存器分配、指令选择和内存管理。

1.4系统的硬件组成

1.核心组件与功能

组件功能与作用
CPU包含程序计数器(PC,记录下一条指令地址)、寄存器文件(临时存储数据)、算术 / 逻辑单元(ALU,执行运算)和总线接口(与系统总线交互),是系统的 “运算与控制核心”。
主存储器存储程序指令和数据,通过内存总线与 I/O 桥连接,是 CPU 直接访问的 “临时数据仓库”。
I/O 桥连接系统总线、内存总线和 I/O 总线,负责不同总线间的信号转换与数据转发,是硬件组件的 “通信枢纽”。
I/O 总线及外设包括 USB 控制器(连接鼠标、键盘)、图形适配器(驱动显示器)、磁盘控制器(管理磁盘存储)等,负责与外部设备的交互,实现输入输出功能。

2. 总线的作用与分类

  • 系统总线:连接 CPU 与 I/O 桥,传输 CPU 与其他组件的控制、地址和数据信号。
  • 内存总线:连接 I/O 桥与主存储器,专门用于 CPU 与内存之间的高速数据传输。
  • I/O 总线:连接 I/O 桥与各类外设(如 USB、图形适配器、磁盘控制器),支持外设与系统的通信。

3. 图示的典型应用场景

  1. CPU 通过 I/O 总线与磁盘控制器交互,从磁盘中读取 “hello” 可执行文件到主存储器。
  2. CPU 从主存储器中取出指令(由 PC 指向),经 ALU 执行运算,通过寄存器文件暂存数据,完成程序的逻辑执行。
  3. 执行过程中如需与外设交互(如输出结果到显示器),则通过 I/O 桥和 I/O 总线,由图形适配器驱动显示器完成显示。

1.5操作系统管理硬件资源

1. 进程

  • 定义:进程是程序的一次执行过程,是操作系统进行资源分配和调度的基本单位
  • 组成:每个进程包含独立的内存空间(代码段、数据段、堆、栈)、文件描述符、信号处理机制等资源,以及一个或多个线程。
  • 特点:进程拥有独立的资源集合,进程间相互隔离,通信需通过专门的机制(如管道、共享内存、消息队列)。

2. 线程

  • 定义:线程是进程内的一个执行单元,是操作系统进行调度(CPU 分配)的基本单位
  • 组成:线程共享所属进程的内存空间和资源(如代码段、数据段、文件描述符),但拥有独立的栈空间和寄存器状态。
  • 特点:线程间共享进程资源,通信便捷(直接访问共享内存),但需同步机制(如锁、信号量)避免资源竞争。

3.核心区别(进程 vs 线程)

维度进程(Process)线程(Thread)
资源分配拥有独立资源(内存、文件描述符等),资源开销大共享进程资源,仅拥有独立栈和寄存器,资源开销小
独立性进程间完全独立,一个进程崩溃不影响其他进程线程属于同一进程,一个线程崩溃可能导致整个进程崩溃
通信方式需通过进程间通信(IPC)机制(如管道、消息队列)直接访问共享内存,通信简单但需同步
切换开销切换时需保存 / 恢复整个进程的资源状态,开销大切换时仅需保存 / 恢复线程私有数据,开销小(约为进程的 1/10~1/100)
调度单位操作系统资源分配的基本单位操作系统 CPU 调度的基本单位
创建 / 销毁速度较慢(需分配资源)较快(共享资源,仅初始化线程私有数据)

4虚拟内存

定义:虚拟内存为每个程序提供一个独立的虚拟地址空间(通常为4GB或更大),而实际物理内存(如8GB)通过硬件和操作系统动态映射。

  • 关键组件
    • 页面:内存被划分为固定大小的块(如4KB,即4096字节)。页面大小通常为2^n字节,其中n=12(因为2^12 = 4096)。
    • 页表:一个数据结构,存储虚拟页号到物理帧号的映射关系。
    • 磁盘交换区:当物理内存不足时,操作系统将不常用的页面换出到磁盘(如SSD或HDD)。

5.文件

http://www.dtcms.com/a/536452.html

相关文章:

  • 广州海珠建网站网站快照
  • Ray Tune 强大的分布式超参数调优框架
  • AI编程对“古典“开发人员的影响.
  • 【Python OOP Diary 2.2】第四题:银行账户管理系统,封装,字典与类协作
  • 网络性能测试工具 - netperf
  • 麒麟系统卸载 Podman 0.10.1
  • 空间数据采集与管理高级应用——包括表格数据、矢量数据、栅格数据、点云数据、多维数据以及遥感云平台数据处理等
  • 基于TDE透明加密实现异地服务器间文件自动加密传输的实践与思考
  • 宁波网站建设 联系哪家企业网站建设专家
  • 今日Reddit AI高价值讨论分析 - 10.27
  • 知乎网站开发用的语言东阳住房和城市建设网站
  • 成都市城乡住房建设厅网站个人做论坛网站怎么做
  • 通过ML.Net调用yolov5的Onnx模型
  • 操作系统:大容量存储器结构——计算题知识点与解题逻辑详解
  • 迭代器与闭包深入
  • 建网站需要什么手需微信网站协议书
  • 网站后台样式模板门户一号wordpress主题
  • 解决Jenkins在构建前端任务时报错error minimatch@10.0.3:……的记录
  • CentOS7 安装 Jenkins
  • 用n8n工作流+DeepSeek大模型基于k8s做一个运维智能体
  • Java电商项目中的概念: 高并发、分布式、高可用、微服务、海量数据处理
  • Python + requests + pytest + allure + Jenkins 构建完整的接口自动化测试框架
  • 2025-10-27 Java AI学习路线
  • Jenkins Pipeline 多job依赖、触发多Job、并行执行及制品下载
  • 静态网站 服务器男女做暖暖到网站
  • PortableApps_U 便携式软件_Software
  • Map Set
  • 云渲染技术高效创作的三大核心支撑
  • Linux小课堂: HTTPS协议原理与Apache服务器配置实战
  • 51c大模型~合集37