首页 文章
  • 4 votes
     answers
     views

    linux从内核中的pid获取进程名称

    您好我在内核中使用sys_getpid()获取进程ID如何从内核结构中找到进程名?它存在于内核中吗? 非常感谢
  • 1 votes
     answers
     views

    如何在Linux内核中为守护进程分配pid(进程id)?

    我研究了关于创建进程/线程的Linux内核代码(2.6.11),然后是do_fork() - > alloc_pidmap() 一旦前一个pid达到最大pid,似乎alloc_pidmap总是返回pid> 300,而实际守护进程的pid总是<300(这是正确的吗?) . 守护进程是否使用alloc_pidmap()以外的函数获取其pid?如果是这样,是否暗示守护进程不是使用do_...
  • 2 votes
     answers
     views

    从Linux中的内核空间获取进程列表

    如何从内核模块获取所有对 process_name -> process_pid (用户空间和内核空间)的列表?
  • -1 votes
     answers
     views

    Linux内核中的进程优先级[重复]

    这个问题在这里已有答案: what is the difference among three priorities used in Linux kernel? 1回答 我是Linux内核的新手,我很困惑 . 请任何人都可以回答我的问题: Q1 - >线程的静态优先级是否发生变化?如果改变那么它如何改变? Q2 - > Linux内核中进程和线程的静态优先级和动态优先级的默认值...
  • 4 votes
     answers
     views

    获取当前进程上下文的实际可执行路径 - Linux内核

    我试图通过我的内核驱动程序获取正在运行的进程的实际可执行路径 . 我做了以下事情: static struct kretprobe do_fork_probe = { .entry_handler = (kprobe_opcode_t *) process_entry_callback, .handler = (kprobe_opcode_t *) NULL, .maxac...
  • 1 votes
     answers
     views

    核心 . 如何获取获得CPU时间片的进程名称和pid

    我想打印获得CPU时间片的每个进程的 name 和 pid . 可能吗?
  • 0 votes
     answers
     views

    即使分区安装RO,jffs2 gabrage收集器也会运行

    我使用JFFS2分区作为根目录,将其作为RO安装在命令行(和fstab)中 . 它是Montavista 5.0 linux(2.6.18) . 一切正常,除了当linux到达我的应用程序时,jffs2_gcd_mtd3占用大约15秒,占用98%的CPU时间 . 在我的情况下,这是不可接受的 . 我搜索了linux代码并看到GC线程只在安装RW时启动,但在我的情况下它仍然启动! 我尝试将它安装到r...
  • 5 votes
     answers
     views

    kmalloc的内存很慢

    我们有一个应用程序,需要大约1MB缓冲区才能填充硬件设备,因此我们编写了一个使用kmalloc()分配缓冲区的内核模块 . 我们没有使用dma_alloc_coherent(),因为我们需要操纵缓冲区,因此希望它们被缓存(我们在需要时刷新缓存) . 其中一个操作是内核模块将一个缓冲区复制到另一个缓冲区 . 在计时这些副本时,我们看到复制缓冲区需要大约2ms . 该时间不包括任何缓存刷新 . 由于这...
  • 1 votes
     answers
     views

    屏蔽DMA分配内存的物理地址是否有效?

    我目前正在编写一个Linux内核驱动程序,它需要告诉FPGA一个RAM中的基地址来写入 .使用 dma_alloc_coherent 在内核驱动程序中分配内存 . 这将生成32位物理地址和内核虚拟地址,物理地址将传递给FPGA .FPGA是一个带有嵌入式ARM Cortex-A9的Cyclone V,带有驱动程序的嵌入式Linux正在运行 .现在的问题是,FPGA架构仅产生27位宽的总线来寻址sd...
  • 1 votes
     answers
     views

    对jffs2 Linux文件系统的O_DIRECT支持

    我试图使用O_DIRECT打开一个文件,我们正在使用jffs2 fd = open(filename, O_RDONLY|O_DIRECT|O_SYNC); 但我只得到"invalid argument"错误 . 我也尝试过解决方案in this SO link但无济于事 . 当然,我也在构建源代码时加入"-D_GNU_SOURCE" . 我已经读过tmp...
  • 1 votes
     answers
     views

    将jffs2挂载为rootfs错误

    我正在尝试挂载jffs2 rootfs . 安装fs时,将显示以下警告: Jffs2: Node totlen on flash (0xffffffff) != totlen from node ref 当我使用ramfs作为rootfs时,没有发生此警告,并且手动挂载了jffs2 rootfs . 当jffs2尝试将节点标记为过时时,会出现此警告 . 在任何其他意义上,fs似乎可操作,我能够创...
  • 0 votes
     answers
     views

    更多/ proc / mounts或ls / mnt /或df挂起

    嗨我已经做了一些工具升级,当我尝试启动设备时它无法启动Webkit,因为当directfb探测文件系统以进行共享内存安装时,它将查看/ proc / mount文件 . 这给了这个: #more / proc / mounttmpfs / var / run / dbus tmpfs rw,relatime 0 0fusectl / sys / fs / fuse / connections fu...
  • 4 votes
     answers
     views

    JFFS2中使用的算法

    我是JFFS2文件系统的新手 . 我正在寻找关于JFFS2中使用的垃圾收集算法的参考/文章/论文 . 如果有人引导我这样做会很棒 . 谢谢 . 萨姆
  • 3 votes
     answers
     views

    不同步:找不到初始化 . 对于jffs2文件系统

    我正在使用内核2.6.33.7的mpc8309-twr板,当我使用ramdisk文件系统(rootfs.ext2.gz.uboot)创建我的rootfs映像时,我能够挂载我的文件系统,我的电路板能够成功启动 . But, when i am trying with jffs2 filesystem it is saying "no init found",here is the...
  • 2 votes
     answers
     views

    系统关闭后嵌入式文件系统UBIFS中的数据丢失

    每当我在UBIFS文件系统上运行我的应用程序并对任何文件(提供的文件具有正确的读写模式)执行写操作时,在关闭电源后立即打开,我看到写入该文件的内容丢失了 . 该文件为零 . 如果在JFFS2文件系统上执行同样的事情不会造成这个问题 . 我尝试过使用同步命令,但很少存在这个问题 . 例如: 我需要在一个名为myfile的文件中写入一些数据,在运行期间打开它并将一些数据写成“Hi..Hello ..”...
  • 80 votes
     answers
     views

    如何识别linux块设备的请求队列

    我正在研究通过网络连接硬盘的驱动程序 . 有一个错误,如果我在计算机上启用两个或更多硬盘,只有第一个硬盘可以查看和识别分区 . 结果是,如果我在hda上有1个分区,在hdb上有1个分区,只要我连接hda,就会有一个可以挂载的分区 . 所以hda1一旦安装就会得到一个blkid xyz123 . 但是当我继续安装hdb1时,它也会出现相同的blkid,实际上,驱动程序是从hda而不是hdb读取它 ....
  • 2 votes
     answers
     views

    块ram磁盘无法读取/写入偏移量

    我正在创建一个基于sbull的非常简单的块RAM磁盘 . 到目前为止,如果我使用dd读取/写入数据块,它可以正常工作,但每当我尝试在其上安装文件系统(有时创建文件系统)时,我的驱动程序崩溃 . 经过长时间的调试,我终于发现了什么是错的,尽管我无法找到解决问题的方法 . 因此我的问题在这里:) 每当用户空间应用程序使用OF OF OFFSET向设备创建请求时,驱动程序将无法工作!让我向您展示源代码以...
  • 2 votes
     answers
     views

    如何在嵌入式Linux(ARM)中通过SPI连接的Flash进行读/写?

    我正在使用Yocto和meta-atmel来构建嵌入式Linux(4.4.19) . 我的主板是一个通过SPI连接的Flash . 我尝试了几种方法来写它 . 但他们都失败了 . 如何读/写数据? 一些信息: Flashtype 4Mbit:s25fl164k(http://www.farnell.com/datasheets/1756778.pdf) 通过设备树包含: spi1: spi@f80...
  • 0 votes
     answers
     views

    确保将所有数据从用户空间刷新到eMMC内存

    我正在使用嵌入式Linux系统,其中软件应该以电源故障安全方式进行更换,并且当我们发出信号表示该过程完成时,电源故障不应对系统产生负面影响 . 同步系统调用的文档提到这只会刷新内核缓冲区,而内部设备(如eMMC)缓冲区仍然无法完全刷新 . 我正在浏览/ dev / mmc目录,并发现名为“removeable”的文件应该允许具有类似于实际可移动设备的行为(在以突然方式移除电源时将丢弃电源) . L...
  • 7 votes
     answers
     views

    Linux内核使TLB条目无效

    在linux内核中,我编写了类似于 copy_page_range (mm / memory.c)的代码,因此通过COW优化将内存从一个进程复制到另一个进程 . 目标和源地址可以被 PAGE_SIZE 偏移,COW仍然有效 . 但是,我注意到,在用户程序中,当我从相同的源地址复制到不同的目标地址时,TLB似乎没有被正确刷新 . 在高级别,我的用户级代码执行以下操作(我一次只复制一页,我的机器上的0...
  • 4 votes
     answers
     views

    用于处理Linux内核中TLB未命中的调用图

    我试图了解linux内核如何处理TLB未命中 . 具体来说,我知道页表行走发生在 mm/memory.c mm/memory.c 中,但是当TLB未命中时,如何调用follow_page . 如何将follow_page的返回值( struct page )传递回硬件?有人可以说明TLB未命中处理的调用图,从硬件引发TLB Miss异常到调用 follow_page 时是什么时候? 我在内核代...
  • 0 votes
     answers
     views

    刷新缓存和TLB不起作用:flush_cache_mm(mm)/ flush_tlb_mm(mm)

    刷新缓存和TLB不起作用 . 以下内核模块接收pid并使用该id刷新进程的tlb / cache条目 . 我修改了Linux内核中的 handle_mm_fault() 函数,并在其中添加了一行打印出pid和导致页面的地址 if(current->pid == target_process) ....请参阅下面注释掉的行 . 但是,当我运行测试时,我看不到该进程导致的任何页面错误 . 我正...
  • 1 votes
     answers
     views

    从Linux内核/内核模块“附加”用户空间进程

    我想每60秒修改一个特定进程的虚拟到物理地址映射(即页表) . 我知道如何修改页表,如何相应地刷新缓存和TLB,以及如何利用workqueue每60秒调用一次我的函数 . 但是,我不确定如何从内核或内核模块“附加”到目标进程,假设目标进程没有启动任何系统调用 . 通过“附加”,我的意思是目标进程的行为与遇到中断(例如页面错误)时的行为类似,并且在保存上下文的情况下立即执行内核 . 那么可以这样做吗...
  • 3 votes
     answers
     views

    内核端页面缓存virt < - > phys映射如何与TLB交互?

    我正在编写一个大量使用 mmap 的应用程序,包括来自不同的进程(不是同时发生,而是串行发送) . 性能的一个重要决定因素是TLB如何管理这些映射的用户和内核端 . 我理解Linux page cache的用户可见方面 . 我认为这种理解延伸到用户地带的性能影响1 . 我不明白的是这些页面是如何映射到内核空间的,以及它如何与TLB交互(在x86-64上) . 您可以在32位x86 world2中找...
  • 1 votes
     answers
     views

    为什么Linux内核地址空间中存在1:1线性映射?

    据我所知,内核内存的下半部分是1:1与物理地址(RAM)映射,我想知道它带来了什么好处,特别是在x86的上下文中 . 启用MMU / TLB时,通过CPU地址总线发送的每个地址都被视为虚拟/逻辑地址 . 即使可以通过减去偏移来完成线性到物理的转换,但是MMU仍然会遍历页表以转换线性地址 . 我看不出任何表现上的好处 . 我错过了什么?
  • 11 votes
     answers
     views

    为什么在Linux内核中繁忙的循环时,为了TOO,进程被剥夺了CPU的权限?

    乍一看,我的问题可能看起来有点微不足道 . 请耐心等待,并完整阅读 . 我在Linux内核模块中发现了一个繁忙的循环 . 因此,其他进程(例如sshd)在很长一段时间内(例如20秒)没有获得CPU时间 . 这是可以理解的,因为我的机器只有单个CPU,繁忙循环没有机会安排其他进程 . 只是为了实验,我在忙循环中的每次迭代后添加了schedule() . 即使这会使CPU保持忙碌,但仍应让其他进程运行...
  • 0 votes
     answers
     views

    内核会改变进程的好处吗?

    最近,从 top 的结果,我发现一个进程的漂亮值设置为10.看起来内核做了这个,因为进程占用了很多cpu很长一段时间 . 但是,正如我所知,用户设置好的值来为进程指定静态优先级 . 而且我不确定内核是否会动态设置好的值 . 我知道好的和优先级之间的区别,并用谷歌搜索这个问题的答案几个小时,但没有说清楚 . 也许读一下 sched.c 和 top 的源代码是个好主意,但有关于此的文档吗?从大量代码中...
  • 0 votes
     answers
     views

    在Linux上处理不可抢占(2.6.32)

    我_1131359_已将调度程序策略更改为 SCHED_FIFO ,并将 rtprio 设置为99.一旦进程启动,在没有IO中断的情况下,我是否确保该进程仍然获得了具有更高优先级的内核的某些进程't be preempted by other process? The rtprio=99 is the highest priority or there' ?最后,我怎么知道一个进程在执行过程中是否...
  • 2 votes
     answers
     views

    linux进程调度程序如何防止进程的饥饿

    我已经读过linux内核包含许多调度类,每个调度类都有自己的优先级 . 要选择要运行的新进程,进程调度程序将从最高优先级类迭代到最低优先级类 . 如果在类中找到可运行的进程,则选择优先级最高的进程从该类运行 . 摘自Robert Love的Linux内核开发: 进程调度的主要入口点是函数schedule(),在kernel / sched.c中定义 . 这是内核的其余部分用来调用进程调度程序,决...
  • 0 votes
     answers
     views

    为什么在Linux中的CFS调度程序中,正在运行的进程的vruntime会减少?

    我正在探索CFS调度程序 . 根据CFS,vruntime是进程在CPU上运行的时间 . 因此,一旦进程消耗了一些CPU,其vruntime就会增加 . 为了深入理解context_switch概念,我研究了kernel / sched / core.c文件的context_switch方法实现 . context_switch(struct rq *rq, struct task_struct ...

热门问题