美文网首页
课后问题汇总

课后问题汇总

作者: 牛牛_735d | 来源:发表于2019-08-05 16:12 被阅读0次

    一、图灵机和冯.诺依曼机是不同的计算机吗?

    简单来说: 图灵机更侧重于计算抽象、后者更侧重于硬件抽象
    

    二、time指令的返回分表代表什么?

    real time: 时钟时间(Wall clock time), 进从开始到结束所用的实际时间、包括其它进程使用的时间片和等待io完成的时间
    
    user time: 指进程执行用户态代码(核心之外)使用的时间、执行此进程实际消耗的CPU时间、其它进程和此进程阻塞时间不包含在内
    
    sys time: 指进程在内核态消耗的cpu时间
    
    为什么user+sys > real ?
    1. user + sys 为实际的CPU时间、若有多个线程、则可能出现、user+sys包含子进程的时间
    2. 在多处理器系统上、可能出现、因为多进程或者线程可并行处理
    3. time的输出是由几个不同的系统调用得到的
    user time和sys time是从wait(2) 或 time(2) 得到的(根据系统不同决定)
    real time是从 ge't'timeofday中结束时间和起始时间相减得到
    

    三、时钟周期是什么

    
    

    四、为什么程序无法在linux和win下同时运行?

    因为两个系统下的可执行文件的格式不同

    -g 得到的是目标文件
    -o 得到的是可执行文件
    
    c -> 汇编 -> 机器码
    c->汇编: 编译、汇编、链接 3部分组成
    汇编-> 机器码: 通过装载器Loader把可执行文件Load到内存中、CPU从内存读取指令和数据、开始真正的执行程序
    
    目标文件和可执行文件dump得到的内容差不多、因为linux下、都是使用elf(executable and linkable file format)的格式
    
    
    image.png
    image.png
    ELF 文件格式信息:
    1. text Section: 代码段 用来保存程序的代码和指令
    2. .data Section: 数据段 用来保存程序里边设置好的初始化数据信息
    3. .rel.text Section: 重定向表Relocation Table 保留的是当前文件里、哪些跳转地址是未知的
    4. .symtab Section: 符号表 保留了当前文件里定义的函数和对应的地址信息
    连接器会扫描所有的输入目标文件、把所有符号表里的信息收集起来、构成一个全局的符号表、把所有不确定要跳转地址的代码、根据符号表里存储的地址、进行一次修正, 最后 把所有的目标文件的对应段进行一次合并、变成了最终的可执行代码
    

    五、java这样使用虚拟机的编程语言里、程序是如何装载到内存的 ?

    jvm是上层应用、无需考虑物理分页、一般是直接考虑对象本身的空间大小、物理硬件统一管理由承载jvm的操作系统来解决
    

    六、CPU一直在取下一条指令、为什么还有满载和idle空闲状态呢?

    
    

    相关文章

      网友评论

          本文标题:课后问题汇总

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