您的位置:首页 > Web前端 > HTML5

奔跑吧,html5

2015-03-04 14:55 113 查看

一、程序与进程

1、程序 程序是为了达到特定的目的,可以被计算机运行并且由命令代码组成的语句序列。 程序由指令和数据组成。 指令:用于调度CPU工作,使CPU可以处理所需要的数据。 2、进程 进程是指运行中的程序。 3、程序的工作模式 所有对于硬件的操作用户都无权访问,如果用户运行的程序需要访问硬件时,需要进行系统调用,通过内核来完成对硬件的操作,此时程序将由用户模式转入内核模式。比如:我们想在目录中新建一个文件夹,因为要对磁盘进行写操作,当使用mkdir命令时,就会进行系统调用由内核来完成此操作后再将结果返回给用户。 CPU在其内部的不同区域完成不同的功能:ring0分配给内核(kernel),ring3分配给用户程序(user program)。

二、Linux的多用户,多任务环境

1、内存的分配 Linux对内存采用分段、分页的机制。 物理内存每4k划分成一个页框;页框为物理内存的最小单位。 应用程序运行在自己的地址空间内,这个地址空间称为线性地址空间,所有数据在线性地址空间内部表现为页面的形式存放,而不是分页的数据无法交换至swap空间。 进程访问数据是从线性地址访问,内核将线性地址转换成物理地址,使得进程得以访问到数据。 线性地址与物理地址的对应关系存放在一张表中,这引表在MMU(Memory Management Unit)中进行维护。 内核借助MMU来使得各个进程使用内核时好像是独立的状态;MMU完成线性地址到物理地址的转换。 内核精心编造了一个数据结构,假如内存如果有4G的话,1G分配给内核使用,3G分配给进程使用;这个数据结构使用得每个进程都认为自己独占3G内存。 2、进程调度 调度就是挑选进程到CPU中运行的过程。 进程调度采用的O(1)的算法复杂度,即时间恒定的算法。 CFS:完全公平调度器 3、进程的分类 CPU-Bound(CPU密集型):对于CPU占用率高的进程。 I/O-Bound(I/O密集型):等待I/O时间长的进程 4、进程优先级 CPU挑选进程是根据进程的优先级进行的,进程优先级的取值范围为0-139。 实时优先级:0-99,数字越大,优先级越高; 静态优先级:100-139,数字越小,优先级越高。 用户可以通过调整nice值来改变进程的优先级。 nice值:-20-19 调整静态优先级 进程启动时,默认nice值为0,优先级对应为120。 动态优先级:由内核维护,动态调整。 Linux使用抢占式多任务:当时钟信号到达时,高优先级进程可以抢占CPU。 5、进程状态 运行态:runnnig 睡眠态:sleeping 可中断睡眠:interruptable 不可中断睡眠:uninterruptable,等待外部条件满足之前无法继续运行。 停止态:stopped,不会再被内核调度并运行。 僵死态:zombie,父进程先于子进程结束了,子进程再也不能被停掉的进程。 6、子进程 进程运行是单线运行的,进程中的指令必须顺序执行。 子进程:父进程有无法完成的任务时,启用子进程来执行,此时父进程进入睡眠,子进程执行完成后,返回父进程继续执行。 进程创建机制:每一个进程都是由其父进程fork()自身而来。 7、进程间通信(IPC:Inter Process Communication) 同一主机: singnal:信号。 shm:共享内存。 semerphor:旗语。 不同主机: rpc:remote procedure calling,远程过程调用。 socket:IP:port,套接字。 8、CPU虚拟化 就是将CPU切割为时间片(timeslice)。 保存现场:将未执行完成进程状态保存在状态表中。 恢复现场:将状态表中未执行完的进程调出继续执行。 9、线程 线程是比进程更小的可以被单独调度的单位。 线程将进程的任务指令拆分,分配到不同的CPU上同时运行。 不过Linux中的进程都是轻量级进程,已经相当于线程的级别了。

三、Linux进程管理工具

1、查看进程树:pstree

2、显示进程状态:ps ps命令的选项参数有很多,下面只介绍常用的选项。 因为开源的原因,ps的也存在众多的版本,CentOS6的ps命令支持两种风格:SysV和BSD SysV:一般带“-” BSD:不带“-” 选项: a:与终端相关的进程; x:与终端无关的进程; u:显示用户。 组合选项:aux

上图中各字段的含义如下: USER:进程的发起者; PID:进程的PID; %CPU:CPU的占用率; %MEM:内存的占用率; VSZ:Virtual memory size,虚拟内存空间大小(线性地址空间大小); RSS:常驻内存集;不能被交换到swap空间中的所有数据; TTY:终端; STAT:进程状态, 包括: R:running; S:可中断眨睡眠; D:不可中断睡眠; T:Stopped; Z:Zombie; s:session leader; t:前台进程; l:多线程进程; N:低优先级进程; L:高优先级进程。 COMMAND:包含在方括号中的进程表示为内核线程。 组合选项: -ef -e:显示所有进程; -f:显示完整格式的信息。

组合选项:-eFH -F:显示额外信息; -H:显示进程的层次结构。

-o:自定义要显示的信息。

ni:nice值; pri:优先级; psr:运行的CPU。 3、显示指定进程的进程号:pgrep 常用选项: -u USERNAME:仅显示由指定用户启动的进程; -U UID:仅显示由指定用户启动的进程; -G GID:仅显示由指定组启动的进程; -t terminal:仅显示指定终端相关的进程; -l:同时显示进程号和程序名。







4、显示指定命令所启动的进程的ID:pidof

5、实时监控进程:top 直接输入top命令,出现以下界面:

可以在上面的界面中直接使用命令来对显示内容进行控制: M:根据内存百分比进行降序排序,对应的列为%MEM; P:根据CPU百分比进行降序排序,对应的列为%CPU; T:根据累积占用的CPU时间降序排序,对应的列为TIME+; l:显示或不显示负载信息,即上图中第一行的内容,如下图所示:

这一行的内容表示: 10:32:08:当前系统时间; up 18:42:服务器连续运行的时长为18小时42分钟; 4 users:当前登录系统的用户数; load average:过去1分钟、5分钟、15分钟的平均负载 t:显示或不显示进程及CPU相关的信息,如下图所示:

上图为不显示进程及CPU信息的结果。 1:数字,分别显示各CPU的相关信息;

使用数字1可以查看不同的CPU的信息,下面说明各字段具体的含义: us:user space,用户运行程序时间百分比; sy:system,用于运行内核所占用CPU的百分比; ni:nice,用户进程空间内改变过优先级的进程占用CPU百分比; id:idle,空闲CPU百分比; wa:wait io,等待IO花费的时间; hi:hardware interrupt,硬中断占用CPU的百分比; si:software interrupt,软中断占用CPU的百分比; st:stolen,偷走的时间百分比。 m:显示或不显示物理内存和交换内存信息,如下图所示:

各字段含义如下: Mem:物理内存; Swap:交换分区; buffers:缓冲区,用于减少进程之间的等待时间; cache:CPU与内存之间的高速缓存,用于减少CPU的等时间。 k:终止指定进程;





s:修改刷新时间间隔;

q:退出。 常用选项: -d #:指定刷新时间间隔; -b:以批次的方式显示top刷新; -n #:显示的批次; -p PID:监控指定进程。

查看指定进程:



6、显示虚拟内存统计信息:vmstat

各字段含义如下: procs: r:运行队列的长度; b:被阻塞(等待IO完成)队列的长度。 memory: swpd:从物理内存交换至swap中的数据量; free:空闲物理内存; buffer:缓冲,与写相关,加速写操作; cache:缓存,与读相关,加速读操作。 swap: si:swap in,数据进入swap中的数据速率,单位kb/s; so:swap out,数据离开swap中的数据速率。 io: bi:block in,从块设备读入的数据速率,单位kb/s; bo:block out,保存至块设备的数据速率。 system: in:interrupt,中断速率; cs:context switch,进程切换速率。 CPU: 各字段含义与top中所表示的含义相同,此处不再赘述。 常用选项: -s:显示内存统计数据。

7、系统资源统计工具:dstat 命令选项: -c:查看cpu的统计数据 -d:显示磁盘的统计数据; -D DISK:只显示指定disk的统计数据; -g:显示page的统计数据; -i:显示中断的统计数据; -m:显示内存的统计数据; -l:显示系统负载的统计数据; -n:显示网络接口相关统计数据; -N INTERFACE:显示指定网络接口的统计数据; -s:显示交换内存统计数据; –ipc:显示ipc消息队列、信息和共享内存的使用状况; -y:显示系统状态数据; -cdngy:相当于不带参数的dstat,也相当于-a -t:显示时间; 网络连接状态统计: –tcp:显示tcp的个数及状态; –udp:显示udp的个数及状态; –unix:本地通信时unix文件的个数; –raw:raw sockets; -f:以完整格式显示所有信息 -v:类似于vmstat命令;


命令用法比较简单,就不做过多的演示了。

四、调整nice值

只有管理员可以使用小于0的nice值,普通用户调整nice值时只能增加,即只能把优先级调低。 1、直接启动一个进程,并指定其nice值:



2、调整已运行的进程nice值



五、进程间通信

1、显示常用信号:kill -l

2、查看各个信号的作用:man 7 signal 3、信号的调用方式 每个信号都可以使用三种方式之一在kill中进行调用: 1)数字代称:1,2,9,15; 2)信号完整名称:SIGHIP,SIGINT,SIGKILL,SIGTERM; 3)信号简称:HUP,INT,KILL,TERM; 常用信号的含义: 1) SIGHUP:让程序重读配置文件,而无需重启程序; 2) SIGINT:interrupt,相当于ctrl+c,打断正在运行中的前台程序; 9) SIGKILL:强制终止进程; 15) SIGTERM:正常终止进程,默认选项。 4、信号调用的格式 1、kill [-SIGNAL] PID

终止所有httpd的进程。 2、killall [-SIGNAL] COMMAND

五、Linux作业控制

前台作业:通过终端启动,并在终止之前一直占据着终端; 后台作业:作业启动之后即运行于后台,释放前台; 交互式模式:手动启动的非守护进程类的程序,一般都运行于前台。 将作业运行于后台: 1、将运行中的作业送往后台 Ctrl+z:将作业送往后台,并处于停止状态。 2、将尚未启动的作业直接在后台运行 COMMAND & 这种手动方式控制的作业与终端相关,如果正在运行作业的终端被退出了,作业会被终止;如果想要在终端退出后作业依然在后台运行,则需要使用下面的命令: nohup COMMAND & 查看当前正在运行的作业:

三个字段从左至右分别代表:作业号、作业状态、作业命令。 作业控制命令: fg [[%]jobnum]]:将指定的作业调回前台; bg [[%]jobnum]]:让送往后台的作业在后台继续运行; kill %jobnum:终止指定的作业。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: