解释segfault消息
以下segfault消息的正确解释是什么? segfault at 10 ip 00007f9bebcca90d sp 00007fffb62705f0 error 4 in libQtWebKit.so.4.5.2[7f9beb83a000+f6f000] segfault at 10 ip 00007fa44d78890d sp 00007fff43f6b720 error 4 in libQtWebKit.so.4.5.2[7fa44d2f8000+f6f000] segfault at 11 ip 00007f2b0022acee sp 00007fff368ea610 error 4 in libQtWebKit.so.4.5.2[7f2aff9f7000+f6f000] segfault at 11 ip 00007f24b21adcee sp 00007fff7379ded0 error 4 in libQtWebKit.so.4.5.2[7f24b197a000+f
0 2023-11-30
编程技术问答社区
内核代码wait\u event()和wake\u up()下的系统挂起且CPU高
我有两个内核线,分别运行A()和B(). A()试图唤醒B(),如下所示. a() { while(1) { while( atomic_read(status) != SET_SLEEP ) msleep(10); atomic_set(status, SET_RUN); printk( "..." ); wake_up( wq ); } b() { while(1) { atomic_set(status, SET_SLEEP); printk( "..." ); wait_event( wq, atomic_read(status) != SET_SLEEP ); printk( "..." ); } 两者都运行了很长时间后,整个系统将被绞死,并且CPU变高.没有任何恐慌消息.有人有主意吗?
2 2023-11-26
编程技术问答社区
AttributeError: module 'matplotlib' has no attribute 'get_data_path' on Visual Studio's jupyter-notebook
当我想在Visual Studio的Jupyter-Notebook上导入Matplotlib.pyplot时,我会收到以下错误. --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in ----> 1 import matplotlib.pyplot as plt ~/miniconda3/envs/firstSteps/lib/python3.8/site-packages/matplotlib/__init__.py in 903 # triggering resolution of _auto_backend_sentinel. 904 rcParamsDefault = _rc_params_in_
0 2023-11-24
编程技术问答社区
用作虚拟网络摄像机的设备驱动程序
我正在寻找写虚拟摄像头驱动程序.有人有主意吗? 任何有帮助或任何链接的书. 添加更多详细信息: 我已经开发了一个设备驱动程序,该驱动程序将图像保存到磁盘,并且显示器使用设备驱动程序显示图像.表演似乎不好. FNS.我使用的是: //捕捉 getDesktopWindow() createCompatibleBitMap() 节省() //显示 wm_mousemove 每次都打电话捕获和显示 但是显示器不是连续的,只有在窗口不集中并再次焦点之后才出现 我应该使用其他一些技术记录或显示图像,什么会带来富有成果的结果,请帮助. 谢谢 -Miteesh 解决方案 虚拟相机驱动程序是什么意思? 可以使用DirectShow编写虚拟捕获设备.然后,这样的虚拟捕获设备可以由Skype等应用程序使用. ://tmhare.mvps.org/downloads.htm 在"捕​​获源过滤器"链接下. 编辑: 为了在我发布的链接中使用该捕获设备,您需要下载Windo
0 2023-11-20
编程技术问答社区
C++中的虚拟网络摄像机
我想编写一个新的虚拟网络摄像头驱动程序,例如,该驱动程序将以AVI或LIVE流进行屏幕,并将其作为网络摄像头源流式传输. 我真的没有网络摄像头,我想添加一个流式桌面屏幕的虚拟网络摄像头. 我应该在内核模式下编写网络摄像头?如果是这样,您可以将我引导到示例网络摄像头驱动程序吗? 如果我应该在DirectShow中执行此操作,如何在控制面板中列出网络摄像头列表中列出的网络摄像头设备,因此,例如在Yahoo Messenger中,我可以选择该设备作为网络摄像头,然后将我的桌面作为网络摄像头images流式传输. 我如何开始? 解决方案 您需要编写直接源源过滤器. Windows SDK包含一个称为 baseclasses 的库,该库可帮助您开发此类过滤器.请参阅 csourcestream 要在其他视频流设备下显示该设备,您必须在CLSID_VIDEOINPUTCATERORY下的DirectShow API注册过滤器.您不需要/不应该写内核驱动程序. 其他
0 2023-11-20
编程技术问答社区
Linux内核无法支持1GB物理内存和HIGHMEM解决方案。
我一直在阅读[1],以了解HighMem.文章说:" 如果内核希望能够直接访问系统的物理内存,则必须设置页面表,将记忆映射到地址空间的内核部分> " .这正是我混淆的地方.直接访问物理记忆是什么意思?这是否意味着明确说明物理地址?(AFAIK,在Linux内核中是不可能的),然后继续指出" 必须设置页面表,将存储器映射到地址的内核部分中空间 ".那是您在HighMem解决方案中所做的事情,不是吗?请帮助我了解导致HighMem解决方案的问题. [1] http://lwn.net/articles/75174/ 解决方案 1如果内核希望能够直接访问系统的物理内存,但是,它必须设置页面表格将存储器映射到地址空间的内核部分 我认为作者想强调内核需求页表以解决物理内存. 2 t必须设置页面表,将记忆映射到地址空间的内核部分 内核部分也需要页面表来映射该内存,而高内存则没有直接的内核映射.您可以在该文章上找到"当内核需要在高内存中使用页面时,它必须明确设置一个特殊的页面
0 2023-11-20
编程技术问答社区
Linux中的内存区域标志:为什么同时需要VM\u WRITE和VM\u MAYWRITE?
"了解Linux虚拟内存管理器"(2007年)撰写(这是A vm_write-可以编写页面 vm_maywrite-允许设置vm_write标志 我不明白为什么Linux需要这两个标志,而不仅仅是其中之一.从上面的描述中,听起来像是设置vm_maywrite,而vm_write却不是.在什么情况下? Linux内核在这些情况下的行为有何不同? 例如,奶牛机制根据其VM_MayWrite标志检测到牛保护页面(请参阅源代码).设置VM_MayWrite时,Linux内核不是设置VM_Write标志吗?如果是,为什么不拥有一个标志,从一开始就设置了? 解决方案 可以更改内存保护级别,内核使用VM_MAY%标志来确定是否允许此类更改. 从上面的描述中,听起来像是设置vm_maywrite,而vm_write却不是.在什么情况下? 在最初只读内存的情况下 例如,牛机制根据其vm_maywrite标志检测牛保护页面(请参阅源代码).设置VM_MayWri
0 2023-11-20
编程技术问答社区
上半内核初始化
初始化我的内核时,我有一些需要发生的事情:1)需要启用分页,2)物理内存管理器需要从GRUB中解析内存映射,3)各种启动代码需要访问需要待在那里的数据(例如GDT,IDT,内存管理结构). 这些步骤之间的依赖项使我发疯.借助高级的内核,内核在其虚拟地址链接,因此我想出的选项是1)启用编写程序集,这将涉及遵循所有多脚指针(组装),以便仍然可以访问它们到物理内存管理器,然后将它们全部拆开,2)在其物理地址上链接启动代码,然后进行一些指针操纵以访问其物理地址的内核结构,或3)不要使用更高的半alf内核. 还涉及的是在不知道编译时的物理内存量的情况下引导物理内存管理器.我敢肯定,在分配第一个结构时,我必须仔细避免所有多脚结构,或者首先使用它们,然后不必担心覆盖它们(尽管我仍然必须处理模块,并且这种方法可能可能在设置物理内存管理器时,涉及将多脚表复制到已知位置. ). 这些问题就是为什么我现在避免了更高的半核.有人有一个很好的系统来解决这些依赖性吗?也许在上有一些变化使用某种避免上
0 2023-11-20
编程技术问答社区
内核如何知道虚拟地址空间中的哪些页面对应于交换出的物理页面帧?
考虑以下情况:内核已经用尽了物理RAM,需要交换页面.它选择了最近使用的页面框架,并希望将其内容交换为磁盘,并将该框架分配给另一个过程. 令我困扰的是,总体而言,此页面框架已经映射到了几个过程的几页(相同)页面.内核必须以某种方式找到所有这些过程,并将页面划分为互换.它如何执行? 谢谢. 编辑:问题的插图: 交换过程1和2具有共享页面1,该页面位于物理内存框架1: 中 现在,系统中的内存已耗尽,内核通过从框架1交换第1页并用第2页替换为过程3. 为此,它必须 1)查找所有过程,参考第1页(我们的情况下的过程1和过程2) 2)修改他们的页面表条目,将"现在"位设置为0,并在swap 中设置第1页的位置 所以,我不明白,如何执行步骤1.内核不仅可以迭代地查看每个过程的页面表以找到页面表条目,指向框架1.应该有某种从页面框架到页面表条目的反向映射. 答案是: "对页表管理的最重要,最重要的更改是引入反向映射(RMAP).将其称为"
0 2023-11-20
编程技术问答社区
Windows调试器中的警告:[something]与[something]重叠意味着什么?
我正在为Uni项目的一部分编辑Windows Research内核(WRK),并且有时在我启动运行内核的虚拟机时,Windows调试器说: WARNING: rdpdr overlaps raspptp_baa74000 WARNING: ks overlaps rdpdr_baa26000 WARNING: ks overlaps raspptp_baa74000 WARNING: update_baa11000 overlaps ks_ba9fe000 WARNING: update_baa11000 overlaps rdpdr_baa26000 WARNING: tcpip overlaps tcpip_ba83e000 这实际上是什么意思? 解决方案 这通常发生在内核调试器错过事件时(例如关闭或模块卸载).该警告意味着调试器刚刚收到了一个重叠另一个驱动程序的驱动程序的模块加载事件(重叠通常不是真实的,只是调试器认为存在重叠,因为它不知道卸载) . 这是通
0 2023-11-20
编程技术问答社区
安装vmware工具:无法识别3.8.0-19通用内核文件的路径
因此,我使用lubuntu并使用VMPLAYER运行AS VM,并且正在尝试安装VMware工具.做 之后 ./vmware-install.pl 进行默认设置,现在在说 The path "" is not a valid path to the 3.8.0-19-generic kernel headers. Would you like to cange it? [yes] Enter the path to the kernel header files for the 3.8.0-19-generic kernel? 当我做 时 whereis 3.8.0-19-generic kernel 它说 3.8: kernel: /usr/src/linux-headers-3.8.0-30/kernel /usr/src/linux-headers-3.8.0-19/kernel /usr/src/linux-headers-3.8.0-19-
0 2023-11-20
编程技术问答社区
如何通过编程知道我是否在虚拟机中?
我希望能够从Windows和Linux上这样做.我知道获得Sysinfo并使用与硬件标识符相关的拇指规则有多种方法. 我想知道是否有一种更基本的方法,例如查看内存地址/发出中断等. 顺便说一句,我正在尝试在Intel硬件上执行此操作,而我使用的虚拟化软件是VMware Workstation和Windows HyperV. 解决方案 这是一个更有用的命令: $ lscpu | grep -E 'Hypervisor vendor|Virtualization type' Hypervisor vendor: KVM Virtualization type: full 其他命令的示例输出: $ sudo virt-what kvm $ dmesg | grep -i virtual [ 0.000000] Booting paravirtualized kernel on KVM [ 0.029160] CPU0: Intel
2 2023-11-19
编程技术问答社区
如何从用户空间注册一个虚拟卡到阿尔萨?
我正在从用户空间开发虚拟设备 (使用umview /umview ) 因此,我需要将设备注册到系统的声卡列表 (我从未在内核模块中使用ALSA,所以我认为我需要调用SND_CARD_REGISTER()函数) ,但我找不到从用户空间做到这一点的方法... 也许我可以写一个syscall做到这一点? 解决方案 我已经解决了这个问题, alsa用户空间lib只需从0到32打开每个/dev/snd/controlc##启动 ioctl(SNDRV_CTL_IOCTL_CARD_INFO, ...); 为了使用已安装的声卡 构建列表 如果我们将UMView模块安装在/dev/snd/control#上,并且我们劫持了ioctl并回答,则我们的模块将由Alsa 将其标识为声卡 我已经创建了使用该技术的虚拟声音设备,您可以在 https://github.com/berdav/umdevavio 这是构建简单用户空间驱动程序
0 2023-11-19
编程技术问答社区
在kvm中实现自定义超级调用
我对虚拟化非常陌生,最近我一直在试图熟悉VMM的操作方式以及如何制作HyperCalls. 讨论我计划在我的Ubuntu桌面上安装的KVM中实现新的HyperCall,并且可以从访客环境中呼叫.在这一点上,我对如何实现它毫无意义.如果您可以指导我如何实施这样的超级呼叫. ,这将非常有帮助! 解决方案 您可以在用户程序中使用VMCALL指令在KVM中进行HyperCall.您需要在KVM中为此VMCALL编写一个处理程序.如果您在访客中运行代码; #define VMCALL_ID 100 do_vmcall () { asm volatile ("vmcall" : "eax"(VMCALL_ID)); } 它将导致KVM陷阱. KVM将调用handle_vmcall函数.在句柄_vmcall函数中,您需要编写与此相对应的处理程序. int handle_vmcall(struct kvm_vcpu *vcpu) { unsigned eax =
0 2023-11-19
编程技术问答社区
Virtualbox debugging-g: 错误。该虚拟机已经在运行
我正在尝试调试我正在开发的操作系统. 当我使用VirtualBoxVM --startvm "X" --debug启动VM计算机时,VM开始暂停,但是当我执行" G"命令继续执行时,我会收到此错误: g: error: The VM is already running 但是,当我没有--debug启动虚拟机时,一切都很好,但是我无法调试. 为什么出现错误消息? VM开始停止,因此消息没有意义,并且不允许我调试我的操作系统. 解决方案 我相信"暂停"与"停止"不同.要解开VM,请按主机+P(默认情况下,主机键为CTRL)
0 2023-11-19
编程技术问答社区
Virtualbox 6.1.10, Ubuntu 20.04 在内核5.8.0上构建的返回状态不好,包virtualbox-dkms错误
不是文档的问题. 这是关于与虚拟盒6.1.10,Ubuntu 20.04和VirtualBox-DKMS软件包无法构建的失败apt-get install或update. 我最近与ubuntu 20.04和虚拟框6.1.10有一个问题-upgrade-cannot-install-virtuabox-dkms-nor-run"> there 和此处. 问题是,从Ubuntu软件中心安装了V6.1.10的虚拟框,该框与当前Ubuntu内核版本不兼容,v 5.8.xx. 这些都是已知的问题,但是当我错误地尝试从包装存储中重新安装Vbox时,我的问题出现了.以前,已编译并重新安装VirtualBox-DKMS可以删除功能软件包,并且错误(status 10)失败.所以我最终遇到了这样的错误: Loading new virtualbox-6.1.10 DKMS files... Building for 5.8.0-36-generic Building init
0 2023-11-19
编程技术问答社区
在虚拟盒中调试来宾操作系统的工具
我只是在virtualbox.org上交叉发布相同的问题. = 9&t = 26702&p = 119139#p119139 如果不违反任何规则,我会感谢对它的更震动,因为Stackoverflow纸张更具动态性! "嗨, 我进行了一些搜索,找不到任何工具来从虚拟盒中的早期启动中调试来宾系统.虽然,我遇到了JCP,这是JAVA中的X86仿真器,并不是那么强大和美丽,但具有调试模式,可以查看物理记忆,CPU沿其他事物进行了记录.它还可以逐步执行CPU指令,并设置断点,观察点和条件指令.虚拟框中有这样的东西? 我认为拥有它并能够在其运行时检查系统会很棒.了解有关PC体系结构或作为开发内核的工具. 在情况下,您认为它的好主意(我认为是)如何实现?我有兴趣开发这样的东西,并且想知道如果尚未在某个地方实施是否可行." edt:现代X86是否能够在CPU周期之后中断其执行并将执行插件传递给另一个代码,以便这样做?是的,可以将陷阱标志设置为将处理器逐步执行模式. X86将
0 2023-11-19
编程技术问答社区
Windows内存映射文件
我正在尝试研究Windows内核在内存映射的文件/虚拟内存方面的行为.具体来说,我有兴趣确定(通过Windows)将内存映射文件的内容刷到磁盘以及Windows windows的哪些确定使用的频率. 我已经在网上进行了一些研究,除了MSDN之外,它更多地涉及" Hows and Whys and Whys"而不是详细介绍内部工作原理,似乎没有太多信息.如果有人可以将我指向任何文章或以前已经研究过,并且有一些见识,我会欢迎它. 谢谢. 解决方案 内存映射的文件由内核中的修改页面作者控制 - 每当需要重新使用页面的内存时,它们就会被冲洗(以便在内存压力下发生). 该系统还跟踪脏页的数量并在达到阈值后写入它们. You can find more information about in this 有关Windows内存管理更改Windows Vista的文章 - 它没有直接回答有关内存管理器如何处理修改后页面的问题,但您可以根据文章中的信息来推断一些细节.
0 2023-11-19
编程技术问答社区
4GB/4GB内核虚拟机拆分
朋友, 我看到了在本文中,他说 使用4G/4G补丁,可以以4G/4G模式编译内核,其中 情况有一个完整的,单独的4GB VM,用于内核,还有 用于用户空间的单独的完整(和每个程序)4GB VM. 我的问题从这里开始: 我的假设是,在单片中,就像Linux一样地址空间.因此,使用 具有此4G/4G补丁的Linux内核,我们分别对用户虚拟空间和内核虚拟空间进行了3/1拆分. 实际上,内核的1GB虚拟空间都在每个过程的虚拟地址空间中映射.简单说,过程地址空间为4GB,将1GB分配给内核.是真的吗? 在问题中撰写文章 - 如果我的假设为1)是正确的 - 他是否意味着内核地址空间不再映射到过程地址空间中,我们有不同的虚拟地址空间对于内核,没有共享地址空间? 那就是过程地址空间是4GB,内核地址空间是另一个4GB.而不是流程地址空间扩大到8GB的事实,其中4GB共享了内核. 我知道我在这里听起来有点愚蠢:). 解决方案 如果我正确理解本文,则在补丁后,
4 2023-11-19
编程技术问答社区
cscope或CTAG为什么选择一个?
我主要使用vim/gvim作为编辑器,并正在考虑将 ctags 用于探索内核源.但是,我从未使用过 cscope 或 ctags ,想听听为什么一个人可以选择一个,而不是另一个选择我将VIM用作主要编辑器的. 解决方案 ctags启用两个功能:允许您从函数调用到其定义,以及OMNI完成.第一个意味着,当您呼叫方法时,击打g]或CTRL-]将跳到定义或实现该方法的位置.第二个功能意味着当您键入foo.或foo->时,如果FOO是一个结构,则将显示带有字段完成的弹出菜单. cscope还具有第一个功能 - 使用set cscopetag - 但不是最后一个.但是,CSCOPE还增加了跳到函数的任何位置的能力. 因此,就代码库跳跃而言,CTAG只会带领您走向实现该功能的位置,而CScope也可以向您显示函数也被调用的位置. 为什么要选择一个?好吧,我两者都使用. CTAGS更容易设置,运行速度更快,如果您只关心跳跃,它将显示更少的行.您只需运行:!ctags -R .
2 2023-11-19
编程技术问答社区