Articles of pipe理员

在Linux中,属于内核数据段的物理内存页是否可交换?

我在问,因为我记得属于内核的所有物理页面都被固定在内存中,因此是不可擦除的,就像这里所说的: http : //www.cse.psu.edu/~axs53/spring01/linux/memory .PPT 但是,我正在阅读一篇研究论文,并且感到困惑,因为“(物理)页面经常在内核数据段和用户空间之间移动。 它还提到,相比之下,物理页面不会在内核代码段和用户空间之间移动。 我想如果一个物理页面有时属于内核数据段,有时属于用户空间,这意味着属于内核数据段的物理页面是可交换的,这是违背我目前的理解。 那么,属于内核数据段的物理页面是否可交换? unswappable? PS研究论文可以在这里find: https : //www.cs.cmu.edu/~arvinds/pubs/secvisor.pdf 请search“移动”,你会发现它。 再次,从[3G + 896M]到4G的虚拟内存区域属于内核,用于在ZONE_HIGHMEM(x86 32位Linux,3G + 1G设置)中映射物理页面。 在这种情况下,内核可以首先将该区域中的一些虚拟页面映射到托pipe当前进程的页面表的物理页面,修改一些页面表项并取消映射虚拟页面。 这样,物理页面有时可能属于内核,有时属于用户空间,因为它们在解映射之后不属于内核,从而变成可交换的。 这是原因吗?

我怎样才能保护在Linux的堆内存?

我想以只读方式创build一个堆内存块。 为此,我已经用mprotect()尝试了memalign() 。但是从memalign中我可以得到什么,memalign从进程堆中分配内存。 我想让堆的一部分只读。 有什么帮助吗? malloc()->mmap()->mprotect()一个假设的想法,但不知道是否可以帮助…上面实现的任何示例代码? 我需要保护堆内的内存地址。 与malloc()我得到的地址在0x10012008左右,而与mmap()它是0xf7ec9000.My的意图是使堆只能读取的一部分,只抓住任何可能试图通过该堆运行trampler。

如何停止/解决Java应用程序窃取Linux窗口pipe理器的焦点

我们想要在Java中快速构build小部件。 我们将它们覆盖在用专有第三方graphics软件包编写的显示屏上。 我们发现Java GUI从窗口pipe理器中窃取键盘焦点。 窗口pipe理器是fvwm,我已经尝试过configuration它,所以Java应用程序设置为不让焦点,而且如果它有焦点把它拿走并把它给另一个GUI。 如果我用Java应用程序运行它,它不起作用(只要鼠标在Java GUI上,它有键盘焦点) – 如果我交换一些标准的X GUI小部件(XEyes)来代替Java GUI,它就像一个魅力。 这使得Java不尊重ICCCM的说法(由fvwm的人维护)有所缓解。 我想知道如果其他人已经解决了这个问题,如果是的话如何。 到目前为止,我有几个select如何尝试和解决这个问题: 1)twiddle Java设置,希望如果我关掉焦点,也许它会把焦点控制交给窗口pipe理器(到目前为止,我已经尝试过“setFocusable(false)”在父JFrame上,这是行不通的。线程“ http://java.sun.com/javase/6/webnotes/trouble/TSG-Desktop/html/awt.html#gdaao ”表示我应该改为“Window.setFocusableWindowState(false)”有问题的GUI hasn但是我还没有完全相信Java会重新关注焦点 2)使用JNI在Java程序中进行低级别的X调用。 我认为这可能会工作,但是,我从来没有玩过低水平的X.我不确定我应该使用什么样的调用(XtSetKeyboardFocus()应该是危险的)或者我怎样才能识别我操作的graphics用户界面(在这方面fvwm是很好的,因为他们有一个graphics用户界面,让你点击另一个graphics用户界面,找出它的“名称”和“类”) 3)使用“更强”的窗口pipe理器。 一些不使用ICCCM的窗口pipe理器可能会更好地处理Java。 当然,有很多pipe理者,我不知道该集中注意力。 同样地,很多人似乎都没有明确指出应用程序的重点(大多数人似乎只关心广泛的政策)。

在Linux发行版中分发二进制应用程序

我已经写了一个应用程序,至今还不是开源的,我希望分布在各种Linux发行版的可执行文件。 什么是最好的办法做到这一点,我看了一点点.rpm和.deb包装,但我找不到,如果这可以用于二进制或不。 理想情况下,我想要像OS X上的PackageMaker或Windows上的常规安装程序,它会自动将其复制到/ usr / bin中。 那是.rpm和.deb软件包的用途还是我必须绑定一个自动执行它的shell脚本?

在Linux上安装GlassFish的位置?

免责声明:我对Linux比较陌生。 我辩论把它放在SuperUser或ServerFault上,因为答案确实需要将Linux作为一个系统解释(而不是一个特定的编程问题),但是我从Java开发人员的angular度对此感兴趣,我认为这是一个特定的问题,因为我安装GlassFish会极大地影响我的Javaconfiguration,最终影响应用程序configuration。 更不用说在其他网站上发布这个问题可能不会引起任何Java开发人员的注意,更多的可能是系统pipe理员,他们可能不太了解Java,因此完全无视这个决定。 我正在尝试确定GlassFish的安装位置,在我看来,我有(现实的)4个可行的选项: /opt/glassfish/ /usr/local/glassfish/ /home/myUsers/glassfish/ (这是所有OGS文档在其示例中显示的内容) /home/ogs/glassfish (作为自己的用户,类似于Apache Web服务器有时如何设置) 我想知道什么专业人士(考虑到Linux如何处理这些目录的不同性质,FHS等)以及每种方法的缺点。 我读过安装/分区的好处,安装在opt/ 。 不过,我通常会将第三方软件安装到usr/local/ ,所以我有点不确定这是一个策略。 Oracle GlassFish服务器(OGS)文档都显示(但从未彻底推荐)安装在您的主目录( home/myUser/ )下的GlassFish。 然后我再次读到,安装守护进程types的服务是非常普遍的(这是我想象的我将使用GlassFish作为 – 在那里我开始一次,它只是为了例行维护或崩溃)作为他们的自己的用户( home/ogs/glassfish/ )。 我相信这个决定也受到我将如何使用GlassFish的影响,所以让我用一些限制来解释这个问题: 我打算在同一台物理机器上的4个虚拟机上部署4个OGS实例,并将它们集群到同一个域中(4个服务器实例中的1个将成为域的pipe理服务器) 几个应用程序将同时部署到这个集群(所有3个非pipe理节点),并且应该全天候运行,除非它们发生崩溃(希望不经常!),或者当我需要维护或调整它们时 每个应用程序将会非常大,我想用真正的pipe理员来configuration它们,而不是“最小化”的默认设置 如果这些信息没有提供足够的信息来帮助做出这个select,请问,我可以更具体。 我想,当尘埃落定的一天结束的时候,我正在寻找(或多或less)一个与四个目录选项(加上其他明显的我省略)利弊。

无法写入到命名pipe道

我试图写入一个命名的pipe道,用mkfifo 。 但是当我运行这个命令时,(ex) ls > myNamedPipe ,我不能再把命令input到bash中。 我仍然可以写字符,这是非常多的。

Linux:大型int数组:mmap vs查找文件?

假设我有一个数据集,它是一个存储在4TB HDD ext4文件系统文件中的1e12 32位整数(4 TB)数组。 考虑到数据很可能是随机的(或者至less似乎是随机的)。 // pseudo-code for (long long i = 0; i < (1LL << 40); i++) SetFileIntAt(i) = GetRandInt(); 此外,考虑我希望以不可预知的顺序读取单个int元素,并且algorithm运行不确定(正在进行)。 // pseudo-code while (true) UseInt(GetFileInt(GetRand(1<<40))); 我们在Linux x86_64上,gcc。 您可以假设系统具有4GB的RAM(即比数据集小1000倍) 以下是架构访问的两种方法: (A)将文件映射到4TB的内存块,并以int数组的forms访问它 (B)打开(2)文件并使用seek(2)和read(2)来读取整数。 A和B哪个会有更好的performance?为什么? 还有另一种devise能比A或B提供更好的性能吗?

最适合约250,000个图像的网页文件夹结构

我将有大约20万张图片作为我网站的一部分。 每个图像将被存储3次:全尺寸,缩略图,更大的缩略图。 全尺寸图像大约在50Kb到500Kb之间。 正常的技术:在VPS上的Linux,Apache,MySQL,PHP。 什么是最佳的方式来存储这些通过浏览器快速检索和显示? 我应该将所有内容存储在一个文件夹中吗 我应该存储全尺寸的图像在一个文件夹,在另一个缩略图等? 我应该将图像存储在1000个文件夹中,并且保留图像所在的文件夹的索引? 感谢您的任何build议。 伟业。

可执行C程序中的段

我正在阅读有关章节和细分。 似乎你可以列出部分和段之间的映射如下。 $ readelf -l test Elf file type is EXEC (Executable file) Entry point 0x8048330 There are 9 program headers, starting at offset 52 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align PHDR 0x000034 0x08048034 0x08048034 0x00120 0x00120 RE 0x4 INTERP 0x000154 0x08048154 0x08048154 0x00013 0x00013 R 0x1 [Requesting program interpreter: /lib/ld-linux.so.2] […]

任何人都可以推荐一个(Linux)实用程序来实时监控日志?

有没有人知道任何可以实时监控日志并基于特定日志内容触发事件的Linux实用程序? 谢谢。