腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
视频
沙龙
2
回答
在exec.c内核源代码中,这个空函数声明的用途是什么?
、
我在Linux内核文件exec.c中看到了一些空函数: http://lxr.free-electrons.com/source/fs/exec.c#L235 但是,像free_arg_pages这样的函数在这里再次声明(使用相同的原型):http://lxr.free-electrons.com/source/fs/exec.c#L322 我想知道为什么我们有空函数和填充函数的相同的原型?
浏览 0
提问于2015-10-20
得票数 2
回答已采纳
3
回答
在Linux中启用MMU
、
、
在ARM Linux中,到底在哪个点启用了mmu。ie,在哪个文件中(汇编文件或arch/arm/内核/setup.c中的paging_init() ) ARM linux是否支持不分页地运行。 提前谢谢。
浏览 1
提问于2012-04-03
得票数 2
1
回答
在ARMv7的上下文中,当mmu必须执行页表转换时,Linux内核一对一映射内存的优点是什么?
、
、
、
Linux内核虚拟地址是一对一映射的.因此,通过将一个PAGE_OFFSET减去虚拟地址,我们将得到物理地址。这就是和是如何在中实现的。 我的问题是,这些一对一的映射在armv7 mmu上的优势是什么?当存在TLB缺失时,mmu必须执行页面表转换? 单对一映射的唯一优势是S/W只需减去PAGE_OFFSET即可直接获得各自虚拟地址的物理地址,还是ARMV7 MMU页面转换还有其他优势? 如果与mmu页表转换相比,1:1映射内存没有优势,那么为什么我们需要1:1映射内存的页表。我的意思是,mmu可以以类似virt_to_phys的方式执行操作,而不是遍历所有的页表。
浏览 3
提问于2015-10-25
得票数 3
回答已采纳
1
回答
如何在ARM64 Linux中创建1:1MMU映射?
、
、
、
我试着关掉MMU运行一些测试代码。我需要为MMU关闭后运行的代码创建精确的1:1虚拟内存映射。 --一个家伙描述了用程序集代码创建这样一个映射的方法,但是当他创建映射时,系统似乎没有功能。 我的问题是: 是否可以创建1:1的MMU映射,让linux功能(测试映射和用devmem文件加载测试代码)?,如果可能的话,创建它的最佳选择是什么?
浏览 7
提问于2021-03-14
得票数 0
1
回答
我们能在核子stm32F429zi板上运行Linux吗?
、
、
我知道stm32nucleoF429zi没有硬件MMU,但是我们可以从Linux内核配置选项中禁用MMU选项。 如果我们这样做了,为什么我们不能在stm32 F429zi上运行Linux呢?为什么我们只能运行uCLinux?如果我们禁用Linux内核配置中的MMU,为什么uCLinux可以运行,但是Linux不能运行呢?
浏览 0
提问于2020-08-05
得票数 3
1
回答
Linux页表
、
、
、
、
在Linux中,有一些函数,如pgd_offset、pmd_offset和pte_offset,用于对pgd、pmd和pte进行索引。谁叫这些功能?MMU是否使用这些函数来遍历页面表? 我的理解是,linux内核为每个进程创建一个页面表,并将页面表的基本地址传递给页面表基寄存器,以便MMU能够访问它。之后MMU是如何读取页面表的?如果MMU是读取页面表的人,那么谁使用这些pgd_offset等函数?
浏览 2
提问于2016-09-24
得票数 0
2
回答
如何在__turn_mmu_on阶段后调试Linux内核启动过程?
、
、
、
、
我正在尝试启动安卓4.0.1 (冰淇淋三明治),基于Linux内核3.0.1在自定义硬件上。 我能够调试Linux Kernel 3.0.1的引导过程,直到在head.S中定义的__enable_mmu函数,使用串口。 但是一旦执行了__turn_mmu_on功能,我就无法调试引导过程。 我研究过linux-arm-kernel邮件列表归档&我尝试过他们的printascii()工作。但在__turn_mmu_on之后,我仍然无法在串行控制台上看到任何启动日志。 在这里,我能够在__turn_mmu_on之前获得日志,所以我的串行控制台端口工作正常。 还有一件事-我没有JTAG。 谁能
浏览 5
提问于2012-09-24
得票数 0
1
回答
如何在没有操作系统的情况下运行四臂的核心?
、
、
我使用的是四核ARM CPU,我想知道是否可以在Linux中运行3个内核,以及一个没有Linux的内核运行?
浏览 0
提问于2019-04-08
得票数 2
1
回答
何时将进程的页表加载到内存中?
、
、
我想知道操作系统何时将特定进程的页表加载到主内存中?是在进程被调度的时候吗?操作系统能够直接将进程页表加载到主存中吗? 我有一个想法:除非处理器生成对应于页面的页面错误,否则任何东西都不会进入主内存。同样的情况也适用于页表吗?或者我的想法是错误的。 PS:如果答案可以具体针对基于Linux的系统,我们会非常感激的。
浏览 0
提问于2016-07-19
得票数 1
2
回答
在x86 CR3的SPARC架构中,对应的寄存器是什么?
、
、
、
、
我知道在x86架构中,我可以读取内核上下文中的CR3寄存器来跟随内核的页面目录。 现在,我正尝试在采用SPARC架构的linux上做同样的工作。如何在SPARC中访问内核的页面目录? 在SPARC中,作为x86 CR3的对应寄存器是什么? 它们的寻呼机制是否相同?? ps。ARM呢?我有一些关于这些的文件,但我需要更多...提前谢谢你。
浏览 2
提问于2012-07-31
得票数 0
回答已采纳
2
回答
在Linux内核中,内存读写和执行权限是如何强制执行的?
、
一个系统如何能够限制进程能够写入内存集的区域-只读?特别是,假设硬件是而不能为内核执行这些权限,Linux内核如何执行这些权限? 我最初的猜测是,这些内存区域没有映射到进程的地址空间,因此每当进程尝试访问这些内存区域时,都会生成一个页面错误,这使得内核能够控制所有事务是否正常。我意识到这可能会大大降低性能,所以我在这里寻求帮助,了解是否有一种更聪明的方法来强制执行这些权限。
浏览 4
提问于2015-07-23
得票数 2
回答已采纳
2
回答
PROT_READ和PROT_WRITE在保护作用下的行为
、
我一直在尝试使用mprotect来反对首先阅读,然后写作。 这是我的密码 #include <sys/types.h> #include <sys/mman.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(void) { int pagesize = sysconf(_SC_PAGE_SIZE); int *a; if (posix_memalign((void**)&a, pagesize, sizeof(
浏览 2
提问于2013-09-16
得票数 7
回答已采纳
1
回答
如果MMU已经有一个页面表,为什么操作系统需要一个页面表呢?
、
我对操作系统和MMU在虚拟内存管理中的界线感到困惑。 如果MMU负责将虚拟地址转换为物理地址,并且有一个内部页面表,那么操作系统为什么也需要一个页面表呢?
浏览 0
提问于2019-11-22
得票数 5
回答已采纳
2
回答
Linux内核代码覆盖率- GCOV
、
、
、
、
我正在尝试使用的一些测试场景并获取。 我是用GCOV/LCOV来这么做的。 到目前为止,我拥有的东西如下: 构建配置中的GCOV标志 基于GCOV的内核剖析 CONFIG_GCOV_KERNEL=y CONFIG_GCOV_PROFILE_ALL=y Linux内核版本: 2.6.32.60+drm33.26 构建内核后,源文件夹中有所有的.gcov文件 当我使用源文件作为输入时,GCOV/LCOV工作 我应该拥有但我没有的东西 /Proc/GCOV文件夹 GCOV内核模块(gcov.o?) 现在,我想要的是运行测试场景,并使用LCOV获取L
浏览 21
提问于2012-12-04
得票数 5
1
回答
如何在ARMv8的不同内核上同时运行多个操作系统
、
、
、
、
我有一个基于ARM Cortex-A53的嵌入式系统,它有4个内核。它不是用ARM TrustZone实现的。 是否可以同时运行以下操作系统? Core0:某种类型的RTOS Core1:某种类型的RTOS Core2和Core3: Linux 它们都使用一些共享内存空间来交换数据。 在将映像(单片RTOS和Linux内核)加载到DDR之前的引导序列由外部芯片处理。 我是否需要使用虚拟机管理程序,或者只是将所有核心视为独立的逻辑CPU? 我不熟悉ARMv8,我是否应该在设置MMU、GIC等方面多加注意?
浏览 15
提问于2021-06-04
得票数 0
1
回答
内核虚拟地址的直接映射
、
我已经读过如果Linux内核虚拟地址在0xC0000000和(0xC0000000 + 896MB)之间。该映射被定向到物理地址。 也就是说,如果RAM为0x80000000。它直接映射到0xC0000000。 这是如何在Linux中实现的。是否有人告诉MMU每次虚拟地址在0xC0000000和(0xC0000000 + 896MB)之间时减去偏移量
浏览 1
提问于2014-07-08
得票数 0
1
回答
ARM MMU在不同运行模式下的运行
、
、
在我提出问题之前,我会先把我对这个话题的理解, Linux内核模式对应于ARM监控器mode.Linux用户模式对应于ARM用户Mode.In 内核模式 (MMU已启用),Linux使用相对地址代替物理地址。例如,物理地址=相对地址- PAGE_OFFSET +用户模式 (MMU已启用),Linux使用虚拟地址代替物理地址。使用pte、pmd、pgd的物理地址= MMU转换(虚拟地址) 问题: 是在监控程序模式下启用的(对于内核地址)。如果启用了,那么这是否意味着在翻译监控程序模式和用户模式时,相同的MMU以不同的方式工作。如果MMU以不同的方式在不同的模式下工作,请给我指示MMU的功能是如何
浏览 3
提问于2012-04-03
得票数 4
1
回答
Linux页面表管理与MMU
、
、
、
我有一个关于linux内核和MMU之间的关系的问题。现在我明白了,linux内核管理虚拟内存地址和物理内存地址之间的页表。同时,在x86体系结构中存在MMU,它管理虚拟内存地址和物理内存地址之间的页表。如果MMU出现在CPU附近,内核还需要处理页面表吗? 这个问题可能很愚蠢,但另一个问题是,如果MMU负责内存空间,谁来管理高内存和低内存?我相信内核将从MMU (32位中的4GB)接收虚拟内存的大小,然后内核将区分虚拟地址中的用户空间和内核空间。我说的对吗?还是完全错了? 提前谢谢!
浏览 3
提问于2014-09-24
得票数 10
回答已采纳
2
回答
如何在linux内核中触发页面错误?
、
我理解linux内核实现了需求分页--页面在第一次访问之前是不会分配的。这都是在页面错误处理程序中处理的。但我不明白的是,页面错误是如何触发的?更确切地说,是什么触发了页面错误处理程序的调用?是硬件的吗?
浏览 2
提问于2014-01-30
得票数 1
回答已采纳
1
回答
linux内核是否使用虚拟内存(用于其数据)?
、
、
linux内核是否为其数据结构(页表、描述符等)使用虚拟内存?更具体而言: 内核空间地址是否在MMU (可分页步行)中被翻译? 内核内存会被交换掉吗? 内存对内核数据结构的访问会导致页面错误吗? linux和其他unix在这方面有区别吗?
浏览 0
提问于2021-11-19
得票数 9
回答已采纳
1
回答
Linux分页模型是一种抽象吗?
、
、
、
、
我目前正在阅读理解Linux内核第三版的,我正在阅读关于内存寻址的第2章。首先,这本书涵盖了32位分页、PAE 32位和PSE (我们在这里讨论的是x86 )。更具体地说,线性地址的剖析和什么位是什么表,偏移等.我开始对Linux中的分页模型感到困惑。有一次,这本书谈到了目录、表和偏移位的线性地址(用于PAE的PDPT表),然后我被抛到了"Linux“分页的世界里。现在,在Linux分页中,他们谈到了带有表和偏移量的全局表、上层表和中间表?我不认为x86 MMU分页与这个新的Linux模型有什么关系。如果MMU负责转换(分页)地址,为什么内核也需要这个分页模型?看起来内核应该把它留给M
浏览 9
提问于2022-02-05
得票数 2
回答已采纳
1
回答
在x64上,Linux内核如何访问数据段?它在编译期间使用-mcmodel=large吗?
、
、
、
我正在从头开始编写一个最小的x86-64内核,并且我遇到了一些设计问题。 根据斯塔克提供的评论和链接,我决定重新表述我的问题。我想以Linux内核为例来设计我自己的内核,并希望得到一些建议。 我知道,在编译C++代码时,它将默认使用RIP相对寻址来访问可执行文件的数据段(对于所有全局/静态变量)。RIP相对寻址仅限于32位偏移量,这使得代码段最大偏移量为2GB。 我还知道(从斯塔克的评论中),Linux内核从0xffff_ffff_8000_0000 ()开始其代码段: ffffffff80000000 | -2 GB | ffffffff9fffffff | 512 MB | k
浏览 13
提问于2022-01-07
得票数 0
回答已采纳
1
回答
嵌入式系统中的虚拟内存和内存管理单元混淆
、
、
、
、
这有意义吗?或者,如果不运行任何类型的操作系统,我们可以从微控制器上的MMU (内存管理单元)中获益吗? 以beaglebone板上使用的基于ARM Cortex A8的芯片为例,它包含一个内存管理单元。据我所知,这提供了好处,可以让我们运行嵌入式Linux或其他一些操作系统。 我的困惑是,如果我们不使用操作系统,MMU对我们有多大的用处?据我所知,虚拟内存是一种由硬件和软件共同提供的内存管理技术。我们是否需要操作系统不断更新和更改物理地址到虚拟地址的映射,或者这只能在硬件中完成?提前谢谢。
浏览 8
提问于2018-04-19
得票数 2
1
回答
linux ld -Ttext无法生成具有正确组织的可执行文件
、
、
、
我正在开发一个32位保护模式内核。我正在尝试生成文本区域从0x100000开始的代码。我发出以下命令:= ld -melf_i386 $(OBJS)-o内核-Ttext 0x100000 当我检查生成的32位ELF文件时,我希望e_entry是0x100000。然而,它不是,这是我的问题,因为我不确定为什么。内核有一部分是用nasm编写的,正在64位linux上编译,目标是32位ELF。由上面的ld命令生成的实际e_entry值是0x116D5A。我想知道这是否与我需要的一些编译器选项有关,比如-fpic,或者与nasm生成的代码不兼容,或者ld中可能有一个bug?有没有人能帮帮忙。谢谢 需要
浏览 0
提问于2013-03-20
得票数 0
1
回答
最初的unix内核是如何嵌入内存的?
、
今天,几乎所有内核都使用MMU提供的虚拟内存。它们使用全局页表(其地址位于CPU寄存器中)和页监控器/页映射程序来实现这一点。例如,vmlinuz中的"vm“意味着linux内核支持虚拟内存。 这一切都是可能的,因为MMU将连续的内存地址映射到x86体系结构所理解的内存段。 最初的UNIX内核确实有一个vmunix版本,我相信它一定使用了类似的技术。然而,最初的UNIX内核是在MMU可用之前编写的。如果我没有弄错的话,最初的UNIX内核(简称unix)是在x86体系结构存在之前编写的。从历史上看,它确实运行在PDP-9和PDP-11上。 内核是如何执行内存寻址和管理的?是基于段的寻址(
浏览 0
提问于2016-12-25
得票数 5
回答已采纳
1
回答
Linux内核使TLB条目无效
、
、
、
在linux内核中,我编写了类似于copy_page_range (mm/Memy.c)的代码,因此通过优化将内存从一个进程复制到另一个进程。目标地址和源地址可以被PAGE_SIZE抵消,而COW仍然有效。但是,我注意到,在用户程序中,当我从同一个源地址复制到不同的目标地址时,TLB似乎没有被正确地刷新。在较高级别上,我的用户级代码执行以下操作(我一次在机器上复制一个页面,0x1000个字节): SRC=0x20000000 page1).Syscall (调用关联页将复制到目标进程中的0x30000000中)。现在,src进程地址0x20000000和目标进程地址0x30000000指向与S
浏览 11
提问于2011-12-05
得票数 7
回答已采纳
1
回答
为什么不能从用户空间访问/更改GPIO?
、
、
这可能被视为一个天真的问题。 我已经习惯了裸金属编程,为了在GPIO中写入,我手动更改了寄存器值。相反,当我需要信息时,我会读取相同的寄存器。 我最近转向了嵌入式linux。我曾经说过,现在处理GPIO不能通过运行在用户空间中的代码来完成。**我可以想象,这可能是出于某种安全/理智的原因,但我看不到它。为什么不能在GPIO中从用户空间进行代码的读写?是一个很好的例子,说明这个问题可能引起的问题。 **我知道库/API使您能够从用户空间处理GPIO,并且我正在学习使用它们。我的问题纯粹是出于好奇。
浏览 3
提问于2020-09-29
得票数 0
回答已采纳
2
回答
ARM Linux页面表布局
、
、
、
、
我读过多篇关于这个主题的文章,包括下面的文章,但我仍然不太清楚: ARM硬件在L1转换表中有4字节的4096个条目。每个条目在内存中转换一个1MB的区域。在第二级,它有256个条目,每个条目有4个字节。每个二级条目在内存中翻译一个4KB的页面。因此,根据这一点,任何虚拟地址都必须划分为12-8-12才能映射到上述方案。 但是在32位ARM linux方面,这个部门是11-9-12。其中,L1转换表由2048个条目组成,每个条目为8个字节。在这里,两个4个字节的条目被合并在一起,并且在内存中一个一个地排列出指向的第二级转换表,这样在第二级而不是256个级别上就有512个条目。此外,由于Lin
浏览 0
提问于2016-07-13
得票数 3
回答已采纳
2
回答
为什么不编辑.config内核配置文件?
、
、
# Automatically generated file; DO NOT EDIT 位于内核配置文件的头部:/usr/src/linux/..config 我的问题是你为什么不编辑这个文件?如果我确切知道我需要什么,或者我想删除什么,那么直接编辑这个文件有什么问题呢?
浏览 0
提问于2014-10-25
得票数 3
回答已采纳
1
回答
如何使用gdb转储ARM协处理器寄存器?
、
、
有没有办法从gdb中转储ARM的协处理器寄存器(特别是CP15 sctlr)?我使用代码的工具链-sourcery (arm-none- linux -gnueabi-)和调试运行在QEMU上的linux。 一种方法是在mcr/mrc指令之前/之后转储已使用的探地雷达。还有别的办法吗?
浏览 11
提问于2011-12-24
得票数 4
2
回答
关于内存分配,C malloc/calloc依赖于Linux /malloc还是相反?
、
、
据我所知,C具有以下函数,例如:malloc、calloc、realloc,用于分配内存。而linux内核还具有以下功能:malloc、mmap、kmalloc、vmalloc.分配内存 我想知道哪一个是最低的。如果你说"Linux内核是最低的函数,你的C程序必须用Linux内核分配内存“,那么Linux内核如何分配它自己的内存呢? 或者说,"Linux内核是最低的函数“,那么当我编写一个C程序并在Linux系统中运行时,为了分配内存,我应该通过系统调用。 希望能得到答案。
浏览 1
提问于2022-03-19
得票数 -1
回答已采纳
2
回答
MMU在Unix/Linux内核中吗?或者仅仅是在一个有自己内存的硬件设备中?
、
、
所以我一直认为MMU是unix内核的一部分,它将地址转换成物理地址,但是在MMU wiki页面中,它说它是一种计算机硬件,通常有自己的内存,但是这个页面并没有过多地谈到Unix/Linux操作系统。 所以我很困惑,是不是所有的翻译都发生在硬件上,而内核不进行任何翻译呢?操作系统根本不知道真实的物理地址? 我问的是基于Unix的操作系统,但是如果您知道其他操作系统,比如windows,或者它是否是现代计算机中的一个通用产品,请告诉我,谢谢。
浏览 0
提问于2018-10-04
得票数 12
回答已采纳
3
回答
在ARM Cortex-R4上运行无MMU Linux
、
、
、
、
我的系统使用的是ARM Cortex-R4。它有一个内存保护单元,而不是内存管理单元。实际上,这意味着有专门的硬件用于内存保护,但物理地址和虚拟地址之间存在一对一的映射。我有点困惑于我应该选择哪种Linux --标准的Linux内核禁用了内存管理单元还是uCLinux。 在ARM的评估板上,我已经运行了禁用MMU编译的标准内核。我使用了ARM官方网站上提供的cramfs文件系统。内核启动后,我在shell中,但我不能做太多的实验,因为我发现,大多数时候,shell停止响应(特别是当我按下"tab“进行自动完成时)。 因此,如果我使用正确的文件系统,我仍然不确定无MMU的内核是否应该顺利
浏览 1
提问于2012-05-18
得票数 8
1
回答
即使禁用了d-cache,为什么DMB屏障仍然是必要的?
、
、
、
我正在阅读内核源代码(版本,5.9),并在$(Kernel_root)/arch/arm64 64/内核/Head.S中有一个问题。 有一个函数SYM_FUNC_START_LOCAL(__create_page_tables)和一些代码: adr_l x6, vabits_actual str x5, [x6] dmb sy dc ivac, x6 它从运行平台读取受支持的VA_BITS,并将值存储到vabits_actua中。我取消了相应的d-缓存行的失效,因为陈旧的数据会影响以后启用d-cache时的意外行为。 在此代码中,字符串代码和d-缓存行无效代码的顺序与D
浏览 5
提问于2020-11-15
得票数 2
2
回答
线程的默认堆栈大小
、
据我所知,Linux上的线程的默认堆栈大小是16K。我在我的64位Ubuntu安装上得到了奇怪的结果。 $ ulimit -s 8192 另外: pthread_attr_init(&attr); pthread_attr_getstacksize(&attr, &stacksize); printf("Thread stack size = %d bytes \n", stacksize); Prints Thread stack size = 8388608 bytes 我很确定堆栈的大小不是"8388608“。有什么不对的?
浏览 0
提问于2014-05-02
得票数 36
回答已采纳
4
回答
什么时候交换移回物理内存?
、
、
什么时候交换移回到Linux中的物理内存?它是按需的吗?什么时候需要?或者,当计算机负载不高时,交换会慢慢转移到物理内存中吗?
浏览 0
提问于2010-06-23
得票数 8
回答已采纳
2
回答
结构,该结构包含相互认识的字段。
我有一套需要相互了解才能合作的对象。这些对象存储在容器中。我试图得到一个非常简单的想法,如何用Rust构建我的代码。 让我们用一个比喻。Computer包含: 1个Mmu 1个Ram 1个Processor 在锈病中: struct Computer { mmu: Mmu, ram: Ram, cpu: Cpu, } 要想正常工作,Cpu需要了解它链接到的Mmu,而Mmu需要知道它链接到的Ram。 我做了,而不是,希望Cpu按Mmu值进行聚合。他们的寿命各不相同:Mmu可以自己过自己的生活。碰巧我可以把它插到Cpu上。但是,如果没有附加一个
浏览 6
提问于2015-01-23
得票数 5
回答已采纳
1
回答
如何从Linux访问Xilinx?
、
、
、
、
我是一名软件开发人员,但我是嵌入式软件开发的新手。我有一个板,它的硬件中有一个Axi DMA,我想从Linux访问这个DMA。我知道我应该使用DMA引擎来访问Linux中的DMA,并且我找到了以下链接,即Xilinx驱动程序,但是我无法在没有任何错误的情况下将这些文件添加到我的qt项目中,而且我收到的文件(头文件)没有找到错误。 我有一些关于DMA驱动程序、设备树和DMA引擎的分散信息,但是我不知道如何利用这些信息来访问硬件DMA。 我构建了一个Petalinux项目,并将DMA引擎和DMA测试客户端添加到内核中。 我不知道将DMAEngine添加到Petalinux项目是否足够,或者我也应该
浏览 8
提问于2021-12-08
得票数 2
回答已采纳
1
回答
进程超出其分配堆栈时的事件序列和OS参与
、
、
我的理解是,Linux内核在启动之前为每个进程分配一个堆栈,并且这个初始大小是可配置的。进程可以通过CPU指令直接将数据PUSH到堆栈,即在每个这样的步骤中不涉及OS。 然而,在某些时候,PUSH操作可能会超过分配的堆栈大小,而且根据内核是否能够分配更大的堆栈大小,还会发生各种事情。 我的问题是:在最初的PUSH之后会发生什么?系统如何检测“堆栈溢出”,以及它需要扩展堆栈,直到它最终恢复进程的执行? 如果有帮助的话,我们可以关注x86 arch。 我想我们涉及到以下各方: CPU MMU 内核 流程 例如,谁检测到“堆栈溢出,是CPU吗? MMU?这会导致发出HW中断吗?其他什么?如果是的话,
浏览 0
提问于2020-07-06
得票数 0
3
回答
莱纳斯在他的自传中谈到的“分页到磁盘”功能实质上是我们今天使用的交换的概念吗?
、
、
在他的自传“只是为了好玩”中,Linus提到了“从页面到磁盘”的特性,这对于使Linux成为Minix和当今其他UNIX克隆的重要竞争对手至关重要: 我记得去年12月,德国有个人只有2MB的内存,他试图编译内核,但他无法运行GCC,因为GCC当时需要更多的内存。他问我是否可以用一个不需要太多内存的较小的编译器来编译Linux。所以我决定,即使我不需要这个特殊的功能,我也会让它发生在他身上。这就是所谓的分页到磁盘,这意味着,即使有人只有2毫升的RAM,他可以使它看起来更多地使用磁盘作为内存。这是1991年圣诞节前后。分页到磁盘是一件相当大的事情,因为它是Minix从未做过的事情。它包括在1992
浏览 0
提问于2020-08-12
得票数 28
回答已采纳
2
回答
没有核仁?
、
、
、
我想尝试编译没有mmu的内核。从我在配置中发现的情况来看,这样的事情是没有选择的。有可能做到吗?
浏览 0
提问于2015-03-15
得票数 13
回答已采纳
2
回答
虚拟内存总是可用的吗?
、
虚拟内存原理:虚拟内存的思想是创建一个与内存中的实际地址不相对应的虚拟地址空间。该系统将内存的正式副本存储在磁盘上,并仅在RAM中缓存最常用的数据。为了实现这一点,我们将虚拟内存分解为称为页面的块;典型的页面大小为4千字节。我们还将RAM分解为页帧,每个帧的大小与页面大小相同,可以容纳任何一页虚拟内存。 我正在运行一个Linux系统,交换区是空的,因为主内存中有足够的空间。话虽如此,是否仍然存在有页的虚拟内存,并且进程是否会继续使用虚拟地址而不是主内存中其部分的物理地址? 如果磁盘中没有交换区域,系统中是否也有虚拟内存? 简单地说,虚拟内存在Linux系统中总是可用的,并且进程总是有虚拟地址吗
浏览 0
提问于2017-07-04
得票数 3
1
回答
内存中的段
、
、
、
我对RAM内存中的片段感到困惑,请澄清以下疑问 RAM被划分为用户空间和内核空间,这种内存划分是由O/S完成,还是由H/W(CPU)完成。 内核空间的内容是什么,据我所知,只有内核图像,如果我错了,请纠正我。 这些代码、数据、堆栈和堆段在哪里存在? ( a)用户空间和内核空间是否有独立的代码、数据、堆栈和堆段? ( b)这段是由H/W或(O/S)创建的。 我能找到内核空间和用户空间占用的内存量吗? ( a)是否有任何Linux命令(或)系统调用来查找? 为什么RAM被划分为用户空间和内核空间? 我觉得这样做是为了保证内核不受应用程序的影响,是吗?这是唯一的原因吗?
浏览 4
提问于2013-11-09
得票数 4
回答已采纳
1
回答
“操作系统运行映射/未映射”是什么意思?
我现在正在上OS课程。 笔记上写着: 在某些情况下,操作系统只是运行未映射。然后,它所要做的就是读取表和翻译用户地址的软件。但是,虚拟地址空间中相邻的地址在物理上可能不是连续的。因此,I/O操作可能必须分成多个块。 假设OS也运行映射,那么它必须为用户区域生成一个页面表条目。请注意,在任何情况下都不允许用户访问映射表。 我有三个问题: 运行未映射的操作系统意味着什么?如何定义运行映射的操作系统?为什么在操作系统未映射时必须将I/O操作分成多个块?
浏览 3
提问于2020-11-17
得票数 0
回答已采纳
3
回答
如何在虚拟地址空间中确定页面大小?
、
、
、
Linux使用虚拟内存系统,其中所有地址都是虚拟地址,而不是物理地址。这些虚拟地址由处理器转换为物理地址。 为了使这个转换更容易,虚拟内存和物理内存被划分为页面。这些页面中的每一个都有一个唯一的编号;页面帧号。 一些页面大小可以是2KB,4KB等等。但是如何确定这个页码呢?它是否受建筑尺寸的影响?例如,32位总线将有4GB的地址空间.
浏览 0
提问于2014-05-06
得票数 55
回答已采纳
2
回答
进程之间的上下文切换是否会使MMU(内存控制单元)失效?
、
、
、
这是我的系统讲座的PowerPoint中的一个句子,但我不明白为什么上下文切换会使MMU无效。我知道它将使缓存失效,因为缓存包含另一个进程的信息。然而,对于MMU,它只是将虚拟内存映射到物理内存。如果上下文切换使其无效,这是否意味着MMU在不同进程中使用不同的映射机制?
浏览 4
提问于2017-01-03
得票数 3
回答已采纳
1
回答
为什么kmalloc()比vmalloc()更高效?
、
、
、
、
我认为kmalloc()在内核中分配连续的物理页面,因为虚拟内存空间直接映射到物理内存空间,只需添加一个偏移量。 然而,我仍然不明白为什么它比vmalloc()更有效。它仍然需要遍历页面表(内核页表),对吗?因为当进程切换到内核时,MMU没有被禁用。那么为什么Linux直接将内核虚拟空间映射到物理内存呢?好处是什么? 在include/asm-x86/page_32.h中,有: #define __pa(x) ((unsigned long)(x)-PAGE_OFFSET) #define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET)) 为
浏览 3
提问于2016-11-30
得票数 1
1
回答
写到HW控制器的寄存器和DMA是如何在ARM arch机上工作的?
、
、
、
、
调用此函数时: static inline void writel(unsigned int v, volatile void __iomem *addr) { *(volatile unsigned int __force *)addr = cpu_to_le32(v); } 地址是简写的还是经过MMU的? DMA -写地址是由MMU翻译的吗? 为什么没有提到系统中的寄存器地址
浏览 2
提问于2012-11-06
得票数 0
回答已采纳
2
回答
内存段是否由操作系统或体系结构定义?
、
、
x86体系结构具有用于地址空间(ss、ds等)的各个段的段寄存器。如果我想在一个进程地址空间中添加一个新的内存段,我可以通过修改内核来完成吗?或者我需要硬件支持吗?我不想做任何具体的事情,只是好奇并试图理解Linux是如何使用段寄存器的。
浏览 8
提问于2018-07-04
得票数 0
1
回答
关于内核虚拟地址布局的问题
、
、
在x86和x64系统中,关于内核的虚拟地址布局有两个问题。 据我所知,x86使用的是高内存和低内存布局。 如果我的理解是正确的,那么highmem和lowmem之间唯一的区别就是它是否有1:1的虚拟地址到物理地址映射。 另外,lowmem包含内核程序经常访问的代码和数据,highmem包含不经常访问的页面表或用户级程序数据。 但是,我无法理解为什么x86内核会分割虚拟地址空间,并将频繁访问的数据和代码定位到较低的位置。它的优点是什么?似乎无论内核内存的位置如何,都应该调用页表遍历来获得虚拟到物理映射。如果它是正确的,它似乎没有优势的高和低。 这里,我的第一个问题是,如果lowmem使用1:1映
浏览 0
提问于2017-04-07
得票数 0
回答已采纳
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
Linux:为什么性能工具需要 BPF 技术
为什么 Linux 和 macOS 不需要碎片整理
什么是 Linux 服务器,你的业务为什么需要它?
说说为什么要用linux
为什么程序员喜欢为 Linux 打包|Linux 中国
热门
标签
更多标签
云服务器
ICP备案
对象存储
实时音视频
云直播
活动推荐
运营活动
广告
关闭
领券