kthreadd-linux下2号进程】的更多相关文章

参考: 1.  Linux下1号进程的前世(kernel_init)今生(init进程)----Linux进程的管理与调度(六) 2. linux挂载根文件系统过程 3. BusyBox init工作流程 4. kthreadd-linux下2号进程 linux内核在启动的最后用kernel_thread生成两个内核线程:rest_init()会开启两个进程:kernel_init,kthreadd,之后主线程变成idle线程,init/main.c. 其中kernel_init内核线程转换为用…
前言 Linux下有3个特殊的进程,idle进程(PID = 0), init进程(PID = 1)和kthreadd(PID = 2) idle进程由系统自动创建, 运行在内核态 idle进程其pid=0,其前身是系统创建的第一个进程,也是唯一一个没有通过fork或者kernel_thread产生的进程.完成加载系统后,演变为进程调度.交换 init进程由idle通过kernel_thread创建,在内核空间完成初始化后, 加载init程序, 并最终用户空间 由0进程创建,完成系统的初始化.…
前面我们了解到了0号进程是系统所有进程的先祖, 它的进程描述符init_task是内核静态创建的, 而它在进行初始化的时候, 通过kernel_thread的方式创建了两个内核线程,分别是kernel_init和kthreadd,其中kernel_init进程号为1 start_kernel在其最后一个函数rest_init的调用中,会通过kernel_thread来生成一个内核进程,后者则会在新进程环境下调 用kernel_init函数,kernel_init一个让人感兴趣的地方在于它会调用r…
2号进程 内核初始化rest_init函数中,由进程 0 (swapper 进程)创建了两个process init 进程 (pid = 1, ppid = 0) kthreadd (pid = 2, ppid = 0) 所有其它的内核线程的ppid 都是 2,也就是说它们都是由kthreadd thread创建的 所有的内核线程在大部分时间里都处于阻塞状态(TASK_INTERRUPTIBLE)只有在系统满足进程需要的某种资源的情况下才会运行 它的任务就是管理和调度其他内核线程kernel_t…
参考: 1. linux常见进程与内核线程 2. Linux下2号进程的kthreadd--Linux进程的管理与调度(七) 本文中代码内核版本:3.2.0 kthreadd:这种内核线程只有一个,它的作用是管理调度其它的内核线程.这个线程不能关闭.它在内核初始化的时候被创建,会循环运行一个叫做kthreadd的函数,该函数的作用是运行kthread_create_list全局链表中维护的kthread.其他任务或代码想创建内核线程时需要调用kthread_create(或kthread_cre…
linux的 0号进程 和 1 号进程 Linux下有3个特殊的进程,idle进程(PID = 0), init进程(PID = 1)和kthreadd(PID = 2) * idle进程由系统自动创建, 运行在内核态 idle进程其pid=0,其前身是系统创建的第一个进程,也是唯一一个没有通过fork或者kernel_thread产生的进程.完成加载系统后,演变为进程调度.交换 * init进程由idle通过kernel_thread创建,在内核空间完成初始化后, 加载init程序, 并最终用…
windows和linux下解决Tomcat进程 windows下启动Tomcat报错,8080端口号被占用,报错信息如下 两种解决方法,一种是关闭了这个端口号,另外一种是修改Tomcat下的server.xml中的port为其他的,让端口号不再冲突 首先来看windows下如何关闭Tomcat进程 打开cmd执行这个命令 netstat -ano | findstr 8080 此时会出现8080端口的进程号,如图: 上图中的2704就是8080的进程号(进程号不一定相同),我们关闭了就行了,命…
windows和linux下解决Tomcat进程 windows下启动Tomcat报错,8080端口号被占用,报错信息如下 两种解决方法,一种是关闭了这个端口号,另外一种是修改Tomcat下的server.xml中的port为其他的,让端口号不再冲突 首先来看windows下如何关闭Tomcat进程 打开cmd执行这个命令 netstat -ano | findstr 8080 此时会出现8080端口的进程号,如图: 上图中的2704就是8080的进程号(进程号不一定相同),我们关闭了就行了,命…
###linux下查看当前进程以及杀死进程 查看进程 ps命令查找与进程相关的PID号: ps a :显示现行终端机下的所有程序,包括其他用户的程序. ps -A :显示所有程序. ps c :列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示. ps -e :此参数的效果和指定"A"参数相同. ps e :列出程序时,显示每个程序所使用的环境变量. ps f :用ASCII字符显示树状结构,表达程序间的相互关系. ps -H :显示树状结构,表示程序间的相互关…
Linux下查看某个进程打开的文件数-losf工具常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在linux操作系统中,一切皆文件.通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.比如说传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等.有时候我们可能需要统计一下那个进程占用了那类文件,或者该进程总共打开的文件数等等,此时我们就需要一个工具帮我们查看相应的信息啦,它就是本片博客的主人公-lsof. 一.losf是个什么玩意? 1>.los…
  Linux下分析某个进程CPU占用率高的原因 通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用  1.top 查到占用cpu高的进程pid 2.查看该pid的线程:top -H -p 9532 3.查看这个线程所有系统调用:strace -p 10017 不停循环输出Connection timed out,让开发查看问题…
解决linux下tomcat停止进程任存在问题 在Linux下(之所以强调linux下,是因为在windows下正常),执行tomcat ./shutdown.sh 后,虽然tomcat服务不能正常访问,但是ps -ef |grep tomcat 后,发现tomcat对应的java进程未随web容器关闭而销毁,进而存在僵尸java进程.多次shutdown以后会发现系统内存溢出,然后需要一个一个把tomcat的进程杀掉 问题原因 在Linux系统中当有非守护线程(即User Thread)存在,…
嗯,近期都在网易游戏实习,所以貌似有段时间没有上来写点东西了... 来网易游戏实习最基本的目的事实上就是想知道在游戏公司里面工作都是些什么内容,毕竟自己曾经也没有接触过游戏公司.. 还比較的好奇.. . 曾经可能认为游戏公司各种高大上吧.做的工作各种有意思. .如今看来应该也不是这样子的,毕竟大多数时间应该还是在写游戏的逻辑代码了.. . 挺奇怪的. . .感觉尽管在游戏公司实习.可是做的事情还是自己的老本行. ..由于要用python开发一个server的监控系统.并且有提出要监控某个指定进程…
http://blog.csdn.net/brioxu/article/details/5104736 在linux下查看进程大家都会想到用 ps -ef|grep XXX ps -aux | head -1 打印title aux打出cpu和内存占有情况 可是看到的不是全路径,怎么看全路径呢? 每个进程启动之后在 /proc下面有一个于pid对应的路径 例如:ps -ef|grep python 显示:oracle    4431  4366  0 18:56 pts/2    00:00:0…
1) 检查当前僵尸进程信息 # ps -ef | grep defunct | grep -v grep | wc -l 175 # top | head -2 top - 15:05:54 up 97 days, 23:49, 4 users, load average: 0.66, 0.45, 0.39 Tasks: 829 total, 1 running, 479 sleeping, 174 stopped, 175 zombie # ps -ef | grep defunct | gr…
linux下查看出问题的java进程,便于发现程序问题.命令如下: 找到存在问题的java进程号,ps -ef|grep java ,如进程30021 卡住,需要查看该进程信息,那么敲入命令: jstack 30021 > /root/dump30021  ,即可在root下生成dump30021的进程信息文件…
ps aux|grep python|grep -v grep|cut -c 9-15|xargs kill -15 管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入.下面说说用管道符联接起来的 几个命令: “ps aux”是linux 里查看所有进程的命令.这时检索出的进程将作为下一条命令“grep python”的输入. “grep python”的输出结果是,所有含有关键字“python”的进程,这是python程序 “grep -v grep”是在列出的进程中…
在linux下查看进程大家都会想到用 ps -ef|grep XXX 但是看到的不是全路径.怎么看全路径呢? 每一个进程启动之后在 /proc以下有一个于pid相应的路径 比如:ps -ef|grep python 显示:oracle    4431  4366  0 18:56 pts/2    00:00:00 python Server.py 4431就是进程号 到/proc/4431下.ls -l 会看到(须要root权限): 总用量 0 -r--r--r--    1 oracle  …
1.CPU占用最多的前10个进程: ps auxw|head -1;ps auxw|sort -rn -k3|head -10 2.内存消耗最多的前10个进程 ps auxw|head -1;ps auxw|sort -rn -k4|head -10 3.虚拟内存使用最多的前10个进程 ps auxw|head -1;ps auxw|sort -rn -k5|head -10 4.也可以试试 ps auxw --sort=rssps auxw --sort=%cpu 5.看看几个参数含义 %ME…
ps aux|grep python|grep -v grep|cut -c 9-15|xargs kill -15 管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入.下面说说用管道符联接起来的 几个命令: “ps aux”是linux 里查看所有进程的命令.这时检索出的进程将作为下一条命令“grep python”的输入. “grep python”的输出结果是,所有含有关键字“python”的进程,这是python程序 “grep -v grep”是在列出的进程中…
通过ps及top命令查看进程信息时,只能查到相对路径,查不到的进程的详细信息,如绝对路径等.这时,我们需要通过以下的方法来查看进程的详细信息: Linux在启动一个进程时,系统会在/proc下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件即记录了绝对路径,通过ll或ls –l命令即可查看. ll /proc/PID 如下图,在proc目录下的进程文件夹 找到并进入需要查看的进程文件夹: cwd符号链接的是进程运行目录: exe符号连接就是执行程序的绝…
linux下我们可以调用fork函数创建子进程,创建的子进程将会得到父进程的数据空间.堆.栈......副本(采用写时复制机制),子进程将会继承父进程的信号掩码.信号处理方式.当前工作目录.会话id.组id.......当子进程退出时父进程应当及时获取子进程退出状态,否则,如果父进程是一直在运行,那么子进程的退出状态将一直保存在内存中,直到父进程退出才释放. 我们可以使用如下几种方法避免僵尸进程的产生: 1.在fork后调用wait/waitpid函数取得子进程退出状态. 2.调用fork两次(…
1.用top命令 1.top top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 可以直接使用top命令后,查看%MEM的内容.可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令: $ top -u oracle 内容解释: PID:进程的ID USER:进程所有者 PR:进程的优先级别,越小越优先被执行 NInice:值 VIRT:进程占用的虚拟内存 RES:进程占用的物理内存…
--kill某个用户下的所有进程(用户为test)--pkill  # pkill -u test--killall  # killall -u test--ps  # ps -ef | grep test | awk '{ print $2 }' | xargs kill -9--pgrep # pgrep -u test | xargs kill -9 --kill某个程序的所有进程(程序为postgresql) --ps # ps -ef|grep postgres|grep -v gre…
根据端口查进程: lsof -i:port netstat -nap | grep port 根据进程号查端口: lsof -i|grep pid netstat -nap | grep pid 根据进程名查找pid.port: ps -ef |grep tomcat ps -ef |grep port(根据port查找相关进程) ps -ef |grep pid(根据pid查找相关进程) 引申: netstat的相关资料:https://www.cnblogs.com/ggjucheng/ar…
转自:http://www.cnblogs.com/xuxm2007/archive/2011/07/29/2121280.html   #include <unistd.h> int daemon(int nochdir,int noclose) 在创建精灵进程的时候,往往需要将精灵进程的工作目录修改为"/"根目录 并且将标准输入,输出和错误输出重定向到/dev/null daemon的作用就是当参数nochdir为0时,将根目录修改为工作目录 noclose为0时,做输…
ngx_int_t ngx_daemon(ngx_log_t *log) { int fd; // 让init进程成为新产生进程的父进程: // 调用fork函数创建子进程后,使父进程立即退出.这样,产生的子进程将变成孤儿进程,并被init进程接管, // 同时,所产生的新进程将变为在后台运行. switch (fork()) { : ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "fork() failed"); return NGX_ER…
转自:http://blog.csdn.net/kongkongkkk/article/details/74366200 如果让你编写一个程序,来获取虚拟地址对应的物理地址..你会试着操作MMU吗..→_→* Linux文件目录中的/proc记录着当前进程的信息,称其为虚拟文件系统.在/proc下有一个链接目录名为self,这意味着哪一个进程打开了它,self中存储的信息就是所链接进程的.self中有一个名为pagemap的文件,专门用来记录所链接进程的物理页号信息.这样通过/proc/pid/…
什么是僵尸进程? 首先内核会释放终止进程(调用了exit系统调用)所使用的所有存储区,关闭所有打开的文件等,但内核为每一个终止子进程保存了一定量的信息.这些信息至少包括进程ID,进程的终止状态,以及该进程使用的CPU时间,所以当终止子进程的父进程调用wait或waitpid时就可以得到这些信息. 而僵尸进程就是指:一个进程执行了exit系统调用退出,而其父进程并没有为它收尸(调用wait或waitpid来获得它的结束状态)的进程. 任何一个子进程(init除外)在exit后并非马上就消失,而是留…
什么是僵尸进程? 首先内核会释放终止进程(调用了exit系统调用)所使用的所有存储区,关闭所有打开的文件等,但内核为每一个终止子进程保存了一定量的信息.这些 信息至少包括进程ID,进程的终止状态,以及该进程使用的CPU时间,所以当终止子进程的父进程调用wait或waitpid时就可以得到这些信息. 而僵尸进程就是指:一个进程执行了exit系统调用退出,而其父进程并没有为它收尸(调用wait或waitpid来获得它的结束状态)的进程. 任何一个子进程(init除外)在exit后并非马上就消失,而是…