进程管理

Linux 进程管理

安稳与你 提交于 2019-12-21 00:13:03
进程管理 一.基础知识   1.内存空间分为:线性空间和物理空间   线性空间:内存被划分成页框,固定的存储空间       虚拟内存 指令、数据、堆区、栈区       常驻内存 系统的指定和数据   2.进程上下文切换:进程的切换,保存将要退出的进程的现场,装载下一个要运行的进程   进程的属性:     进程号     内存空间     启动用户     父进程     占用CPU时间 3.因为有了线程,一个进程才能工作于多个CPU,并发执行 4. 进程状态     运行状态 Uninterrutible sleep 不可中断睡眠:需要I/O资源的中断, interrutible sleep 可中断睡眠:不是因为I/O产生的中断     僵尸进程:进程结束了,占据的内存空间不释放 5.进程是有父子关系的     所有进程都是init的子进程 6.进程有优先级的0-139 数字越小优先级越高         0-99:内核调整的         100-139:用户可控制的    进程的查找时间大O标准           O(1)           O(n)           O(logn)           O(n^2)           O(2^x)   优先级高的进程       1).获得更多CPU运行时间       2)更优先获得运行的机会  nice 值

Linux 进程管理工具

…衆ロ難τιáo~ 提交于 2019-12-21 00:12:45
Linux进程管理命令: pstree、ps、top、pidof、htop、glances、pmap、vmstat、dstat、kill、pkill、job、bg、fg、nohup、pgrep、 pstree:display a tree of processes ps:report a snapshot of the current processes. Linux系统上运行中的各个进程的相关信息都保存在/proc/PID目录下的各文件中; 所以这些状态查看工具无非都是通过查看这些目录下的相关文件来实现的; ps [options…] 支持两种风格的选项:加"-"和不加"-" 常用组合: u:以用户为中心组织进程状态信息显示; a:与终端相关的进程; x:与终端无关的进程; ~]#ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 属主 进程号 使用cup时间百分比 使用内存百分比 已用虚拟内存大小 常驻内存集 终端类型 进程状态 启动时间 累计占用CPU的时间 由哪个命令 启动的 VSZ:Virtual memory Size 虚拟内存大小,进程在其线性地址空间占用的内存大小; 虚拟/线性内存集 RSS:ReSident Size 常驻内存大小; 常驻内存集 虚拟内存集大小一般大于常驻内存集大小

Linux进程管理

邮差的信 提交于 2019-12-21 00:11:59
linux进程管理 进程是:运行的程序 资源的分配单元:内存资源、CPU资源、I/O资源 内核功能:进程管理 内核是通过资源分配来管理进程的 CPU资源是怎么分配的? 切割时间片,时间片轮转 进程间的切换:保存现场,尤其是指令指针,即下一条指令所在的地址 保存现场: 保存进程的元数据 进程的元数据:描述进程的属性 由内核追踪进程状态:保存现场即是将上一个进程的状态保存到内核中去 内核是一种特殊的数据结构存储进程的状态,即task_struct 恢复现场: 根据优先级来挑选 进程优先级(用于挑选下一个要运行的进程) 优先级:0-139 0-99:实时优先级 数值越大,优先级越高 100-139:静态优先级 数值越小,优先级越高 nice值,调整用户空间的优先值,范围为-20 19,对应的是100-139 不可能遍历所有的优先级,因为遍历也同样消耗CPU,而是逐个遍历140个优先级队列 进程间的切换是需要付出代价的 进程的状态 不可中断睡眠 僵死态:僵尸进程,定期扫描,并清除 进程永远是由父进程启动的 但第一个进程init是由内核创建的,是所有进程的父进程 进程间的通信:IPC 同一台主机间的进程通信: 信号: signal 共享内存:shm 旗语:semerphor 不同主机间的进程通信: rps:远程过程调用(nfs就是通过这种方式通信的) socket:套接字 pstree:

Linux进程管理之“四大名捕”

会有一股神秘感。 提交于 2019-12-21 00:11:30
一、四大名捕 四大名捕,最初出现于温瑞安创作的武侠小说,是朝廷中正义力量诸葛小花的四大徒弟,四人各怀绝技,分别是轻功暗器高手“无情”、内功卓越的高手“铁手”、腿功惊人的“追命”和剑法一流的“冷血” 本文四大名捕由linux命令所出演 无情:ps 出演 铁手:dstat 出演 追命:top 出演 冷血:htop 出演 二、进程相关基础知识 介绍四大名捕之前先介绍一下进程相关的基础知识,话不多说,看图。 三、轻功暗器高手“无情” [PS] ps:用于显示当前进程的状态(非动态) ps [options]: 选项有三种风格: 1、UNIX风格,必须在选项前面加“-” 2、BSD风格,选项前不能加“-” 3、GNU风格,选项前为两个“-” 常用组合之一:aux a:所有与终端相关的进程 x:所有与终端无关的进程 u:以用户为中心组织进程状态信息显示 CPU%:cpu时间占用比率 MEM%:内存占用百分比 VSZ:virtual size虚拟内存集; RSS:Resident Size,常驻内存集; STAT: R:running 运行 S:interruptable sleeping 可中断睡眠 D:uninterruptable sleeping 不可中断睡眠 T:Stopped 停止 Z:zombie 僵死态 +:前台进程 l:多线程进程 N:低优先级进程 <:高优先级进程 s

linux进程管理-定时定期执行任务

末鹿安然 提交于 2019-12-21 00:07:23
0.计划任务的命令:   at  安排作业在某一时刻执行    batch  安排作业在系统负载不重时执行    crontab 安排周期性运行的作业    1.at命令用法:   安排命令或者多个命令在指定的时间运行一次  语法;   at [-f filename] 时间   at -d or atrm 删除队列中的任务   at -l 或者 atq 查看队列中的任务 1.1 at指定时间的方式 ( 前提是开启atd服务,所以需要查看系统是否开启atd服务 ) 绝对计时方法;   midnight noon teatime   hh:mm[today]   hh:mm tomorrow   hh:mm 星期   hh:mm MM/DD/YY 相对计时方法:   now +n minutes   now +n hours   now +n days 例如: 1.2  at用法: 1.安排定时任务 例如:10分钟以后发个广播: [root@iz2ze46xi6pjjj69ailg9lz ~]# at now +10 minutes #用相对时间 at> /usr/bin/wall < /etc/motd<EOT>      #输入命令之后Ctrl+D保存任务 注意:    (1)命令要用绝对路径。   (2)能使用at定时任务的前提是开启atd服务

Android进程管理机制研究

放肆的年华 提交于 2019-12-19 01:45:42
一、Linux中的进程管理 在Linux中,进程是指处理器上执行的一个实例,可使用任意资源以便完成它的任务,具体的进程管理,是通过“进程描述符”来完成的,对应Linux内核中的task_struct数据结构。进程描述符,包括进程标识、进程的属性、构建进程的资源。 一个进程可以通过fork()或者vfork()调用创建出子进程,这些子进程可以访问父进程的地址空间,包括文本段、数据段、堆栈段。 通常情况下,调用fork()的进程处于task_running状态,则fork出来的子进程默认也处于task_running状态,具体来说,在fork之后、exec之前,子进程处于task_running状态中的就绪状态。 进程的运行状态包括以下几种。 1、task_running:可执行状态。包含正在CPU上执行的、可执行但是尚未被调度执行这两种子状态,后者对应就绪状态。 2、task_interruptible:可中断的睡眠状态。因为等待某事件的发生而被挂起。当等待的事件发生时,处于该状态的进程将被唤醒。 3、task_uninterruptible:不可中断的睡眠状态。处于睡眠状态,但是此刻进程是不可中断的。此时进程不响应异步信号,不能通过发送信号的方式kill之,但可以响应硬件中断,例如磁盘IO,网络IO等。 4、task_stopped / task_traced:暂停状态或跟踪状态

进程管理

橙三吉。 提交于 2019-12-17 15:08:36
关于进程 process ==================================================================================== What is a process? 什么是进程 Process life cycle 进程的生命周期 Process states 进程状态 什么是进程? 进程是已启动的可执行程序的运行实例,进程有以下组成部分: • 已分配内存的地址空间; • 安全属性,包括所有权凭据和特权; • 程序代码的一个或多个执行线程; • 进程状态。 程序 : 二进制文件,静态 /bin/date, /usr/sbin/httpd,/usr/sbin/sshd, /usr/local/nginx/sbin/ngix 进程 : 是程序运行的过程, 动态,有生命周期及运行状态。 进程的生命周期 父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID (PID),满足跟踪安全性 之需。PID 和 父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代: Centos5/6: init Centos7: systemd 子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后

Linux后台进程管理

会有一股神秘感。 提交于 2019-12-16 18:51:59
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> fg、bg、jobs、&、ctrl + z命令 一、 & 加在一个命令的最后,可以把这个命令放到后台执行 ,如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,这样进程就被移到后台运行,终端还能继续接受命令。 概念:当前任务

Linux进程管理

我的未来我决定 提交于 2019-12-16 09:51:24
(整理自《鸟哥的Linux私房菜》基础篇) 1. 程序和进程 程序 (program):通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等), 为实体文件的型态存在; 进程 (process):程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载内存中, 操作系统并给予这个内存内的单元一个标识符 (PID),可以说,进程就是一个正在运作中的程序。 2. 父进程与子进程 当我们登入系统后,会取得一个 bash 的 shell ,然后,我们用这个 bash 提供的接口去执行另一个指令,例如 /usr/bin/passwd 或者是 touch 等,那些另外执行的指令也会被触发成为 PID ,那个后来执行指令才产生的 PID 就是子进程,而在我们原本的 bash 环境下,就称为父进程。 在 Linux 的进程调用通常称为 fork-and-exec 的流程 !进程都会藉由父进程以复制 (fork) 的方式产生一个一模一样的子进程, 然后被复制出来的子进程再以 exec 的方式来执行实际要进行的程序,最终就成为一个子进程的存在。 整个流程有点像底下这张图: (1)系统先以 fork 的方式复制一个与父进程相同的暂存进程,这个进程与父进程唯一的差别就是 PID 不同! 但是这个暂存进程还会多一个 PPID 的参数,PPID 如前所述

进程管理实验【1】

╄→гoц情女王★ 提交于 2019-12-15 06:43:27
fork函数: fork函数用于创建一个新进程,称为 子进程 ,它与调用它的进程同时运行,此进程称为 父进程 。创建新的子进程后,两个进程将执行fork()系统调用之后的下一条指令。子进程使用相同的pc(程序计数器),相同的CPU寄存器。 它不需要参数并返回一个整数值,下面是fork()返回的不同值: 负值 :创建子进程失败。    零 :返回到新创建的子进程。    正值 :返回父母或来电者。该值包含新创建的子进程的进程ID 我们来看一个程序: #include<stdio.h> #include<unistd.h> int main() { pid_t pid ; pid = fork(); //fork一个进程 int count = 0 ; if(pid == 0) { //pid为0, printf("this is child process, pid is %d\n",getpid());//getpid返回的是当前进程的PID count++; printf("count = %d\n",count); } else if(pid > 0) { printf("返回值是%d\n", pid); printf("this is father process, pid is %d\n",getpid()); count++; printf("count = %d\n"