【Linux】计算机组成与进程
文章目录
- 计算机的基本组成
- 1、计算机组成五大部件
- 2、系统总线
- 3、指令
- 进程
- 1、PID
- 2、PCB
- 3、进程状态
- 4、进程管理命令
- (1)ps
- (2)pstree
- (3)jobs
- (4)&
- (5)fg bg
- (6)kill
- (7)pkill
- (8)killAll
- (9)top
- (10)pidstat
- 5、生产环境服务器变慢,诊断思路和性能评估
计算机的基本组成
1、计算机组成五大部件
- 运算器 :也叫算数逻辑单元,完成对数据的各种常规运算,如加减乘除,也包括逻辑运 算,移位,比较等。
- 控制器 :它是整个计算机系统的控制中心,它指挥计算机各部分协调地工作,保证计算 机按照预先规定的目标和步骤有条不紊地进行操作及处理。
- 存储器 :存储程序和各种数据。
- 输入设备 :把人所熟悉的信息如,图片,声音,文字,转换为计算机能够识别的信息存储起来。
- 输出设备 : 把计算机机能识别的信息转换为人能识别的信息,进行呈现。 一台计算机可以抽象成下图: CPU 中包含控制器和运算器, 内存就是存储器。I/O 设 备就是输入设备和输出设备,如:键盘、显示器、鼠标、硬盘、网卡。
2、系统总线
- (1)数据总线:用来在各个功能部件中间传输数据,是双向传输总线
- (2) 地址总线 :用来指出数据总线上的源数据或目的数据在主存单元的地址或 io 设备的地址。
- (3) 控制总线 :由于各个连接在数据总线和地址总线的部件都是共享这两类总线的,那么在某一时刻由谁来使用,就是控制总线负责完成的。
3、指令
- (1) 指令 :是指示计算机执行某种操作的命令。一条指令通常由两部分构成:地址码 和操 作码。
- (2) 程序 : 由一条一条的指令构成。
- (3) 指令周期 :cpu 每取出并执行一条指令所需的全部时间称为指令周期。
- (4) 指令系统 :计算机能够执行的全部指令的集合称为该计算机的指令系统。
- (5) RISC :精简指令系统计算机。
- (6) CISC :复杂指令系统计算机。
- (7) 程序与指令:高级语言 汇编助记符 机器指令
进程
- 什么是进程?即运行起来的程序
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 - 什么是线程?
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。进程内部至少有一个线程。 - 什么是程序?
计算机程序是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。
1、PID
PID(Process Identification)操作系统里指进程识别号,也就是进程标识符。操作系统里每打开一个程序都会创建一个进程ID,即PID。
PID(进程控制符)英文全称为Process Identifier,它也属于电工电子类技术术语。
PID是各进程的代号,每个进程有唯一的PID编号。它是进程运行时系统随机分配的,并不代表专门的进程。在运行时PID是不会改变标识符的,但是你终止程序后再运行PID标识符就会被系统回收,就可能会被继续分配给新运行的程序。
含义:
只要运行一程序,系统会自动分配一个标识。这个标识是暂时唯一,进程中止后,这个号码就会被回收,并可能被分配给另一个新进程。
2、PCB
进程控制块,进程的属性信息。
在操作系统中会使用链表将PCB连接在一起,链表中有多少个节点,这个操作系统就有多少个进程,操作系统通过管理PCB来管理运行起来的进程。
进程描述信息:
- 进程标识符用于唯一的标识一个进程(pid,ppid)
进程控制信息:
- 进程当前状态
- 进程优先级
- 程序开始地址
- 各种计时信息
- 通信信息
资源信息:
- 占用内存大小及管理用数据结构指针
- 交换区相关信息
- I/O设备号、缓冲、设备相关的数结构
- 文件系统相关指针
现场保护信息(cpu进行进程切换时):
- 寄存器
- PC
- 程序状态字PSW
- 栈指针
3、进程状态
进程有三个状态:就绪 、运行、阻塞
- ready:表示线程已经被创建,正在等待系统调度分配CPU使用权。
- running:表示线程获得了CPU使用权,正在进行运算。
- waiting:表示线程等待(或者说挂起),让出CPU资源给其他线程使用。
为什么除去new和terminated状态?
是因为这两种状态实际上并不存在于线程运行中,所以也没什么实际讨论的意义。对于Java中的线程状态无论是Timed Waiting ,Waiting还是Blocked,对应的都是操作系统线程的waiting(等待)状态。而Runnable状态,则对应了操作系统中的ready和running状态。
4、进程管理命令
只显示当前终端的进程。默认显示与当前终端有关的进程信息。
(1)ps
参数 | 描述 |
---|---|
-A | 列出所有的进程 |
-e | 等于“-A” |
-a | 显示现行终端机下的所有进程,包括其他用户的进程; |
-u | 以用户为主的进程状态 ; |
x | 通常与 a 这个参数一起使用,可列出较完整信息。 |
-w | 显示加宽可以显示较多的资讯 |
-au | 显示较详细的资讯 |
-aux | 显示所有包含其他使用者的行程 |
-f | 做一个更为完整的输出。 |
-L | 显示进程中的线程 ID |
这个PID的取值范围从1开始到整数的最大值。这我们可以根据下面的PS命令看一下:
ps -a 与 -A
打印指定用户的信息
显示所有进程信息,连带命令行
ps与grep组合法。打印指定进程信息
最常用的命令:
ps -aux
USER
表示哪个用户启动了这个进程。PID
表示进程的ID。%CPU
表示cpu的占用率;占用越高,进程越消耗资源。%MEM
表示内存的使用率;占用越高,进程越消耗资源。- VSZ 如果一个程序完全驻留在内存中一共需要会用多少内存;(该进程所占的虚拟内存大小,单位(kb)。
RSS
表示进程当前实际上占用了多少内存,注意不要跟VSZ混淆,VSZ的前
提是进程完全驻留在内存中;该进程所占的物理内存大小,单位(kb)。TTY
表示tty终端;tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符结面端,tty是图形终端。ps/0-256代表虚拟终端。STAT
表示当前进程的状态,(S表示处于休眠状态,D表示不可中断的状态,Z表示僵尸进程,X表示死掉的进程)。START
启动这个命令的时间点。TIME
进程执行起到现在总的CPU占用时间。COMMAND
表示启动这个进程的命令。
ps -ef
UID
: 说明该程序被谁拥有(用户ID)PID
:就是指该程序的 ID(进程ID)PPID
: 就是指该程序父级程序的 ID(父进程号)C
: 指的是 CPU 占用率STIME
: 程序的启动时间TTY
: 指的是登录终端TIME
: 表示进程执行起到现在总的CPU占用时间CMD
: 启动这个进程的命令,它其实就是一个启动进程的命令
ps -le
(2)pstree
pstree命令以树状图显示进程间的关系(display a tree of processes)。ps命令可以显示当前正在运行的那些进程的信息,但是对于它们之间的关系却显示得不够清晰。在Linux系统中,系统调用fork可以创建子进程,通过子shell也可以创建子进程,Linux系统中进程之间的关系天生就是一棵树,树的根就是进程PID为1的init进程。
以树状图形式显示进程之间的关系
pstree -p
pstree [-p] < pid >
(3)jobs
显示当前终端的任务
(4)&
后台运行程序
(5)fg bg
fg %任务号
将后台运行的或挂起的进程挪到前台执行bg %任务号
将挂起的进程唤醒到后台执行
(6)kill
结束或者挂起一个进程。
-9
强制结束进程。-stop
挂起进程。
(7)pkill
结束一组同名的进程。
pkill [选项][信号]进程名
-t
按照终端号剔除用户。
(8)killAll
顾名思义杀死所有。加信号和kill通用;
killall [选项][信号]进程名
-i
交互式,询问是否要杀死某个进程。-I
忽略进程名的大小写。
(9)top
查看系统资源使用情况以及进程信息
前五行信息:
统计信息区:
第一行:任务队列信息,与uptime命令执行结果相同。
- 14:08:11:系统当前时间。
- up 4:09:主机已运行时间。
- 1 users:用户连接数(不是用户数,who命令)。
- load average: 0.07, 0.07, 0.00:系统平均负载,统计最近1,5,15分钟的系统平均负载。
第二行:进程信息。
- Tasks: 221 total:进程总数。
- 2 running:正在运行的进程数。
- 155 sleeping:睡眠的进程数。
- 0 stopped:停止的进程数。
- 0 zombie:僵尸进程数。
第三行:CPU信息(当有多个CPU时,这些内容可能会超过两行)。
- 1.0 us:用户空间所占CPU百分比。
- 0.7 sy:内核空间占用CPU百分比。
- 0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比。
- 98.3 id:空闲CPU百分比。
- 0.0 wa:等待输入输出的CPU时间百分比。
- 0.0 hi:硬件CPU中断占用百分比。
- 0.0 si:软中断占用百分比。
- 0.0 st:虚拟机占用百分比。
第四行:内存信息(与第五行的信息类似与free命令)。
- 2059372 total:物理内存总量。
- 617736 used:已使用的内存总量。
- 541796 free:空闲的内存总量(free+used=total)。
- 870140 buffers:用作内核缓存的内存量。
第五行:swap信息。
- 998396 total:交换分区总量。
- 998396 free:空闲交换区总量 used:已使用的交换分区总量。
- 0 used:已使用的交换分区总量。
- 1178372 cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
其余信息:
PID
:进程ID,进程的唯一标识符。USER
:进程所有者的实际用户名。PR
:进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。NI
:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优级,正值表示低优先级。VIRT
:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES。RES
:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA。SHR
:SHR是进程使用的共享内存。共享内存大小,单位kb。S
:这个是进程的状态。它有以下不同的值:- D — 不可中断的睡眠态。
- R — 运行态。
- S — 睡眠态。
- T — 被跟踪或已停止。
- Z — 僵尸态。
%CPU
:自从上一次更新时到现在任务所使用的CPU时间百分比。%MEM
:进程使用的可用物理内存百分比。TIME+
:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。COMMAND
:运行进程所使用的命令。进程名称(命令名/命令行)。
还有许多在默认情况下不会显示的输出,它们可以显示进程的页错误、有效组和组ID和其他更多的信息。
(10)pidstat
如果查看进程cpu的使用相关信息也可以使用pidstat -u
。
- 在Debian/Ubuntu系统中可以使用下面的命令来安装:
apt-get install sysstat
- CentOS/Fedora/RHEL版本的linux中则使用下面的命令:
yum install sysstat
详细说明:
PID
:进程ID%us
r:进程在用户空间占用cpu的百分比%system
:进程在内核空间占用cpu的百分比%guest
:进程在虚拟机占用cpu的百分比%CPU
:进程占用cpu的百分比CPU
:处理进程的cpu编号Command
:当前进程对应的命令
pidstat 的用法:
pidstat [选项] [<时间间隔>] [<次数>]
常用的参数:
-u
:默认的参数,显示各个进程的cpu使用统计-r
:显示各个进程的内存使用统计-d
:显示各个进程的IO使用情况-p
:指定进程号-w
:显示每个进程的上下文切换情况-t
:显示选择任务的线程的统计信息外的额外信息-T
{ TASK | CHILD | ALL }
这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。-V
:版本号。-h
:在一行上显示了所有活动,这样其他程序可以容易解析-I
:在SMP环境,表示任务的CPU使用率/内核数量-l
:显示命令名和所有参数
实例:显示每个进程的上下文切换情况(-w)
PID
:进程idCswch/s
:每秒主动任务上下文切换数量Nvcswch/s
:每秒被动任务上下文切换数量Command
:命令名
5、生产环境服务器变慢,诊断思路和性能评估
结合Linux 和 JDK命令一起分析,步骤如下:
1、使用top命令找出CPU占比最高的。
2、ps -ef 或者 jps 进一步定位,得知是一个怎么样的后台程序出的问题。
3、定位到具体线程或者代码。
- ps -mp 进程 -o THREAD,tid,time
- 参数解释:
-m
:显示所有的线程
-p
:pid进程使用CPU的时间
-o
:该参数后是用户自定义格式
4、将需要的线程ID转换为16进制格式(英文小写格式)
printf “%x\n” 有问题的线程ID
5、
jstack 进程ID | grep tid(16进制线程ID小写英文) -A60
精准定位到错误的地方。
【Linux】计算机组成与进程相关推荐
- Linux简介(4)--计算机组成与进程及相关命令
文章目录 计算机的基本组成 计算机组成五大部件 系统总线 指令 进程 PID PCB 进程信息 进程描述信息: 进程控制信息 资源信息 现场保护信息(cpu进行进程切换时) 进程状态 进程管理命令 p ...
- Linux从程序到进程
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 计算机如何执行进程呢?这可以说是计算机运行的核心问题.即使我们已经编写好程序,但程 ...
- python使用psutil获取系统(Windows Linux)所有运行进程信息实战:CPU时间、内存使用量、内存占用率、PID、名称、创建时间等;
python使用psutil获取系统(Windows Linux)所有运行进程信息实战:CPU时间.内存使用量.内存占用率.PID.名称.创建时间等: psutil模块可以跨平台使用,支持Linux/ ...
- [转载]Linux从程序到进程
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 计算机如何执行进程呢?这是计算机运行的核心问题.即使已经编写好程序,但程序是死的. ...
- Linux下ps查找进程用kill终止命令
Linux下ps查找进程用kill终止命令<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:offic ...
- Linux内核之话说进程
前言 回望笔者之前发的数篇技术博客,中规中矩,阅读量更是不尽人意,看来没帮到多少人,不行,文风要改,要大改.于是乎,笔者金荣摇身一变,化作Linux OS的一个进程,我是一个进程,我来讲述我的故事. ...
- linux内核调用( )为进程创建虚存区_Linux内核分析-总结篇(九)
本次内容作为Linux内核的总结内容,主要涉及对Linux系统的总体的一些理解,同时将之前的一些总结贴出来作为大家的一个索引,希望笔者一样的菜鸟有一些帮助和入门的作用.从一个初学者的角度对Linux有 ...
- 【Linux】3.0Linux进程概念
文章目录 1.冯诺依曼体系结构 1.1计算机体系的奠基人 1.2冯诺伊曼体系讲解 1.3机器间的数据交互 2.操作系统(OS) 2.1操作系统基本概念 2.2操作系统管理理解 2.3操作系统进程管理 ...
- Linux操作系统基础理论(3)-----浅析Linux 与Minix 下进程实现的异同
Linux操作系统基础理论(3)-----浅析Linux 与Minix 下进程实现的异同 目录 摘要:... 1 1. 引言... 1 1.1 Minix简介... 1 1.2 Linux ...
- 运维基本功(十):Linux计划任务以及进程检测与控制
本文是在课程课件基础上修改的学习笔记 课程原地址:https://www.bilibili.com/video/BV1nW411L7xm 如有侵删 运维基本功(一):Linux系统安装 运维基本功(二 ...
最新文章
- 程序员节,10月24日!
- LeetCode题组:第26题-删除排序数组中的重复项
- 一个简单的线性拟合问题,到底有多少种做法
- linux内核与用户空间的九种通信机制
- php使用七牛直播,七牛上传文件,PHP版本
- java 二进制 归属权限_java 二进制 权限管理
- 外贸企业财务软件的选用
- 航空插头的环境性能科普
- C语言-打印菱形三角形等图形
- html怎么安装系统,一键重装系统_MBR分区一键安装系统教程-爱纯净
- LeetCode455分发饼干
- 索尼(SONY)笔记本装系统蓝屏问题解决方案
- 代码优化- 前端优化
- 大屏幕led无缝拼接显示屏的十大技术优势
- 学计算机需要记住的快捷键,这几个电脑快捷键必须会,快学!
- BZOJ2295我爱你啊
- 30年「相爱相杀」 :30张照片回顾乔布斯和比尔盖茨之间「不得不说」的故事
- 关于“内购破解”等盗版软件、游戏的危害
- Android log查看器
- 【异常】前端提示npm ERR! enoent ENOENT: no such file or directory, open ‘xxx/package.json‘