美文网首页
基础知识

基础知识

作者: const_qiu | 来源:发表于2020-09-04 17:02 被阅读0次
  • 程序的生成过程:
    预处理:#define,include
    编译:生成汇编语言程序
    汇编:生成机器代码
    链接:动态链接(程序加载进内存的时候)、静态链接

  • 为什么要内存对齐?
    内存是以字节为单位,但是处理器并不会按照一个字节为单位去存取内存。它一般会以双字节,四字节,8字节,16字节甚至32字节为单位来存取内存,我们将上述这些存取单位称为内存存取粒度。对于现代计算机硬件来说,内存只能通过特定的对齐地址(比如按照机器字)进行访问。举个例子来说,比如在64位的机器上,不管我们是要读取第0个字节还是要读取第1个字节,在硬件上传输的信号都是一样的。因为它都会把地址0到地址7,这8个字节全部读到CPU,只是当我们是需要读取第0个字节时,丢掉后面7个字节,当我们是需要读取第1个字节,丢掉第1个和后面6个字节。
    假如没有使用内存对齐:
    一个整型变量(4 字节),他可以按照任意的起始地址存放,假设现在有一块内存单元:地址从 0~7. 这个整型变量从 地址为 1 的位置开始占据了 1,2,3,4 这 4 个字节. 现在处理器需要读取这个整型变量.由于处理器是 4 字节 4 字节的读取,所以从 0 开始读读取 0,1,2,3发现并没有读完整这个变量,那么需要再读一次,读取 4,5,6,7. 然后对两次读取的结果进行处理,提取出 1,2,3,4 地址的内容.
    当我们要读取的字节刚好落在两个机器字内时,就出现两次访问内存的情况,同时通过一些逻辑计算才能得到最终的结果。因此,为了更好的提升性能,我们须尽量将结构体做到机器字(或倍数)对齐,而结构体中一些频繁访问的字段也尽量安排在机器字对齐的位置。

  • 虚拟地址空间的内存结构


    虚拟地址空间的内存结构

    代码区:存放CPU执行的机器指令,代码区是可共享,并且是只读的。
    数据区:存放已初始化的全局变量(非零)、静态变量(非零)(全局和局部)、常量数据。
    BBS区:存放的是未初始化的全局变量和静态变量。
    栈区:由编译器自动分配释放,存放函数的参数值、返回值和局部变量,在程序运行过程中实时分配和释放,栈区由操作系统自动管理,无须程序员手动管理。
    堆区:堆是由malloc()函数分配的内存块,使用free()函数来释放内存,堆的申请释放工作由程序员控制,容易产生内存泄漏。

  • 进程间通信
    消息
    共享内存
    管道
    死锁的四个必要条件
    互斥条件:一个资源每次只能被一个进程访问
    请求与保持条件:一个进程因请求而阻塞时,对已有的资源保持不放
    不可剥夺条件:进程已获得的资源在使用完之前不可强行的剥夺
    循环等待条件:若干进程之间形成首尾相接的循环等待资源的关系

相关文章

  • 音频基础知识02

     音频基础知识 01  音频基础知识 02  音频基础知识 03  音频基础知识 04 人类收集声音的历史   为...

  • PHP全栈学习笔记18

    php基础知识,JavaScript,jQuery,ajax基础知识 linux基础知识,mysql数据库的基础与...

  • PHP全栈学习笔记18

    php基础知识,JavaScript,jQuery,ajax基础知识 linux基础知识,mysql数据库的基础与...

  • C语言回顾

    基础知识 控制流 基础知识补充 其他主题

  • PHP面试知识脉络(更新中)

    PHP基础知识Javascript、jQuery、ajax基础知识Linux基础知识MySQL数据库的基础与优化程...

  • p2p理财基础知识

    p2p理财基础知识 p2p理财基础知识 p2p理财基础知识

  • 学习Vue框架之前,要有JavaScript的知识储备

    前端三剑客知识储备(有关前端的专题) ☑ HTML基础知识 ☑ CSS基础知识 ☑ JavaScript5基础知识...

  • angular笔记

    第一部分、基础知识--------------------------基础知识------------------...

  • 【学习】其他框架

    Zookeeper Zookeeper基础知识Zookeeper综合知识 HDFS HDFS基础知识 NoSQl ...

  • Python3基础知识

    Python3基础知识 | 基础语法 Python3基础知识 | 编程第一步 Python3基础知识 | 基本数据...

网友评论

      本文标题:基础知识

      本文链接:https://www.haomeiwen.com/subject/dlttektx.html