0 进程相关概念和线程
内核负责追踪每一个进程的状态信息 内核数据结构 task structure ,里面保存每个进程的数据结构,比如数据扇区位置,父进程号,当前进程号,操作者等 在某一时刻,内存是被分成两段的,一段是内核空间,一段是用户空间,用户空间里面有多少个用户进程, 而每个进程对应的结构都会在内核空间中有相对应的一段来保存,CPU的寄存器会保存每个进程task structure的地址位置。 每个中间挂起的进程在重新加载到CPU的时候,CPU会根据寄存器存储的进程task structure地址找到task structure, 然后进而得到task structure内存储的当前启动进程对应在磁盘的数据位置和开始执行位置,这个过程就是恢复现场。 程序: 可执行文件,位于磁盘上 进程: 程序被装载入内存,在内存中提供的特定区域内存放需要的数据和指针,是一个逻辑概念,而不是一个实体 堆内存: 过一会打开一个文件需要创建一个空间,过一会打开一个文件需要创建一个空间,根据需要不停动态申请内存空间,就叫做堆内存。 栈: 本地变量 每一次内核装载进程的时候,必须要把进程的页面翻译成物理内存的叶匡(真实分配给进程逻辑连续内存对应的分散物理内存地址区域) 将进程页面翻译成物理内存叶匡的过程是交给MMU来操作,你可以联想记忆为: 页面 叶匡 MMU 域名 IP地址 路由器 进程上下文切换: 就是不同进程不断的装载到CPU和退出CPU的过程
进程在内存中区域:
1 进程状态:
进程生命周期: 类比于人一天24小时,睡觉时间,娱乐时间,工作时间等,因此执行时间和挂起时间组成了一个进程的生命周期
多核CPU: 仅仅是在多进程下,将进程分配到不同的CPU下排队执行,而不仅仅是放在一个CPU下来排队,这样来解决了每个进程的处理速度。
进程状态截图如下:
部分解释:
进程睡眠: 因为需要的资源没有正常获取到 或者没有其他更多事情可以去做了 比如当前进程分配给CPU4ms,读取一个文件需要3s 那么进程会睡眠 Uninterruptible sleep: 不可中断的睡眠 就是当前请求的资源比如文件加载到内存耗时较长,即使当前CPU继续分配时间片给当前进程 因为需要文件还没有加载进来因此进程依旧不可唤醒 Interruptible sleep:可中断睡眠 随时来请求 随时能唤醒 比如处理完当前请求后暂时还没有更多请求下,这种sleep就是可中断 Zombie: 僵死进程,进程正常进行,也结束掉了,但是占用的内存没有释放,在这种情况下,会由它的父进程来收尸 进程结束: 1占用内存空间释放 2task structure内对应进程数据删除 进程父子关系: linux的进程都是父子关系,祖先进程是 init进程(联想与上帝),上帝照着自己的样子clone出子孙,这就是 具体任务子进程。 init进程是由内核来生成 eg: [root@chinadaas13 ~]# pstree init─┬─abrtd ├─acpid ├─atd ├─auditd─┬─audispd─┬─sedispatch │ │ └─{audispd} │ └─{auditd} ├─automount───4*[{automount}] ├─bonobo-activati───{bonobo-activat}
2 进程和多线程关系:
多线程: 以数据库为例,三个人访问同一个表,如果处理成三个进程,那么在每个进程的内存空间中,这个表的数据都要放在内存中,这样就有了三份同样的数据 实际消耗了很多内存空间,这就是进程之间不共享数据的真实案例。 如果是线程,那么这三个线程共享同一份数据,在一个进程中维系多个线程,需要在这些线程之间同步来平均这些资源,并监控每个资源是否被加锁(防止死锁)
3 进程优先级:
进程优先级: 0-139, 数字越小,优先级越高。 100-139:用户可控制 0-99:内核调整的 进程优先级分配有如下几种方式: O: O(1): 固定不变的一个横线 联想于 0°直线 y=1在四象限的表示 O(n): 所需要的时间长度随着队列长度而发生线性增长,可预测 可接受 联想于 45°直线 y=n 随着n增加而增加的线 O(logn): y=logn 的线 O(n^2): y=n平方的线 O(2^n): y=2的n次方的线 优先级高,那么进程能够获得更高的运行时间,更有限获得CPU运行机会。 每个进程都有个nice值,范围在 -20--19之间,对应的进程数值为 100-139, 因此提高nice数值,就直接提高了进程优先级值,从而给别的进程让出了CPU执行权。 即nice值越小,优先级越高。 默认情况下,每个进程的nice数值为0, nice联想于 人好的话,那么这个人就把机会让给别人。
4 进程号和/proc
init进程号为1是固定的 其下每一个数字代表一个pid为对应数字的进程,每一个进程号码都是唯一的,即使这个进程退出,其他进程也不会占用这个号码,因此下面展示进程号是不连续的 [root@chinadaas13 ~]# ls /proc 器下的信息都是当前当前内核信息中的映射,而进入每个号码下面在ls的信息是内核中某个参数被映射成了文件,因此这下面东西是伪文件系统 1 140 179 1995 234 2533 258 2621 2740 29 32 3752 4624 643 8503 .... [root@chinadaas13 ~]# ls /proc/140 ls: 无法读取符号链接/proc/140/exe: 没有那个文件或目录 attr clear_refs cwd fdinfo maps mountstats oom_score root smaps status autogroup cmdline environ io mem net oom_score_adj sched stack syscall auxv coredump_filter exe limits mountinfo numa_maps pagemap schedstat stat task
5 进程相关命令ps pidof pgrep pstree:
ps: Process State 查看进程状态的专用命令 SysV风格:每个选项都要加-来分隔 BSD风格: a: 所有与终端有关的进程 u: 显示进程的启动用户 x: 所有与终端无关的进程 进程的分类: 跟终端相关的进程,即通过命令行进入的 跟终端无关的进程 eg: [root@chinadaas13 ~]# ps aux | head USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 19360 1536 ? Ss Oct22 0:01 /sbin/init root 2 0.0 0.0 0 0 ? S Oct22 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S Oct22 0:00 [migration/0] root 4 0.0 0.0 0 0 ? S Oct22 0:02 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S Oct22 0:00 [migration/0] root 6 0.0 0.0 0 0 ? S Oct22 0:00 [watchdog/0] root 7 0.0 0.0 0 0 ? S Oct22 0:00 [migration/1] root 8 0.0 0.0 0 0 ? S Oct22 0:00 [migration/1] root 9 0.0 0.0 0 0 ? S Oct22 0:02 [ksoftirqd/1] 对上述结果的解释 VSZ: 虚拟内存集 RSS: 常驻内存集 TTY:关联到哪个终端上去, ?表示和终端无关 TIME: 运行时真正占用CPU的时长 COMMAND:哪个命令占用的进程, []表示是一个内核线程 STAT:进程状态 进程状态字段含义: D:不可中断的睡眠 R:运行或就绪 S:可中断的睡眠 T:停止 Z:僵死 <:高优先级进程 N: 低优先级进程 +:前台进程组中的进程 l: 多线程进程 s: 会话进程首进程 ps -elF -ef -eF [root@chinadaas13 ~]# ps -el | head e表示所有进程 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1 0 0 80 0 - 4840 poll_s ? 00:00:01 init 1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd 1 S 0 3 2 0 -40 - - 0 migrat ? 00:00:00 migration/0 1 S 0 4 2 0 80 0 - 0 ksofti ? 00:00:02 ksoftirqd/0 1 S 0 5 2 0 -40 - - 0 cpu_st ? 00:00:00 migration/0 5 S 0 6 2 0 -40 - - 0 watchd ? 00:00:00 watchdog/0 1 S 0 7 2 0 -40 - - 0 migrat ? 00:00:00 migration/1 1 S 0 8 2 0 -40 - - 0 cpu_st ? 00:00:00 migration/1 1 S 0 9 2 0 80 0 - 0 ksofti ? 00:00:02 ksoftirqd/1 对上述展示的解释 PRI: 优先级 NI: nice数值 ps -o PROPERTY1,PROPERTY2 -o表示 指定后面要专门显示的参数值 eg: [root@chinadaas13 ~]# ps -o pid,comm,ni PID COMMAND NI 8890 bash 0 31157 ps 0 pstree: 显示当前系统上的进程树 pgrep:eg pgrep bash 找进程中有bash的进程 pidof: 根据程序名称,查找其相关进程的ID号; [root@chinadaas13 ~]# pidof java 31586 31581 29602 21179 18000 15917 9385 7846
6 进程命令之 top:
top:类似于window的任务管理器,间隔5秒不停刷出 [root@chinadaas13 ~]# top top - 14:40:33 up 7 days, 37 min, 4 users, load average: 0.12, 0.23, 0.25 Tasks: 684 total, 1 running, 683 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3%us, 0.5%sy, 0.0%ni, 99.1%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 65961460k total, 14694752k used, 51266708k free, 352200k buffers Swap: 20479992k total, 0k used, 20479992k free, 1353244k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 15305 root 20 0 15428 1732 952 R 1.0 0.0 0:00.34 top 9385 root 20 0 4052m 308m 30m S 0.7 0.5 9:26.16 java 15917 mapred 20 0 4710m 146m 14m S 0.7 0.2 15:34.41 java 18000 root 20 0 17.9g 317m 9m S 0.7 0.5 0:17.52 java 如下是对上述显示结果解释: top后为当前时间 up后时间表示运行时长,从上一次启动到这一刻为止时长 4 users表示登录用户 load average: 0.12, 0.23, 0.25 平均负载,过去1,5,15分钟下的队列平均长度,长度越小,则CPU负载越低。 Tasks: 所有进程相关信息, 一个在运行,683个在睡觉,0个停止,0个僵死 Cpu(s): 多个CPU平均值 us用户空间用户进程占据cpu的百分比 sy系统空间占据cpu的百分比 ni调整nice值影响的cpu比例 id空闲百分比 wa等待io完成所占用的时间 hi硬件中断占据的时间 si 软中断占据的时间 st被偷走的时间 上述结果 可以通过 uptime来简单实现: [root@chinadaas109 ~]# uptime 00:26:56 up 100 days, 5:16, 4 users, load average: 0.21, 0.32, 0.26 PR: 表示优先级 top: 部分字段解释如下, 只需要在 top输入的显示结果后 在输入M/P/T 命令 就会自动按照内存大小排序展示 M: 根据驻留内存大小进行排序 P:根据CPU使用百分比进行排序 T: 根据累计时间进行排序 l: 是否显示平均负载和启动时间 只需要在 top输入的显示结果后 在输入l/t/m 命令 就会自动显示或者隐藏相关项数据 t: 是否显示进程和CPU状态相关信息 m: 是否显示内存相关信息 c: 是否显示完整的命令行信息(即完整命令路径) q: 退出top k: 终止某个进程 top -d: 指定延迟时长,单位是秒 -b: 批模式 -n #:在批模式下,共显示多少批
7 进程间通信和 kill :
进程间通信方式(IPC: Inter Process Communication) 1 共享内存 , 一个进程向内存中写,另一个进程从这个内存中读 2 信号: Signal 一个进程向另一个进程发送信号来控制另外一个进程 3 Semaphore 旗语 以方式2信号为例, kill通常都是用于进程之间发送信号 [root@chinadaas13 ~]# help kill kill: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec] Send a signal to a job. [root@chinadaas13 ~]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX kill中重要的几个信号: 1:SIGHUP: 让一个进程不用重启,就可以重读其配置文件,并让新的配置信息生效; 2: SIGINT:Ctrl+c: 中断一个进程 9: SIGKILL:杀死一个进程, 并强制立马执行,即使当前进程有比如写入文件操作,那么也立即执行,立马杀死 15: SIGTERM:终止一个进程, 默认信号,杀死之前,让这个进程先交代后事,然后处理完后事后再弄死这个进程 指定一个信号: 信号号码:eg---> kill -1 信号名称:eg---> kill -SIGKILL 信号名称简写:eg---> kill -KILL 使用如下: kill PID killall COMMAND进程名 killall httpd 杀死所有httpd,取代了一个个的来执行httpd对应的进程号的杀死
8 调整nice值:
调整已经启动的进程的nice值:
renice NI PID
在启动时指定nice值:
nice -n NI COMMAND
9 前台作业 后台作业:
Ctrl+z: 把正在前台的作业送往后台
COMMAND &:让命令在后台执行
bg: 让后台的停止作业继续运行 backgroud
bg [[%]JOBID]
jobs: 查看后台的所有作业
作业号,不同于进程号
+:命令将默认操作的作业
-:命令将第二个默认操作的作业
fg: 将后台的作业调回前台 frontgroud
fg [[%]JOBID]
10 vmstat 和查看系统内存
虚拟内存 系统状态查看命令 [root@chinadaas109 ~]# vmstat 1 1表示每间隔1秒钟显示一次 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 8400188 11107092 695044 60202828 0 0 10 54 0 0 2 1 96 0 0 r: 运行队列长度 b: 阻塞队列长度 swpd: 交换空间大小 free:空闲内存 buff: 缓冲 cache: 缓存 swap: 动态 si: 从物理空间有多少页面到swap so: 从物理空间到swap导出多少 bi: 有多少磁盘块调入到内存中 bo: 有多少磁盘块从内存中同步到磁盘上 in: 中断个数 cs: context switch 上下文进程切换次数 us: 用户空间占据CPU百分比 sy: 内核空间占据CPU百分比 id:空闲 wa: 等待IO st: 被偷走的CPU时间 # vmstat 1 5 表示间隔1秒显示一次 一共显示5次 [root@chinadaas109 ~]# cat /proc/meminfo MemTotal: 132089436 kB MemFree: 53439820 kB Buffers: 702300 kB Cached: 61056300 kB SwapCached: 44716 kB Active: 17207024 kB Inactive: 59399112 kB Active(anon): 9954564 kB Inactive(anon): 4893312 kB Active(file): 7252460 kB
相关推荐
使用multisim搭建并仿真了4-20mA信号转换为0-3.3V电压的电路。实际证明有效可用。
顺源科技推出的4-20mA转0-5V芯片属于ISOEM系列直流信号隔离放大器,该系列芯片能够实现不同类型的电压与电流信号间的隔离、放大以及转换。这种芯片特别适用于工业自动化领域中的信号处理与传输需求。 #### 二、产品...
4-20mA到0-3.3V转换模块是一种常见的工业信号转换设备,它能够将标准的4-20mA电流信号转换为适合微处理器或数字电路处理的0-3.3V电压信号。这种转换在自动化系统、传感器数据采集、过程控制等领域有着广泛的应用。...
DIN3系列4-20mA(0-20mA)电流环路隔离器是一种专门用于工业现场的信号处理设备,它能够实现传感器、PLC(可编程逻辑控制器)等设备之间的信号隔离与转换。该设备的设计遵循低成本、小体积与高精度的标准,采用DIN35...
华为OLT-MA5680T-GPON开局指导-配置指南 本文档提供了华为OLT-MA5680T-GPON开局指导的配置指南,涵盖了GPON开局指导、业务配置、数据规划、GPON配置的一些概念等内容。 一、业务配置 在业务配置中,我们需要创建...
描述:本设计采用APC(GP9303M-F1K-N-SW)芯片来实现对0-5V/0-20mA/4-20mA的信号采集,采用APC(GP9301BXIM-F1K-N-SW)芯片来实现对0-10V信号进行采集。然后在芯片内部完成信号的高频调制,调制好的高频信号经过电容...
02_Artix FPGA DDR控制器MIG使用(AXI4)(MA703FA-35T)20190401.pdf 02_Artix FPGA DDR控制器MIG使用(AXI4)(MA703FA-35T)20190401.pdf
标题中的“4-20ma0-10v转0-15v/0-24v/0-200ma/0-700ma/0-2a大功率阀门驱动控制器、变送器”指的是一个工业级的信号转换和驱动设备,主要用于将4-20mA或0-10V的信号转换为不同范围的电压或电流信号,以驱动大功率的...
>>国际标准二路信号输入:0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等 >>二路输出标准信号:0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等,具有高负载能力 >>全量程范围内极高的线性度(非线性度) >>标准DIN35 导轨式安装...
【热电偶温度变送器】是工业自动化领域中常用的一种设备,用于将传感器(如热电偶或热电阻)检测到的温度信号转换为标准的电信号,如4-20mA或0-5V。这样的转换对于远程传输和与控制系统集成至关重要,因为标准信号在...
IBF系列产品可应用在 RS-232/485总线工业自动化控制系统,4-20mA / 0-5V信号测量、监测和控制,0-75mV,0-100mV等小信号的测量以及工业现场信号隔离及长线传输等等。 产品包括电源隔离,信号隔离、线性化,A/D转换和...
21级应用统计本科班-郝恩慧-第一次作业.ma\21级应用统计本科班-郝恩慧-第一次作业
GPON 组网与华为 MA5800-X15 OLT 配置 GPON(Gigabit Passive Optical Network,吉比特被动光网络)是一种基于被动光网络的光纤接入技术,主要用于光纤到家(FTTH)和光纤到大楼(FTTB)等应用场景。华为 MA5800-...
Burr-Brown提供了一系列完整的单片4mA至20mA电流环路发射器和接收器。 #### 一、4-20mA电流环路基础知识 电流环路通常用于工业自动化领域中的信号传输,其中最常用的为4-20mA标准。该标准的最小信号电流为4mA,这...
PAC芯片完成0-5V/0-10V/0-20mA/4-20mA转0-20mA/4-20mA的信号转换,内置隔离电源,隔离度1500VDC 原理是,采用APC(GP9303-F1K-N-SW)芯片来实现对0-5V/0-20mA/4-20mA的信号采集,采用APC(GP9301BXI-F1K-N-SW)芯片...
《MA5671-GP4 V800R016C10SPH216.zip:华为MA5671 GPON光猫软件更新详解》 华为MA5671-GP4是一款高性能的GPON光网络单元(ONT),在现代光纤宽带接入网络中扮演着至关重要的角色。其软件版本V800R016C10SPH216是...
MA5606T开局配置总结 MA5606T开局配置总结文档是Huawei公司的EPON设备开局配置详细说明。该文档旨在指导用户正确地配置MA5606T设备,以便实现快速、可靠的网络部署。 语言设置 MA5606T设备支持多种语言,包括简体...
数据分析ma-jing-data-analysis-system-main.zip