【分析Linux内核创建一个新进程的过程】教程文章相关的互联网学习教程文章

c – Linux内核udp查找【代码】

struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport,__be32 daddr, __be16 dport, int dif)这是函数声明,它将连接属性转换为struct sock.当我用Google搜索时,第一个参数应该是& init_net.但最后的论点应该是什么?解决方法:dif参数是设备接口.

Linux内核中的内存保护

当共享库映射到内存时,Linux内核将为此内存区域分配虚拟内存区域并分别标记其权限.但我们知道x86 arch中的页表条目中没有可执行位.如果在程序中有一个类似“call * edx”的调用指令来调用共享库中的函数,那么Linux内核如何知道目标地址是否可执行?如果权限在vma列表中不兼容,是否会导致一般性保护错误?解决方法:它不能. 在没有与读取权限不同的执行页面权限的体系结构(/操作模式)上,由于MMU检测到故障,内核将无法发现所谓的非法地...

在linux内核中使用stop_sched_class有什么用处【代码】

在内核中使用stop_sched_class有什么用?在pick_next_task函数中,调度程序将首先从stop_sched_class中选择下一个任务.有没有问题我为内核删除了这个sched_class?#define for_each_class(class) for (class = sched_class_highest; class; class = class->next)#define sched_class_highest (&stop_sched_class) extern const struct sched_class stop_sched_class;/** Simple, special scheduling class for the per-CPU stop ...

从文件系统中找到路由器固件的linux内核版本

我已经下载了文件DAP2690-firmware-v101-rc019.bin(link),这是一些D-Link路由器的固件更新. 我用binwalk -e DAP2690-firmware-v101-rc019.bin(Binwalk v1.2b)提取它,现在我在文件夹squashfs-root中有了根文件系统. 我想从提取的文件中知道这个固件的linux内核版本(最好只从文件夹squashfs-root). 我怎样才能做到这一点?解决方法:我会去检查在文件系统上编译的模块.每个模块都有一个vermagic数字,必须等于内核vermagic才能让insmod...

linux内核的最大中断频率是Hz,kHz,MHz还是GHz?

在我开始之前:是的,我知道答案是architecture dependent – 我只是对数量级的球场数据感兴趣. linux内核对中断频率有上限吗? 背景:我想在Linux中与相机模块连接.该模块具有时钟并行数据输出(8位,~650kHz),我想从缓冲区读取数据并存储在缓冲区中,以便通过例如/ dev / camera进行访问. 我有一个基本的驱动程序,它正在监视适当的中断线.如果我将电线悬挂在中断引脚上,我会受到白噪声的干扰.但是,如果我连接一个更高频率的信号(555...

为什么flush_dcache_page()在linux内核中什么都不做?【代码】

我发现flush_dcache_page()在x86 arch上的linux内核中没有做任何事情,如下所示 包括/ ASM-通用/ cacheflush.hLine 17 #define flush_dcache_page(page) do {} while (0)我认为在x86 arch上有缓存刷新指令“CLFLUSH”,它可以用于此页面刷新. 但是,flush_dcache_page()不会像上面的源代码一样运行任何CPU指令. 为什么flush_dcache_page()不运行x86架构上的任何指令? 是否保证将dcache中的页面写入主内存?解决方法:从https://www...

Linux内核中使用的三个优先级有什么区别?【代码】

我是Linux内核的新手,现在我正在研究Linux内核中的进程调度. Linux中有三种类型的优先级: >静态优先级>动态优先级>实时优先 现在我所理解的是: >静态优先级和动态优先级仅针对常规流程定义,它们只能从100到139取值.>静态优先级用于确定进程的基本时间片>动态优先级用于选择下一个要执行的进程.>实时优先级仅针对实时进程定义,其值可以在0到99之间 现在我的问题是: >如果我错了,请纠正我,也请告诉我为什么要使用 Linux中有三种...

这个内联汇编的含义是什么(:“0”(THREAD_SIZE – 1))在linux内核2.6.11 for i386中【代码】

在do_IRQ中,您可以找到以下代码!#ifdef CONFIG_DEBUG_STACKOVERFLOW/* Debugging check for stack overflow: is there less than 1KB free? */{long esp;__asm__ __volatile__("andl %%esp,%0" :"=r" (esp) : "0" (THREAD_SIZE - 1));if (unlikely(esp < (sizeof(struct thread_info) + STACK_WARN))) {printk("do_IRQ: stack overflow: %ld\n",esp - sizeof(struct thread_info));dump_stack();}} #endif我不明白这个asm集会的意...

Linux内核中的数据结构是否有任何“键值”对?【代码】

例如,我想在某些数据结构中存储Pid到Name映射.这样,我们可以快速检查是否已存储某些给定的pid.你可以为linux内核建议一些数据结构吗?解决方法:内核中有地图数据结构,但它不是通用地图.它将标识号(UID)映射到指针.这是你如何定义它的例子:struct idr map;idr_init(&map);然后你使用idr_get_new(struct idr * idp,void * ptr,int * id);用于将新元素插入地图的功能

LINUX内核及应用程序移植工作

1. 添加工作用户 [root@localhost ~]#useradd -G root -g root -d/home/arm arm 2. 建立工作目录 [arm@localhost arm]$mkdir dev_home [arm@localhost arm]$cd dev_home [arm@localhost arm]$mkdir bootldr btools debug doc images kernel localapps \ rootfs sysapps tmp tools [arm@localhost arm]$tree -L 1 . |-- bootldr |-- btools |-- debug |-- doc |-- images |-- kernel |-- localapps |-- rootfs |-- sysapps |-- tmp...

linux内核中内存障碍的目的【代码】

Robert Love说“set_task_state(task,state)将给定任务设置为给定状态.如果适用,它还提供内存屏障以强制在其他处理器上排序(这仅在SMP系统上需要)否则它相当于task-> state = state 我的问题是:内存屏障如何强制在其他处理器上进行排序? 罗伯特的爱是什么意思 – 为什么这需要?他可能会谈论这个顺序是什么?他在这里谈论调度队列吗? 如果是这样,SMP中的每个处理器是否都有不同的调度队列?我很迷惑解决方法:为了挤出额外的性能...

是否可以运行BSD userland作为Linux内核的GNU coreutils的替代品?

我一直在寻找一个不适用于嵌入式系统的Linux发行版,并且不使用许多流行发行版中的许多GNU实用程序.我想开发一个(宠物项目)linux发行版,它使用musl-libc,bsd userland和用户空间的Plan 9.在我开始之前并且可能浪费时间做不可能的事情,使用BSD用户空间作为GNU coreutils的替代品是否可行/实用?如果没有,有什么替代方案?解决方法:您的目标似乎与stali项目非常接近(唯一的区别是BSD用户空间要求). http://sta.li/ 我对这个项目的阶段...

Linux内核中的代码在哪里打开(“/ proc / self / fd / NUM”)?【代码】

我一直认为开放(/ proc / self / fd / NUM,flags)相当于dup(NUM),但显然情况并非如此!例如,如果您复制文件描述符,然后将新fd设置为非阻塞,这也会影响原始文件描述符(因为非阻塞状态是文件描述的属性,并且两个文件描述符都指向相同的文件描述).但是,如果您打开/ proc / self / fd / NUM,那么您似乎获得了一个新的独立文件描述,并且可以独立设置旧的和新的fds的非阻塞状态.您甚至可以使用它来获取引用相同匿名管道的两个文件描述,否...

struct proc_dir_entry的owner字段在哪里消失了? [Linux内核]

根据LWN上的the list of API changes in the 2.6 kernel series,结构proc_dir_entry的.owner字段在2.6.30内核中被删除. 所以这里有几个问题: >设置此字段真的有必要或有用吗?>该字段是否已移至其他位置,或已永久删除? 我问第一个问题是因为来自内核文档的the LKMPG set’s this field in many of it’s examples,procfs_example.c从未这样做过.解决方法:我不是Linux内核专家,但也许这个条目对你有意义: http://lkml.org/lkml/2...

多个进程的Linux内核逻辑地址

据我所知,“每个进程的地址空间分为3G / 1G用于用户空间/内核空间,1G(少一点)用一对一映射到物理地址,称为内核逻辑地址”. 现在,我的问题是,系统上运行了多个进程,并且所有进程如何与物理地址进行一对一映射? 例如,当内核访问进程A的上下文中的内核逻辑地址时,现在抢占发生了,当内核访问进程B上下文中的逻辑地址时会发生什么? 在类似的产品线上,只有512MB RAM的PC会发生什么?对于那些PC来说,1G内核空间的一对一映射是如何发...