linux进程管理
1. linux进程管理怎么样工作的
linux的进程管理,process进程间的常用信号1 SIGHUP 如果进程终止则挂断该进程2 SIGINT 从键盘ctrl-c中断进程9 SIGKILL 强制终止进程15 SIGTERM 正常终止进程17 SIGSTOP 从键盘ctrl-z暂停进程详细见man 7 signal进程管理相关命令ps 显示当前进程信息top 实时显示当前进程信息并可以进程管理pstree 显示进程树结构kill 向进程发送信号,对进程重启、终止等功能killall 通过进程名称关闭进程nice 启动新进程并设置它的优先级root可任意调整nice值,范围-20~19一般user仅可将nice值调高,范围0~19renice 对正在运行的进程的nice值进行修改free 显示内存使用情况uname 显示系统信息uptime 显示系统启动时间和工作负载netstat 显示网络信息dmesg 显示核心检测系统信息vmstat 检测系统各项资源运行状况fuser 查看正使用文件的进程lsof 查看某个进程正在使用那些文件pidof 找出正在运行的进程的PID相关文件/proc/* 整个系统的所有进程信息详细见man 5 proc
2. Linux进程内存管理
对于包含MMU的处理器而言,Linux系统提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。在Linux系统中,进程的4GB内存空间被分为两个部分——用户空间与内核空间。用户空间的地址一般分布为0~3GB(即PAGE_OFFSET,在Ox86中它等于OxC0000000),这样,剩下的3~4GB为内核空间,用户进程通常只能访问用户空间的虚拟地址,不能访问内核空间的虚拟地址。用户进程只有通过系统调用(代表用户进程在内核态执行)等方式才可以访问到内核空间。
每个进程的用户空间都是完全独立、互不相干的,用户进程各自有不同的页表。而内核空间是由内核负责映射,它并不会跟着进程改变,是固定的。内核空间的虚拟地址到物理地址映射是被所有进程共享的,内核的虚拟空间独立于其他程序。
Linux中1GB的内核地址空间又被划分为物理内存映射区、虚拟内存分配区、高端页面映射区、专用页面映射区和系统保留映射区这几个区域。
对于x86系统而言,一般情况下,物理内存映射区最大长度为896MB,系统的物理内存被顺序映射在内核空间的这个区域中。当系统物理内存大于896MB时,超过物理内存映射区的那部分内存称为高端内存(而未超过物理内存映射区的内存通常被称为常规内存),内核在存取高端内存时必须将它们映射到高端页面映射区。Linux保留内核空间最顶部FIXADDR_TOP~4GB的区域作为保留区。
当系统物理内存超过4GB时,必须使用CPU的扩展分页(PAE)模式所提供的64位页目录项才能存取到4GB以上的物理内存,这需要CPU的支持。加入了PAE功能的Intel Pentium Pro及以后的CPU允许内存最大可配置到64GB,它们具备36位物理地址空间寻址能力。
由此可见,对于32位的x86而言,在3~4GB之间的内核空间中,从低地址到高地址依次为:物理内存映射区→隔离带→vmalloc虚拟内存分配器区→隔离带→高端内存映射区→专用页面映射区→保留区。
3. Linux有什么进程管理命令
下面三条命令都可以用来查看进程:
ps -lA 是十分常用的,l参数用于显示进程的详细信息,A参数用于显示所有的进程。可以配合grep命令来查找特定的进程
top 能够显示CPU和内存的占用率,用于动态监视高资源占用
pstree 用来查看进程的父子关系
4. linux下提供了哪些进程管理工具
ps top kill 想不出来了。
5. linux内核基础进程管理
linux内核基础进程管理
进程管理
进程:
处于执行期的程序(目标码存放在内存中),进程是其所用的资源和打开的文件描述符,CPU的使用情况,挂起的信号,内核的内部数据等等一系列的信息与资源的总称。
执行线程:
简称线程,是在进程中活动的对象,每一个线程都拥有一个独立的程序计数器,进程栈,和一组进程寄存器。
在内核看来,线程只是一种特殊的进程,所以内核的调度对象是线程,而不是进程。
进程提供两种虚拟机制:
虚拟处理器和虚拟内存,其实就是一种假象,给进程提供的一种假象,好像进程正在独立的使用所有的内存资源与整个处理器,假象一直是计算机的一个重要问题,在《深入理解计算机系统》一书中有更详细的描述。
进程描述符及任务结构:
内核把进程的列表放在一个叫做任务队列的双向链表中,其中的每一项是一个结构体,task_struct这是一个称为进程描述符的结构这个结构包含一个进程所需的所有信息。在32位机器上就有1.7KB已经不小了。
分配进程描述符:
linux通过slab分配器分配进程描述符。现在一般建立一个struct thread_info 结构体来记录进程描述符的,这个结构体是为了减少对寄存器的依赖,尤其是像X86 这种寄存器较少的结构,一般进程描述符是提前分配并且在一个进程死亡后它的描述符还可以再次使用所以linux的进程创建非常迅速。
进程描述符的存放:
内核通过唯一的进程标识值或者PID来标识每一个进程。PID其实是一个整形,可以通过改变系统代码的宏值来改变进程ID的上限。
6. linux下怎么用一个进程管理其他进程用c写。
fork是开启子进程,和管理其他进程搭不上边,exec是也是开启进程类的
所以你直接用c写一个调用shell的方法,通过shell调用系统自带的命令对进程进行管理
7. linux系统如何进行进程管理,内存管理,设备管理和文件管理
一楼仁兄那本书有点太深入,并且巨厚,若想简单大概的了解一下内核,可以看robert love的《linux内核设计与实现》,薄的很,大致的都讲了一下,适合入门
8. linux进程管理的实现
管理系统进程还是自己派生出来的进程, 是讲述系统的进程管理原理吗?
如果是实现自己的进程管理的话,可以采用派生子进程,然后通过消息队列、管道、共享内存区管理子进程
系统的进程实现原理很复杂的
9. linux进程管理怎么关闭后台进程
一、 &
加在一个命令的最后,可以把这个命令放到后台执行 ,如gftp &,
二、ctrl + z
可以将一个正在前台执行的命令放到后台,并且处于暂停状态,不可执行
三、jobs
查看当前有多少在后台运行的命令
jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息;
四、fg
将后台中的命令调至前台继续运行
如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
五、bg
将一个在后台暂停的命令,变成继续执行 (在后台执行)
如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
将任务转移到后台运行:
先ctrl + z;再bg,这样进程就被移到后台运行,终端还能继续接受命令。
概念:当前任务
如果后台的任务号有2个,[1],[2];如果当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码“[2]” 的后台任务。所以可以得出一点,即当前任务是会变动的。当用户输入“fg”、“bg”和“stop”等命令时,如果不加任何引号,则所变动的均是当前任务
进程的终止
后台进程的终止:
方法一:
通过jobs命令查看job号(假设为num),然后执行kill %num
方法二:
通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid
前台进程的终止:
ctrl+c
kill的其他作用
kill除了可以终止进程,还能给进程发送其它信号,使用kill -l 可以察看kill支持的信号。
SIGTERM是不带参数时kill发送的信号,意思是要进程终止运行,但执行与否还得看进程是否支持。如果进程还没有终止,可以使用kill -SIGKILL pid,这是由内核来终止进程,进程不能监听这个信号。
进程的挂起
1)、后台进程的挂起:
在solaris中通过stop命令执行,通过jobs命令查看job号(假设为num),然后执行stop %num;
在redhat中,不存在stop命令,可通过执行命令kill -stop PID,将进程挂起;
当要重新执行当前被挂起的任务时,通过bg %num 即可将挂起的job的状态由stopped改为running,仍在后台执行;当需要改为在前台执行时,执行命令fg %num即可;
2)、前台进程的挂起:
ctrl+Z;