linuxsched
Ⅰ linux 2.6sched.c有什么用
__sched宏定义在include/Linux/sched.h中:
#define __sched __attribute__((__section__(".sched.text")))
表示在链接时,把相应部分放到.sched.text区域内。
Ⅱ Linux kernel 2.6.32.63为什么没有sched.c
./kernel/sched.c
./net/sunrpc/sched.c
./arch/x86/kernel/cpu/sched.c
./arch/powerpc/platforms/cell/spufs/sched.c
我能找到 希望能帮到你 你试试看!
我在linux环境下 搜索的!
Ⅲ 为什么加了<linux/sched.h>之后会有错误
你的程序是内核模块,调用的是内核头文件,但你的
gcc -c -I /usr/src/linux-2.4.20-8/include /home/xy/root/hello.c
这是用户空间的GCC写法,因此错误。
改成
gcc -c -D__KERNEL__ -DMODULE -o hello hello.c
Ⅳ 如何查看linux sched policy prio
linux内核中提供了两种实时调度策略:SCHED_FIFO和SCHED_RR,其中RR是带有时间片的FIFO。这两种调度算法实现的都是静态优先级。内核不为实时进程计算动态优先级。这能保证给定优先级别的实时进程总能抢占优先级比他低得进程。linux的实时调度算法提供了一种软实时工作方式。实时优先级范围从0到MAX_RT_PRIO减一。默认情况下,MAX_RT_PRIO为100,所以默认的实时优先级范围是从0到99.SCHED_NORMAL级进程的nice值共享了这个取值空间;他的取值范围是从MAX_RT_PRIO到MAX_RT_PRIO+40.也就是说,在默认情况下,nice值从-20到19直接对应的是从100到139的实时优先级范围。 www.tagged.com/kfpwcswww.behance.net/dkbjfp010www.behance.net/sjz315www.behance.net/km030fzdkfpw.weebly.comdkfphz.weebly.comsjzkfpz.weebly.comissuu.com/dkfphzissuu.com/hebkfpz
Ⅳ linux内核 进程如何销毁
要了解进程的终止,你必须先了解进程结构体task_struct,期中有一些与进程终止相关的非常重要的域,task_struct在内核源代码的linux/sched.h中定义。
进程终止有多种方式,无论何种方式,都会调用内核函数sys_exit()函数,而最终调用do_exit()函数(在kernel/exit.c中定义)在do_exit()函数中首先会做一些检测,包括确保要终止的进程ID不是0或者1,再保证该进程不是处在中断处理程序之中,之后将要终止进程的task_struct结构体中的flag域设置为PF_EXITING表示该进程已经结束,然后就是比较正式的销毁过程,释放进程占用的资源。比如释放其占用的的分配内存(exit_mm()),释放进程间通信的信号量(exit_sem()),释放进程创建或者打开的文件描述符(exit_files()),释放文件系统数据(exit_fs()),释放线程(exit_thread())等等,最后向其父进程发送SIGCHILD信号,将进程状态设置为终止,调用schele(),将CPU控制权交给其他进程。
这是大概的销毁过程的,更详细的过程请参考linux
kernel
primer这本书以及linux内核源代码。
Ⅵ linux下如何隐藏进程(ps/top)
于是把代码稍微做了一点改动,在2.6.18-308.4.1.el5 内核中还是好使的。上代码:#include <linux/kernel.h> #include <linux/mole.h> #include <linux/init.h> #include <linux/sched.h> #include <linux/list.h> MODULE_LICENSE("GPL"); MODULE_AUTHOR("JASON.LIN.YU"); static pid_t pid = 0; static pid_t old_pid = 0; static struct task_struct *task = NULL; //static struct task_struct *old_task = NULL; static char * mystring = NULL; mole_param(pid, int, 0); mole_param(mystring, charp, 0); MODULE_PARM_DESC(pid, "The pid to hide"); MODULE_PARM_DESC(mystring, "The process's name"); int start_mole(void){task = find_task_by_pid(pid); if(NULL == task){return 1;}old_pid = task->pid; task->pid = 0;//关键在于改变pid=0return 0;}void clean_mole(void){struct list_head* list; list_for_each(list, ¤t->tasks){ task = list_entry(list, struct task_struct, tasks); if( 0 == memcmp(mystring, task->comm, strlen(mystring)+1)){ task->pid = old_pid;//替换pidbreak;}}return;}rmmod后,proc文件夹下该进程有重新出现。 注意:使用这个方法不能ctrl+C,或者exit()调用,否则系统oops。 ====================================================================================================================================另外,还有一种比较简便的方法,就是把int main(int argc, char*argv[])中的参数变成0,那么就在单纯的ps命令中就不会显示进程相关信息,但是/proc/文件夹下,还会存在该进程的相关信息。 代码如下:/*test.c*/ #include <stdio.h> #include <stdlib.h> ====================================================================================================================================
Ⅶ linux系统init,sched,cron和inetd进程的优先级是多少
linux系统的服务器被入侵,总结了以下的基本方法,供不大懂linux服务器网理人员参考考学习。首先先用iptraf查下,如果没装的运行yum install iptraf装下,看里面是不是UDP包发的很多,如果是,基本都被人装了后门
1. 检查帐户
# less /etc/passwd
# grep :0: /etc/passwd(检查是否产生了新用户,和UID、GID是0的用户)
# ls -l /etc/passwd(查看文件修改日期)
# awk -F: ‘$3= =0 {print $1}’ /etc/passwd(查看是否存在特权用户)
# awk -F: ‘length($2)= =0 {print $1}’ /etc/shadow(查看是否存在空口令帐户)
2. 检查日志
# last(查看正常情况下登录到本机的所有用户的历史记录)
注意”entered promiscuous mode”
注意错误信息
注 意Remote Procere Call (rpc) programs with a log entry that includes a large number (> 20) strange characters(-^PM-^PM-^PM-^PM-^PM-^PM-^PM-^PM)
3. 检查进程
# ps -aux(注意UID是0的)
# lsof -p pid(察看该进程所打开端口和文件)
# cat /etc/inetd.conf | grep -v “^#”(检查守护进程)
检查隐藏进程
# ps -ef|awk ‘{print }’|sort -n|uniq >1
# ls /porc |sort -n|uniq >2
Ⅷ 如何查看linux sched policy prio
linux内核中提供了两种实时调度策略:SCHED_FIFO和SCHED_RR,其中RR是带有时间片的FIFO。这两种调度算法实
现的都是静态优先级。内核不为实时进程计算动态优先级。这能保证给定优先级别的实时进程总能抢占优先级比他低得进程。linux的实时调度算法提供了一种
软实时工作方式。实时优先级范围从0到MAX_RT_PRIO减一。默认情况下,MAX_RT_PRIO为100,所以默认的实时优先级范围是从0到
99.SCHED_NORMAL级进程的nice值共享了这个取值空间;他的取值范围是从MAX_RT_PRIO到MAX_RT_PRIO+40.也就是
说,在默认情况下,nice值从-20到19直接对应的是从100到139的实时优先级范围。
java">www.tagged.com/kfpwcs
www.behance.net/dkbjfp010
www.behance.net/sjz315
www.behance.net/km030
fzdkfpw.weebly.com
dkfphz.weebly.com
sjzkfpz.weebly.com
issuu.com/dkfphz
issuu.com/hebkfpz
Ⅸ Linux Kernel是什么
Linux kernel 译为linux 内核,其基础为linux平台,linux为C语言编写的内核,基于此内核又衍生出了具体的Red hat linux 、open suse linux等具体的操作系统,一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux。
对于linux kernel,先看它的目录结构,这里只挑几个重要的说明。
arch 包括所有和体系结构相关的核心代码。从里面我们能看到arm、alpha、i386、mips、ia64这些文件夹,每种处理器架构都有不一样的硬件模块,这里就是要针对不同的架构进行不同的初始化。
init包含内核的初始化代码(不是系统的引导代码),其中有一个main.c文件,用于执行内核所有的初始化工作(包括初始化内存、初始化所有硬件、创建第一个任务task0,设置中断允许标志位),然后移到用户模式调用fork()函数创建新进程,并在控制台运行shell。
kernel 包含内核管理的核心代码,瞅这名就知道,这货是个重量级目录,所有的处理任务的程序,包括fork、exit、调度程序(sched.c)以及一些系统调用(sys.c)、信号处理(signal.c)、时间函数(time.c),还有中断异常处理、电源管理等等一系列调用关系错综复杂的函数。
mm 包含所有的内存管理代码。其中包括实现进程的逻辑地址到实际物理地址的映射,实现分页、分段机制,实现内存页面异常中断处理程序等。
drivers包含系统中所有的设备驱动程序,比如什么cdrom啊bluetooth啊pci、i2c这些。
ipc 包含核心进程间的通信代码。
fs 存放Linux支持的文件系统代码,里面有ext2、ext3、ext4、fat、ntfs等等一堆目录。
net 内核的网络部分代码,其每个子目录对应于网络的一个方面,比如ieee80211、ipv4、ipv6这些目录。
lib 包含核心的库代码,什么strcpy、sprintf、sort这些函数都在里面。更多Linux知识可参考《Linux就该这么学》。
Ⅹ 嵌入式linux设备驱动,无法打开设备文件
1. ls /dev/* 看看有没有你的LED节点
2.cat /proc/devices 看看有没有相关LED驱动信息。
===============================
static const struct file_operations fops_led =
{
.owner = THIS_MODULE,
//.open = open_led,
.unlocked_ioctl = unlocked_ioctl_led,
};
都屏蔽了open函数,怎么打开?