游戏开发面试准备8(虚拟内存,c++ override,用户态内核态,显存内存缓存)
Posted 头号理想
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了游戏开发面试准备8(虚拟内存,c++ override,用户态内核态,显存内存缓存)相关的知识,希望对你有一定的参考价值。
1.什么是虚拟内存
如果我们打开一个占用内存远超过我们计算机本身的物理内存,因为虚拟内存的存在,我们可以使得超过物理内存的程序正常执行
虚拟内存给每个进程提供一个一致的,私有的地址空间,它让每个进程都有独自拥有主存的错觉,更加高效,减少错误
虚拟内存其实是一种计算机内存管理技术
它定义了一段连续的虚拟地址空间,并且把内存扩展到内存空间
2.c++中override关键字
可显式在派生类中声明,那些成员函数需要重写,如果没有重写编译器报错
在程序中加override 关键字,可以避免派生类中忘记重写虚函数的错误
在继承中使用,在子类中覆盖实现父类的方法
注意:如果是在派生类的虚函数写上override关键字,如果父类没有这个方法,编译器会报错
3.用户态和内核态
一般的操作系统会进行分级,大致可以保护态和内核态,用户态相对于有较低的权限,很多操作不被允许
原因:简单来说用户态出现问题,不能让操作系统出问题(崩溃)
内核态
相当于在硬件和应用层中的层,可执行任何cpu指令,可以引用任何地址
用户态
在内存分配中有一部分仅为内核态使用,用户态不能访问那些地址,
每个进程只能访问自己申请到的内存,不允许访问外部设备
执行cpu指令的时候也可能被更高优先级的抢占资源
用户态->内核态
如果用户态执行一个指令它的 权限不够,可能会转到内核态去干一些事情
1.系统调用,2.异常 3.调用外部设备
4.显存和内存
显存:
也就是显卡内存,存储即将去或者是处理之后的渲染数据
缓存
数据交换的缓存区,如果要获取一个东西,首先去缓存中去找,如果没有,再去内存中找,帮助硬件更快的运行
ESC架构 守望先锋用这一点用的就比较得心应手
内存
计算机所有的程序的运行都在内存中
5.什么是完全二叉树
首先它是一颗二叉树,加入他的节点一共有n层
那么n-1一下包括n-1 所有的节点都是满的,第n层可以不满,但是所有的节点必须靠左优先排列
以上是关于游戏开发面试准备8(虚拟内存,c++ override,用户态内核态,显存内存缓存)的主要内容,如果未能解决你的问题,请参考以下文章