热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

华为内部面试题库(14)

1、关于虚拟地址空间的说法错误的是()A.进程地址空间是用多少分配多少,4G仅仅是最大限额B.进程的地址空间并不一定对应实际的物理页C.不

1、 关于虚拟地址空间的说法错误的是()

A.     进程地址空间是用多少分配多少,4G仅仅是最大限额

B.     进程的地址空间并不一定对应实际的物理页

C.     不同进程的不同虚拟地址可以映射到相同的物理页

D.     不同进程的相同虚拟地址不能映射到相同的物理页

解答:D

 

2、 关于mmap设备的说法,错误的是()

A.     映射一个设备,意味着使用户空间的一段地址关联到设备内存上

B.     串口设备和其他面向流的设备就可以实现mmap抽象

C.     被映射的区域必须是PAGE_SIZE的整数倍,而且必须位于起始于 PAGE_SIZE整数倍地址的物理内存内

D.     有两种建立页表的方法:使用remap_page_range函数可一次建立所有的页表,或者通过nopage VMA方法每次建立一个页表

解答:B。

   分析:对于驱动程序来说,内存映射可以提供给用户程序直接访问设备内存的能力。映射一个设备,意味着使用户空间的一段地址关联到设备内存上。无论何时,只要程序在分配的地址范围内进行读取或者写入,实际上就是对设备的访问。

   并不是所有的设备都能进行mmap抽象。例如,串口设备和其他面向流的设备就无法实现这种抽象。mmap的另一个限制是映射都是以 PAGE_SIZE为单位的。内核只能在页表一级处理虚拟地址;因此,被映射的区域必须是PAGE_SIZE的整数倍,而且必须位于起始于 PAGE_SIZE整数倍地址的物理内存内。如果区域的大小不是页大小的整数倍,内核就通过生成一个稍微大一些的区域来容纳它。

   mmap方法是file_operations结构中的一员,并且在执行mmap系统调用时就会调用该方法。在调用实际方法之前,内核会完成很多工作,而且该方法的原型与系统调用的原型由很大区别。

  文件操作声明如下:

  int (*mmap) (struct file * filp, struct vm_area_struct *vma);

  其中vma参数包含了用于访问设备的虚拟地址区间的信息。大部分工作已经由内核完成了,要实现mmap,驱动程序只要为这一地址范围构造合适的页表即可,如果需要的话,就用一个新的操作集替换vma->vm_ops。

  有两种建立页表的方法:使用remap_page_range函数可一次建立所有的页表,或者通过nopage VMA方法每次建立一个页表。

 

3、 下列说法错误的是()

A.     对于一个CPU来说,只需要有当前进程的页表,就可以实现其虚拟地址到物理地址的转化

B.     发生中断时,需要进行地址空间切换

C.     内核线程没有进程地址空间,也没有相关的内存描述符,内核线程对应的进程描述符中mm域也为空

D.     inux中实现了快表(TLB),其本质是一个缓冲器,作为一个将虚拟地址映射到物理地址的硬件缓存

解答:B。

分析:中断处理不需要切换进程空间,直接在当前进程空间进行中断处理。

 

4、 地址空间布局分布从低到高顺序正确的是()

A.     "物理内存区", "虚拟内存分配区", "高端页面映射区", "专用页面映射区", "系统保留映射区"

B.      "虚拟内存分配区","物理内存区" , "专用页面映射区","高端页面映射区", ,"系统保留映射区"

C.      "物理内存区", "高端页面映射区", "虚拟内存分配区", "专用页面映射区", "系统保留映射区"

D.     "物理内存区", "高端页面映射区", "虚拟内存分配区", "专用页面映射区", "系统保留映射区"

解答:A

分析:

1) Linux将整个4G线性地址空间分为用户空间和内核空间两部分, 而内核地址空间又被划分为"物理内存区", "虚拟内存分配区", "高端页面映射区", "专用页面映射区", "系统保留映射区"几个区域. 

2) 在标准配置下, 物理区最大长度为896M, 系统的物理内存被顺序映射在物理区中, 在支持扩展页长(PSE)和全局页面(PGE)的机器上, 物理区使用4M页面并作为全局页面来处理. 当系统物理内存大于896M时, 超过物理区的那部分内存称为高端内存, 低端内存和高端内存用highmem_start_page变量来定界, 内核在存取高端内存时必须将它们映射到"高端页面映射区". 

3) Linux保留内核空间最顶部128K区域作为保留区, 紧接保留区以下的一段区域为专用页面映射区, 它的总尺寸和每一页的用途由fixed_address枚举结构在编绎时预定义, 用__fix_to_virt(index)可获取专用区内预定义页面的逻辑地址. 在专用页面区内为每个CPU预定义了一张高端内存映射页, 用于在中断处理中高端页面的映射操作. 

4) 距离内核空间顶部32M, 长度为4M的一段区域为高端内存映射区, 它正好占用1个页帧表所表示的物理内存总量, 它可以缓冲1024个高端页面的映射. 在物理区和高端映射区之间为虚存内存分配区, 用于vmalloc()函数, 它的前部与物理区有8M隔离带, 后部与高端映射区有8K的隔离带. 

5) 当系统物理内存超过4G时, 必须使用CPU的扩展分页(PAE)模式所提供的64位页目录项才能存取到4G以上的物理内存. 在PAE模式下, 线性地址到物理地址的转换使用3级页表, 第1级页目录由线性地址的最高2位索引, 每一目录项对应1G的寻址空间, 第2级页目录项以9位索引, 每一目录项对应2M的寻址空间, 第3级页目录项以9位索引, 每一目录项对应4K的页帧. 除了页目录项所描述的物理地址扩展为36位外, 64位和32位页目录项结构没有什么区别. 在PAE模式下, 包含PSE位的中级页目录项所对应的页面从4M减少为2M. 

 

5、 关于IO与内存空间说法错误的是()

A.     I/O空间是相对于内存空间而言的,它通过特定的指令in、out来访问

B.     内存空间可以直接通过地址、指针来访问

C.     内存空间是可选的,而I/O空间是必须的

D.     I/O空间单元必须表示成大于PAGE_OFFSET的地址

解答:C。

     分析:在X86处理器中存在着I/O空间的概念,I/O空间是相对于内存空间而言的,它通过特定的指令in、out来访问。端口号标识了外设的寄存器地址。Intel语法的in、out指令格式为:
    IN 累加器, {端口号│
DX}
    OUT {端口号│DX},累加器

    目前,大多数嵌入式微控制器如ARM、PowerPC等中并不提供I/O空间,而仅存在内存空间。内存空间可以直接通过地址、指针来访问,程序和程序运行中使用的变量和其他数据都存在于内存空间中。即便是在X86处理器中,虽然提供了I/O空间,如果由我们自己设计电路板,外设仍然可以只挂接在内存空间。此时,CPU可以像访问一个内存单元那样访问外设I/O端口,而不需要设立专门的I/O指令。因此,内存空间是必须的,而I/O空间是可选的。 内核程序作用于虚拟地址,因此I/O空间单元必须表示成大于PAGE_OFFSET的地址

转:https://www.cnblogs.com/wangfengju/archive/2013/05/20/6173044.html



推荐阅读
  • 网卡工作原理及网络知识分享
    本文介绍了网卡的工作原理,包括CSMA/CD、ARP欺骗等网络知识。网卡是负责整台计算机的网络通信,没有它,计算机将成为信息孤岛。文章通过一个对话的形式,生动形象地讲述了网卡的工作原理,并介绍了集线器Hub时代的网络构成。对于想学习网络知识的读者来说,本文是一篇不错的参考资料。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • Final关键字的含义及用法详解
    本文详细介绍了Java中final关键字的含义和用法。final关键字可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。文章还讨论了final类和final方法的应用场景,以及使用final方法的两个原因:锁定方法防止修改和提高执行效率。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 在2022年,随着信息化时代的发展,手机市场上出现了越来越多的机型选择。如何挑选一部适合自己的手机成为了许多人的困扰。本文提供了一些配置及性价比较高的手机推荐,并总结了选择手机时需要考虑的因素,如性能、屏幕素质、拍照水平、充电续航、颜值质感等。不同人的需求不同,因此在预算范围内找到适合自己的手机才是最重要的。通过本文的指南和技巧,希望能够帮助读者节省选购手机的时间。 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
author-avatar
翔溢_142
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有