栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

深入理解计算机系统:第一章:计算机系统漫游

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

深入理解计算机系统:第一章:计算机系统漫游

文章目录
    • 一、阅读目的
    • 二、编译系统的过程简介
      • 1)预处理
      • 2)编译
      • 3)汇编
      • 4)链接
    • 三、简单介绍hello程序在CPU中的运行
    • 四、内存速度和容量对比
    • 五、硬件和软件简略介绍图
    • 六、虚拟机、进程、虚拟内存和文件的抽象关系
    • 七、linux系统中进程的虚拟地址空间
    • 八、如何获得更高的计算能力
      • 1)线程级并发Thread-Level Concurrency
      • 2)指令级并发Instruction-Level Parallelism
      • 3)单指令多数据并行Single-Instruction Multiple-Data Parallelism

一、阅读目的

1)通过研究"hello,wolrd“ 这个简单程序的生命周期,介绍计算机系统的主要概念和主题

二、编译系统的过程简介 1)预处理

hello.c 经过预处理 ->得到hello.i ,hello.i任然是一个文本文件

2)编译

编译器将hello.i文件翻译成hello.s文件,编译这一阶段包括词法分析、语法分析、语义分析、中间代码生成以及优化等等一系列中间操作

3)汇编

汇编器根据CPU指令集将汇编程序hello.s翻译成机器指令,并且按照固定的规则把这一系列的机器指令打包,得到可重定位目标文件hello.o(二进制文件)

4)链接

链接器(ld)负责将各种.o文件按照一定的规则合并(正是因为链接器要对hello.o和printf.o文件进行调整合并,所以hello.o才会被称之为可重定位文件),最终经过链接阶段可以得到可执行目标文件,此时得到的helllo就可以被加载到内存中执行了

三、简单介绍hello程序在CPU中的运行
  • PC
    PC在电脑CPU中是以一个字word来存储,在32位中,一个字是4个字节;在64位中,一个字是8个字节;里面存放的是某一条指令的地址,

  • 寄存器文件(register file)
    可以理解为临时存放数据的空间

四、内存速度和容量对比

五、硬件和软件简略介绍图

六、虚拟机、进程、虚拟内存和文件的抽象关系

七、linux系统中进程的虚拟地址空间
  • 空间地址:
    从0到2的48次方-1

  • 数据段和代码段
    分别为:只读的数据段和代码段 和 数据段和代码段
    来源:从可执行目标文件中加载而来的
    补充:①读写数据的区别在C语言中就是存放一些例如全局变量的数据

  • 堆空间heap
    malloc申请时就会申请这里的空间

  • 共享库的存放空间
    作用:主要存放像C语言的标准库和数学库这种共享库的代码和数据

  • 用户栈空间
    函数调用的本质就是压栈,栈就会增长,从高地址到低地址

  • 内核保护区域
    应用程序代码不能读写这个区域的数据

  • 总体概念图

八、如何获得更高的计算能力 1)线程级并发Thread-Level Concurrency 2)指令级并发Instruction-Level Parallelism 3)单指令多数据并行Single-Instruction Multiple-Data Parallelism
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/692014.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号