当前位置: 技术问答>linux和unix
新手问题,请大家帮忙(关于《Linux内核设计与实现》的问题)
来源: 互联网 发布时间:2016-08-20
本文导语: 1。load_balance()函数在最新的Linux源代码中那个文件夹中? 2。/* 'q' 是我们希望睡眠的等待队列 */ DECLARE_WAITQUEUE(wait,current); add_wait_queue(q , &wait); while(!condition){ /* 'condition '是我们在等待的事件*/ ...
1。load_balance()函数在最新的Linux源代码中那个文件夹中?
2。/* 'q' 是我们希望睡眠的等待队列 */
DECLARE_WAITQUEUE(wait,current);
add_wait_queue(q , &wait);
while(!condition){ /* 'condition '是我们在等待的事件*/
set_current_state(TASK_INTERRUPTIBLE)
if(signal_pending(current))
/* 处理信号 */
schedule();
}
set_current_state(TASK_RUNNING);
remove_wait_queue(q,&wait);
这里的condition是什么事件啊?能不能具体说明一下,看过书但还是理解的不是很深刻,什么情况下condition为真,什么情况下condition为假?schedule()在这里调度的下一个进程是什么?
3。一个内核最基本要具备哪些功能?
4“注意系统调用get_pid()在内核中被定义成sys_getpid().这是Linux中所有系统调用都应该遵守的命名规则。。。”这里到底get_pid()是系统调用还是sys_getpid()是系统调用?如果sys_getpid()是系统调用的话get_pid()又是什么?谁能帮我把系统调用再形象的解释一下,看书没看太明白。。。。
我的分数不多了,所以不能给太多的分,希望大家能帮帮我。。。谢谢啦~~
2。/* 'q' 是我们希望睡眠的等待队列 */
DECLARE_WAITQUEUE(wait,current);
add_wait_queue(q , &wait);
while(!condition){ /* 'condition '是我们在等待的事件*/
set_current_state(TASK_INTERRUPTIBLE)
if(signal_pending(current))
/* 处理信号 */
schedule();
}
set_current_state(TASK_RUNNING);
remove_wait_queue(q,&wait);
这里的condition是什么事件啊?能不能具体说明一下,看过书但还是理解的不是很深刻,什么情况下condition为真,什么情况下condition为假?schedule()在这里调度的下一个进程是什么?
3。一个内核最基本要具备哪些功能?
4“注意系统调用get_pid()在内核中被定义成sys_getpid().这是Linux中所有系统调用都应该遵守的命名规则。。。”这里到底get_pid()是系统调用还是sys_getpid()是系统调用?如果sys_getpid()是系统调用的话get_pid()又是什么?谁能帮我把系统调用再形象的解释一下,看书没看太明白。。。。
我的分数不多了,所以不能给太多的分,希望大家能帮帮我。。。谢谢啦~~
|
这里到底get_pid()是系统调用还是sys_getpid()是系统调用
------------------
这个涉及到系统调用的实现
在用户态调用get_pid 然后会产生int 0x80中断 进入 内核态 由系统调用号(与get_pid对应)调用相应系统调用 里对应的是sys_getpid()
-----------------
schedule()
这个要看任务调度的实现
涉及到优先级 时间片轮转 优先级高的先执行,但是这个优先级会动态变化 防止其他程序饥饿
------------------
这个涉及到系统调用的实现
在用户态调用get_pid 然后会产生int 0x80中断 进入 内核态 由系统调用号(与get_pid对应)调用相应系统调用 里对应的是sys_getpid()
-----------------
schedule()
这个要看任务调度的实现
涉及到优先级 时间片轮转 优先级高的先执行,但是这个优先级会动态变化 防止其他程序饥饿
|
一个内核最基本要具备哪些功能?
--------------------------
内存管理模块
进程调度模块
进程间通信模块
文件系统
网络接口模块
--------------------------
内存管理模块
进程调度模块
进程间通信模块
文件系统
网络接口模块
|
1。load_balance()函数在最新的Linux源代码中那个文件夹中?
--------------------------
2.6.33 /kernel/sched.c 4150行
这里的condition是什么事件啊?
-----------------
用户自定义的条件,比如等待某个变量等于某值
schedule()在这里调度的下一个进程是什么
----------------------------------------
根据调度算法来,情况较复杂
--------------------------
2.6.33 /kernel/sched.c 4150行
这里的condition是什么事件啊?
-----------------
用户自定义的条件,比如等待某个变量等于某值
schedule()在这里调度的下一个进程是什么
----------------------------------------
根据调度算法来,情况较复杂
|
一个内核最基本要具备哪些功能?
--------------
百度
这里到底get_pid()是系统调用还是sys_getpid()是系统调用?
-----------------
说得很明白了,名字不同而已,一样的
系统调用和API又有什么联系?
--------------------------------
系统调用就是内核提供给用户的api
--------------
百度
这里到底get_pid()是系统调用还是sys_getpid()是系统调用?
-----------------
说得很明白了,名字不同而已,一样的
系统调用和API又有什么联系?
--------------------------------
系统调用就是内核提供给用户的api
|
一个内核最基本要具备哪些功能?
--------------------------
内存管理
任务管理
文件系统
--------------------------
内存管理
任务管理
文件系统