0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

计算机系统讲解(上)

CHANBAEK 来源:CurryCoder的程序人生 作者: CurryCoder 2023-09-27 15:09 次阅读

1.全书结构

(1).Chapter01:计算机系统漫游

(2).Chapter02~Chapter12分为三部分

  • Part I:程序结构和执行(Chapter02~Chapter06)
  • Part II:在系统上运行程序(Chapter07~Chapter09)
  • Part III:进程间的交互和通信(Chapter10~Chapter12)

2.程序编译流程

(1).编译系统工作流程

图片

程序编译

图片

详细过程

  • Stage1(预处理) :预处理器会根据以#开头的代码来修改原始程序,预处理器会读取头文件中的内容,将头文件中的内容直接插入到源程序中,结果就得到了另一个C程序。经预处理器处理后得到的文件通常以.i为后缀结尾,它仍然是一个文本文件;
  • Stage2(编译) :编译器将hello.i文件翻译成hello.s文件,这一过程称为编译。其中编译这一阶段包括词法分析、语法分析、语义分析、中间代码生成及优化等一系列的中间操作;
  • Stage3(汇编) :汇编器根据指令集将汇编程序hello.s翻译成机器指令,并且把这一系列的机器指令按照固定的规则进行打包得到 可重定位目标文件hello.o 。此时,虽然hello.o是一个二进制文件,但是还不能执行还需要进行链接操作;
  • Stage4(链接) :在hello这个程序中,调用了标准C库中的函数printf,每一个C语言的编译器都会提供。当调用printf函数时,编译器就知道你要在屏幕上打印输出内容,它会将这行代码翻译成计算机可以理解的指令。printf函数在名为printf.o文件中,这个文件是一个提前编译好的目标文件。链接器ld负责把hello.o和printf.o进行合并,但合并需要遵循一定的规则。正是由于链接器要对hello.o和printf.o进行调整,所以hello.o才会称为可重定位目标文件,最终经过链接阶段可以得到 可执行目标文件hello 。此时,得到的hello就可以被加载到内存中执行了。

(2).理解编译系统工作流程意义

  • 优化程序性能;
  • 理解链接时出现的错误;
  • 避免安全漏洞(缓冲区溢出);

3.计算机系统硬件组成

图片

计算机硬件系统组成
(1).CPU的结构

程序计数器PC :一个字即4字节(32位系统)或一个字即8字节(64位系统)的存储空间,里面存放的是某一条指令的地址。从系统上电的那一瞬间到系统断电,处理器就不断地在执行PC执向的指令,然后更新PC,使其指向下一条要指向的指令。注意:下一条执行的指令与刚刚执行过的指令不一定是相邻的地址。

寄存器文件 :它是CPU内部的一个存储设备,寄存器文件是由一些单字长的寄存器构成,每个寄存器都有自己唯一的名字。换句话说,寄存器可以理解为一个临时存放数据的空间。

算术逻辑单位ALU :例如,计算两个变量a、b的和,处理器从内存中读取a的值暂存在寄存器X中,读取b的值暂存在寄存器Y中,这个操作会覆盖寄存器中原来的数值。处理器完成加载的操作后,ALU会复制寄存器X和Y中保存的数值,然后进行算术运算,得到的结果会保存在寄存器X或寄存器Y中。此时,寄存器中原来的值会被新的值所覆盖。

(2).主存/内存

处理器在执行程序时,内存主要存放程序指令和数据。从物理上来说,内存就是由随机动态存储芯片组成;从逻辑上来说,内存可以看成是一个从0开始的大数组,每个字节都有相应的地址。

(3).总线

内存和处理器之间通过总线来进行数据传递,总线贯穿了整个计算机系统,它负责将信息从一个部件传递到另一个部件,通常总线被设计成固定长度的字节块即字word。字表示多少个字节,各个系统是不一样的。

(4).输入输出设备

例如:键盘、鼠标、显示器等,每个输入输出设备都通过一个控制器或者适配器与IO总线相连。

4.程序运行背后的故事

(1).键盘输入./hello时,shell程序会将输入的字符逐一读入寄存器,处理器会把这个hello字符串放入内存中;

图片

第1步

(2).当完成输入,按下回车键时shell程序已经知道我们已经完成了命令的输入,然后执行一系列的指令来加载可执行文件hello。这些指令将hello中的数据和代码从磁盘复制到内存。数据就是要在屏幕上显示的“hello worldn”,这个复制的过程将利用DMA技术,数据可以不经过处理器,从磁盘直接到达内存;

图片

第2步

(3).当可执行文件hello中的代码和数据被加载到内存中,处理器就开始执行main函数中的代码。CPU会将“hello worldn”这个字符串从内存复制到寄存器文件,再从寄存器文件复制到显示设备即屏幕上;

图片

第3步

5.内存层级结构

(1).通常情况下,大容量的存储设备存取速度要比小容量的慢;运行更快设备的价格相对于运行速度慢的设备的价格要贵;

寄存器文件Register File           100~1000B
        L1 cache                     10~100KB
        L2 cache                     0.1 ~10MB
        L3 cache                     10~100MB
    内存Main Memory                   1~100GB
    磁盘Disk                          1~1000TB

(2).针对处理器和内存之间的读写速度差异,系统设计人员在寄存器文件和内存之间引入了高速缓存cache 。比较新且处理能力比较强的处理器,一般有三级高速缓存:L1 cache、L2 cache、L3 cache。L1 cache的访问速度与访问寄存器文件几乎一样快,L2 cache的访问速度是L1的5倍,L3 cache的容量更大,访问速度与L2 cache相比更慢。

图片

内存层次结构

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    7493

    浏览量

    87926
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136786
  • 计算机系统
    +关注

    关注

    0

    文章

    282

    浏览量

    24109
  • 编译器
    +关注

    关注

    1

    文章

    1634

    浏览量

    49128
  • 程序编译
    +关注

    关注

    0

    文章

    9

    浏览量

    5461
收藏 人收藏

    评论

    相关推荐

    计算机系统结构

    计算机系统结构
    发表于 05-09 19:03

    什么是计算机系统计算机硬件和计算机软件?

    第一章 计算机系统概论1. 什么是计算机系统计算机硬件和计算机软件?硬件和软件哪个更重要?解:P3计算机系统:由
    发表于 07-22 09:06

    什么是计算机系统?硬件和软件哪个更重要?

    第一章计算机系统概论1 .什么是计算机系统计算机硬件和计算机软件?硬件和软件哪个更重要?解: P3计算机系统:由
    发表于 07-26 07:18

    计算机系统中的软件系统

    专用计算机现代计算机运算速度最高可达每秒几万亿次几十亿次几亿次几万次计算机辅助制造是计算机应用领域之一其英文缩写是所谓的信息是指基本素材非数值数据数值数据处理后的数据
    发表于 09-13 07:22

    嵌入式计算机系统概述

    嵌入式计算机系统概述:定义:以应用为中心、以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统嵌入式
    发表于 12-22 06:08

    详解单芯片微型计算机系统

    什么是单芯片微型计算机系统呢?单芯片微型计算机系统是由哪些部分组成的?
    发表于 01-19 07:05

    计算机系统概论

    1.1 计算机系统简介1.2 计算机的基本组成1.3 计算机硬件的主要技术指标1.4 本书结构
    发表于 04-11 09:31 0次下载

    基于EDA平台的计算机系统结构课程实践

    基于EDA平台的计算机系统结构课程实践本文分析了计算机专业本科生课程计算机系统结构的教学现状, 结合目前在教学实践中采用的部分措施, 提出了在计算机系统
    发表于 12-05 16:08 0次下载

    微型计算机系统

             微型计算机系统与传统的计算机系统一样,也是由硬件系统和软件系统两大部分组成的。2.1
    发表于 03-03 08:31 0次下载

    计算机系统维护概述

    计算机系统维护概述 一、计算机系统维护的意义    计算机是人们经常使用操作的智能化工具,如果使用操作不当
    发表于 10-25 11:00 1776次阅读

    什么是计算机系统的容错性

    什么是计算机系统的容错性             所谓容错是指在故障存在的情况下计算机系统不失效,仍然能够正常工作的特性
    发表于 01-08 13:49 1633次阅读

    计算机系统小结

    计算机系统小结   习惯上所称的“电子计算机”是指现在广泛应用的电子数字计算机,它分为专用计算机和通用计算机两大类。专
    发表于 04-13 14:14 686次阅读

    计算机系统的硬件组织详细概述

    为了解在计算机系统中,程序是如何运行的,首先需要了解计算机系统的硬件组织。
    的头像 发表于 02-15 12:28 4262次阅读
    <b class='flag-5'>计算机系统</b>的硬件组织详细概述

    计算机系统的组成和功能

    计算机系统是一个复杂而庞大的概念,它涵盖了计算机硬件、软件以及它们之间相互作用的所有元素。为了全面而深入地探讨计算机系统,本文将从定义、组成、功能、发展历程以及未来趋势等方面进行详细阐述。
    的头像 发表于 07-24 17:41 987次阅读

    微处理器如何控制计算机系统

    微处理器,作为计算机系统的核心部件,承担着控制整个计算机系统运行的重要任务。它不仅是计算机的运算中心,还是控制中心,负责执行程序指令、处理数据以及协调计算机各部件之间的工作。以下将详细
    的头像 发表于 08-22 14:21 490次阅读