我对RAM内存中的段感到困惑,请澄清下面的疑惑
RAM已经被用作用户空间和内核空间;这个内存部分是由O / S完成还是由H / W(cpu)完成。
内核空间的内容是什么,据我了解只有内核映像,如果我错了,请纠正我。
这个代码,数据,堆栈和堆段在哪里存在?
Java Comm API包下载
两种情况下哪个更快?
Clang,LLVM和g ++
b)这个段是由H / W还是(O / S)创build的。
我能find内核空间和用户空间占用的内存量吗?
a)是否有任何Linux命令(或)系统调用来find这个?
为什么RAM被分成用户空间和内核空间?
a)我为了保持内核安全而不是应用程序,是否这样做?这是唯一的原因。
我是初学者,所以请给我build议一些好书,链接和方法来处理这些概念。
我可以在LXC客户操作系统上重复使用主机操作系统上的软件包
不同的Valgrind输出在不同的机器上
为什么我设置xlib窗口背景透明失败?
我接受了挑战,并尝试了相当短的答案:
执行发生在用户和内核空间。 BIOS和cpu支持OS检测和分离主存储器和设备( – > 相关问题 )等资源/地址范围,以建立保护模式。 在保护模式下,内存通过虚拟地址空间分隔,这些虚拟地址空间通过MMU(内存管理单元)映射到页面(通常是4096字节的块)到物理内存的实际地址。
从用户空间不能直接访问内存(实模式),必须通过MMU访问内存,这就像具有访问保护的透明代理一样。 访问错误被称为分段错误,访问冲突,分段违规(SIGSEGV) ,它们在高级编程语言(如Java)中被抽象为NullPointerException(NPE)。
阅读有关保护模式 , 实模式和“戒指” 。
注意:如嵌入式系统中的特殊cpu不一定具有MMU,因此可能仅限于μClinux或FreeRTOS等特殊操作系统。
内核也分配缓冲区,驱动程序也是如此(例如磁盘,网络接口和GPU的IO缓冲区)。
通常,每个空间和进程/线程都存在资源
a)内核将自己的受保护堆栈放在用户空间栈(每个线程)之上,并且还有单独的代码(也称为“文本”),数据和堆段。 另外,每个流程都有自己的资源。
b) cpu体系结构有一定的要求(取决于它提供的支持程度),但是最后是用来创建这些结构的软件(用于接口的内核和用户空间库)。
每个合理的操作系统都至少提供了一种方法。
一)尝试sudo cat /proc/slabinfo或简单地sudo slabtop
阅读1。
a)首先,是的,就像用户空间进程彼此隔离,除了特殊的技术,例如用于在新内核中快速直接访问的CMA(跨内存附加) 。
搜索推荐书籍的堆栈网站
什么会导致C ++中的分段错误?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。