linux进程管理及进程
A. 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
B. linux内核基础进程管理
linux内核基础进程管理
进程管理
进程:
处于执行期的程序(目标码存放在内存中),进程是其所用的资源和打开的文件描述符,CPU的使用情况,挂起的信号,内核的内部数据等等一系列的信息与资源的总称。
执行线程:
简称线程,是在进程中活动的对象,每一个线程都拥有一个独立的程序计数器,进程栈,和一组进程寄存器。
在内核看来,线程只是一种特殊的进程,所以内核的调度对象是线程,而不是进程。
进程提供两种虚拟机制:
虚拟处理器和虚拟内存,其实就是一种假象,给进程提供的一种假象,好像进程正在独立的使用所有的内存资源与整个处理器,假象一直是计算机的一个重要问题,在《深入理解计算机系统》一书中有更详细的描述。
进程描述符及任务结构:
内核把进程的列表放在一个叫做任务队列的双向链表中,其中的每一项是一个结构体,task_struct这是一个称为进程描述符的结构这个结构包含一个进程所需的所有信息。在32位机器上就有1.7KB已经不小了。
分配进程描述符:
linux通过slab分配器分配进程描述符。现在一般建立一个struct thread_info 结构体来记录进程描述符的,这个结构体是为了减少对寄存器的依赖,尤其是像X86 这种寄存器较少的结构,一般进程描述符是提前分配并且在一个进程死亡后它的描述符还可以再次使用所以linux的进程创建非常迅速。
进程描述符的存放:
内核通过唯一的进程标识值或者PID来标识每一个进程。PID其实是一个整形,可以通过改变系统代码的宏值来改变进程ID的上限。
C. Linux进程和文件管理
通过进程pid 查看进程引用的文件
#lsof -p 13444
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
pptpd 13444 root cwd DIR 3,1 4096 2 /
pptpd 13444 root rtd DIR 3,1 4096 2 /
pptpd 13444 root txt REG 3,1 32597 2962913 /usr/local/sbin/pptpd
pptpd 13444 root mem REG 3,1 144776 3375150 /lib64/ld-2.5.so
通过端口号查看
##lsof -i [email protected]:80
#+d 显示某目录下的打开文件 +D 显示某目录下的打开文件,包括子目录。
lsof +d /usr/local
lsof +D /usr/local
#-u 显示某用户打开的文件
lsof -u root
D. linux操作系统中常见的进程管理命令有哪些
ps:查看进程
pstree:显示进程状态树
pgrep:查找匹配条件的进程
kill:终止进程
killall:通过进程名终止进程
pkill:通过进程名终止进程
top:实时显示系统中各个进程的资源占用状况
nice:调整程序运行时的优先级
renice:调整运行中进程的优先级
nohup:用户退出系统进程继续工作
strace:跟踪进程的系统调用
ltrace:跟踪进程调用库函数
runlevel:输出当前运行级别
init:初始化Linux进程
service:管理系统服务
E. 讨论linux 系统进程运行的机制和特点,系统通过什么来管理进程
进程提供了两种优先级,一种是普通的进程优先级,第二个是实时优先级。前者适用SCHED_NORMAL调度策略,后者可选SCHED_FIFO或SCHED_RR调度策略。任何时候,实时进程的优先级都高于普通进程,实时进程只会被更高级的实时进程抢占,同级实时进程之间是按照FIFO(一次机会做完)或者RR(多次轮转)规则调度的。
首先,说下实时进程的调度
实时进程,只有静态优先级,因为内核不会再根据休眠等因素对其静态优先级做调整,其范围在0~MAX_RT_PRIO-1间。默认MAX_RT_PRIO配置为100,也即,默认的实时优先级范围是0~99。而nice值,影响的是优先级在MAX_RT_PRIO~MAX_RT_PRIO+40范围内的进程。
F. Linux如何实现进程管理
管理系统进程还是自己派生出来的进程, 是讲述系统的进程管理原理吗?
如果是实现自己的进程管理的话,可以采用派生子进程,然后通过消息队列、管道、共享内存区管理子进程
系统的进程实现原理很复杂的
G. Linux如何进行进程调度引入线程机制后,进程管理内容包括哪些
进程调度的算法有很多,简单来说就是每个进程都有一个自己的时间片,时间到了,就会被挂起,然后系统挑选下一个合适的进程来执行。至于谁合适,那就要看算法了,优先级,是不是饥饿,I/O型还是运算型,都要考虑的。
调度算法比较复杂庞大,不是这里说的清楚的。
进程切换的过程大概就是保存当前上下文,也就是各种寄存器的状态,包括指令寄存器。然后把下一个进程的上下文加载上来。
有了线程机制之后,进程管理主要管理线程之间的数据共享,管理进程地址空间,进程的交换空间。因为这些资源是属于进程的,线程之间是共享的。
现代操作系统调度基本是围绕线程进行的,进程更多的是起到资源管理分配的作用。
H. Linux进程内存如何管理
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虚拟内存分配器区隔离带高端内存映射区专用页面映射区保留区。