标签: kernel

nanokernel和exokernel有什么区别?

我知道它们都应该很小,但两者之间的主要区别是什么?

kernel

14
推荐指数
1
解决办法
5367
查看次数

什么样的循环是(;;)?

在torvalds/linux-2.6.git中找到 - > kernel/mutex.c第171行

我试图在谷歌上找到它,但无济于事.

什么for (;;)指示?

c kernel mutex for-loop

14
推荐指数
4
解决办法
1185
查看次数

如何使用ioctl()来操作我的内核模块?

所以我正在尝试编写一个使用linux/timer.h文件的内核模块.我让它在模块内部工作,现在我试图让它从用户程序开始工作.

这是我的内核模块:

//Necessary Includes For Device Drivers.
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/errno.h>
#include <linux/proc_fs.h>
#include <asm/uaccess.h>
#include <linux/timer.h>
#include <linux/ioctl.h>

#define DEVICE_NAME "mytimer"
#define DEVICE_FILE_NAME "mytimer"
#define MAJOR_NUM 61
#define MINOR_NUM 0

MODULE_LICENSE("Dual BSD/GPL");

static struct timer_list my_timer;

struct file_operations FileOps = 
{
    //No File Operations for this timer.
};

//Function to perform when timer expires.
void TimerExpire(int data)
{
    printk("Timer Data: %d\n", data);
}

//Function to set up timers.
void TimerSetup(void)
{
    setup_timer(&my_timer, TimerExpire, …
Run Code Online (Sandbox Code Playgroud)

linux kernel kernel-module linux-kernel gumstix

14
推荐指数
3
解决办法
3万
查看次数

如何将不同进程的虚拟地址映射到不同的物理地址

我参加了一个关于操作系统设计和概念的课程,现在我正在努力学习Linux内核.我有一个我无法摆脱的问题.在现代操作系统中,每个进程都有自己的虚拟地址空间(VAS)(例如,在32位系统中为0到2 ^ 32-1).这提供了许多优点.但在实施中,我在某些方面感到困惑.让我通过举个例子来解释一下:

假设我们有两个过程p1,p2; p1和p2有自己的VAS.地址0x023f4a54映射到不同的物理地址(PA),它怎么可能?如何以这种方式完成此翻译.我的意思是我知道翻译机制,但我不明白,当它来到不同进程的地址空间时,相同的地址被映射到不同的物理地址.

0x023f4a54 in p1's VAS => PA 0x12321321
0x023f4a54 in p2's VAS => PA 0x23af2341 # (random addresses)
Run Code Online (Sandbox Code Playgroud)

kernel linux-kernel virtual-address-space

14
推荐指数
4
解决办法
6289
查看次数

Android:使用KGDB进行内核调试

我正在尝试为我的Nexus One进行内核调试,并且已经按照http://bootloader.wikidot.com/android:kgdb的说明进行操作.我想知道是否有人真的让这个工作?有没有人为使用KGDB调试内核做了更新的解决方案?

debugging android kernel android-source kgdb

14
推荐指数
2
解决办法
8815
查看次数

如何通过调度程序将每个进程固定到特定核心(Linux)

我现在正在研究Linux的调度程序.关于CPU核心亲和力,我想知道以下内容:

1)每个进程(线程)如何固定到核心?

有一个系统调用sched_setaffinity来更改执行进程的核心关联.但在内部,当生成进程(或线程)时,默认的Linux调度程序如何将进程(线程)分配给特定的核心?我修改了sched_setaffinity系统调用以转储有关正在从一个核心移动到另一个核心的任务的信息.

printk(KERN_INFO "%d %d %ld %lu %s\n", current->pid, current->tgid,
                                       current->state, current->cpus_allowed,
                                       current->comm);
Run Code Online (Sandbox Code Playgroud)

似乎没有上述信息的转储/var/log/messages.因此默认的调度程序以不同的方式将每个进程固定,但我无法弄清楚如何.

2)是否可以通过PID或其他信息获取核心ID?

这是我想在Linux内核中实现的.在task_struct,有一个成员叫cpus_allowed.但这是设置亲和力的掩码,而不是核心ID.我想检索一个数据,标识运行指定进程的核心.

谢谢,

linux kernel scheduler

14
推荐指数
2
解决办法
5480
查看次数

设置Linux中可用的总物理内存限制

我知道我应该设置mem=MEMORY_LIMIT.但是我不知道去哪里,在运行时或在引导期间,为了设置操作系统控制的总物理内存的限制.

我正在运行I/O基准测试,我想限制可用的整体物理内存量.

linux memory kernel memory-address

14
推荐指数
2
解决办法
4万
查看次数

查看Linux内核配置选项

是否可以查看在内核编译期间使用了哪些标志?2.6.42.12-1 fedora 15.

我相信我以前做过这个,但我在谷歌上找不到任何东西(即我找错了东西:/).

linux kernel config fedora

14
推荐指数
2
解决办法
2万
查看次数

如果内核库发生变化,Docker如何允许可移植容器

如果我的程序依赖于内核库的某些功能,并且该函数又具有一系列依赖关系,那么docker如何保持小巧便携,而无需获取所有内核库的快照(并在函数而不是库中管理依赖性问题)水平)?换句话说,它是如何将内核库中的更改从一个版本隔离到另一个版本的,并且它是在库或函数的特殊情况下进行的吗?

另外如果我的应用程序有一个软件堆栈,其中例如一个功能是与内核库A的未来版本兼容而使用的内核库中的第二功能不再兼容.换一种说法:

函数1和2都依赖于并使用内核Lib A版本1.0中的函数

功能1与Lib一起使用1.1版功能2与Lib A版本1.1(功能2仍然需要Lib A版本1.0)中断

我对Docker了解不多,所以这是一个新手问题.

linux kernel docker

14
推荐指数
1
解决办法
2527
查看次数

sysconf(_SC_CLK_TCK)返回什么?

我试图了解各种sysconf宏.我编写了一个程序如下.

int main()
{
    fprintf(stdout, "No. of clock ticks per sec : %ld\n",sysconf(_SC_CLK_TCK));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我总是得到100的结果.我在一个时钟频率为2.93GHz的CPU上运行它.数字100的确切含义是什么.

c linux kernel

14
推荐指数
1
解决办法
2万
查看次数