• QA26\28


    #QA26

    关于Intel core i7处理器

    I7
    CPU的VA:48

    PA:52位,

    VPO:12

    PPO:12

    VPN:36

    PPN:40

    采用4级页表

    其页表项数依次为

    L1 PT:每个条目512GB区域

    L2 PT:每个条目1GB区域

    L3 PT:每个条目2MB区域

    L4 PT:每个条目512GB区域

    页表空间为5*512字节

    每一页表项占5字节(40位)。

    TLB采用Cache类型16组,TLB-D1为4路64条,

    则其TLBI4 位,TLBT32位。

    CacheD1为8路32K,则其64组,Block为64字节,tag为40位。

    PA中CT/CI/CO依次为40、6、6位。

    页表物理基地址为40位,5byte

    Linux的VM机制对私有写时复制对象是怎么处理的?

    由于内存映射机制,所以一个磁盘文件对象可以被多个进程共享访问,也可以被多个进程对象私有访问。如果是共享访问,那么一个进程对这个对象的修改会显示到其他进程。如果是私有访问,内核会采用写时拷贝copy on write的方式,如果一个进程要修改一个私有的写时拷贝的对象,会产生一个保护故障,内核会拷贝这个私有对象,写进程会在新的私有对象上修改,其他进程仍指向原来的私有对象。

    execve时当前进程哪些区域是请求二进制零的匿名文件映射?

    execve函数在当前的进程中加载并运行包含在可执行目标文件a.out中的程序,用a.out程序有效的替代了当前程序。加载并运行a.out需要以下几个步骤:

    删除已存在的用户区域:删除当前进程虚拟地址的用户部分中的已存在的区域结构。
    映射私有区域:为新程序的文本,数据,bss,和栈区创建新的区域结构。所有这些新的区域都是私有的,写时拷贝的。文本和数据区域被映射为a.out文件中的文本和数据区。bss区域是请求二进制零的,映射到匿名文件,其大小包含在a.out中。栈和堆区域也是请求二进制零的,初始长度为0.

    映射共享区域:如果a.out程序和共享对象(或目标)链接,比如标准C库libc.so,那么这些对象都是动态链接到这个程序的,然后在映射到用户虚拟地址空间中的共享区域内。
    设置程序计数器(PC):exevce做的最后一件事情就是设置当前进程上下文中的程序计数器,使之指向文本区域的入口点。


    QA28

    垃圾回收时堆使用的内存有向图的根节点有哪几种类型?

    根节点对应于这样一种不在堆中的位置,它们中包含指向堆中的指针。这些位置可以是寄存器、栈里的变量,或者是虚拟内存中读写数据区域内的全局变量。

    按照有向图与标记清除方法,所有的垃圾都可以回收?举例

    非也

    C程序的Mark&Sweep收集器必须是保守的,其根本原因是C语言不会用类型信息来标记内存位置。因此,像int或者float 这样的标量可以伪装成指针。例如,假设某个可达的已分配块在它的有效载荷中包含一个int,其值碰巧对应于某个其他已分配块b的有效载荷中的一个地址。对收集器而言,是没有办法推断出这个数据实际上是int而不是指针。因此,分配器必须保守地将块b标记为可达,尽管事实上它可能是不可达的。

    除了CPU与RAM,计算机还有啥呀?

    主板、电源、硬盘(ROM)、光驱、显卡(GPU)、网卡(网络设备)、声卡、调制解调器、软驱(老式电脑)、散热器、显示器、键盘、鼠标(输入输出设备)

    CPU、存储器、所有的接口等是否都可以集成到一个芯片里?

    单片机可以把微处理器、存储器和I/O接口电路等制作在一块集成电路芯片上

    删去了有关CS:APP第十章的内容

  • 相关阅读:
    机器学习的实用程序
    【scikit-learn基础】--『监督学习』之 支持向量机分类
    产品工作流| 项目评估
    kubernetes之常用核心资源对象
    嵌入式学习笔记(30)S5PV210的中断体系介绍
    8.神经元和需求预测
    小程序常用组件小结
    PAT数字&字符串处理
    Java 基础实战—Bank 项目—实验题目
    用递归实现字符串逆序(不使用库函数)
  • 原文地址:https://blog.csdn.net/qq_53281219/article/details/125509379