Linux教程

Linux知识心得17 Linux 进程管理初了解

本文主要是介绍Linux知识心得17 Linux 进程管理初了解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

笔记

1、进程

程序:存放代码的⽂件=》静态
进程:程序的运⾏过程=》动态

2、查看进程(ps)

格式:
	ps   [参数]
参数:
	-a : 显示一个终端的所有进程
	-u : 显示用户、CPU使用率以及内存使用率
	-x : 显示命令执行的路径及系统后台运行的进程
	
	常用组合体:ps -aux 和 ps -ef
	注:查看CPU和内存使用情况时建议使用:ps -aux, 如果查看父进程则使用:ps -ef
例1:显示当前终端所有的进程
    [root@localhost 7]# ps -a
       PID TTY          TIME CMD
     85528 pts/0    00:00:00 sleep
     85529 pts/1    00:00:00 ps

例2:显示终端所有进程的用户及CPU使用率
	[root@localhost 7]# ps -au
    USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root       1339  0.0  0.1 115544  1980 tty1     Ss+  Jul06   0:00 -bash
    root      24373  0.0  0.2 115680  2244 pts/0    Ss   08:48   0:02 -bash

注:
	USER : 用户名
	PID :  进程ID号
	%CPU : CPU使用率
	%MEM : 内存使用率
	VSZ  : 虚拟内存
	RSS  :实际内存
	TTY  :终端
	STAT :进程状态
	START:启动时间
	TIME :占用CPU的时间
	COMMAND : 执行的命令

进程状态
	R : 正在运行
	S : 可中断睡眠
	D : 植物人状态
	T : 暂停状态
	Z : 僵死状态
	N : 优先级低
	s :  包含子进程
	+ : 前台运行
	< : 优先级较⾼的进程
	l : 以线程的⽅式运⾏

进程、线程以及协程
​`````````````````````````````````````````````````````````````````````````````````
一、进程 
    进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

	组成
    进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。

	特征 
    动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。 
    并发性:任何进程都可以同其他进程一起并发执行 
    独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位; 
    异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进 
    结构特征:进程由程序、数据和进程控制块三部分组成。 
    多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。
​`````````````````````````````````````````````````````````````````````````````````

​`````````````````````````````````````````````````````````````````````````````````
二、线程
	线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。

	线程是程序中一个单一的顺序控制流程。进程内有一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指令运行时的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。

特点

	在多线程OS中,通常是在一个进程中包括多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体。线程具有以下属性。 
1)轻型实体 
	线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。 
线程的实体包括程序、数据和TCB。线程是动态概念,它的动态特性由线程控制块TCB(Thread Control Block)描述。TCB包括以下信息: 
(1)线程状态。 
(2)当线程不运行时,被保存的现场资源。 
(3)一组执行堆栈。 
(4)存放每个线程的局部变量主存区。 
(5)访问同一个进程中的主存和其它资源。 
	用于指示被执行指令序列的程序计数器、保留局部变量、少数状态参数和返回地址等的一组寄存器和堆栈。 
2)独立调度和分派的基本单位。 
	在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中的)。 
3)可并发执行。 
	在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。 
4)共享进程资源。

在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址;此外,还可以访问进程所拥有的已打开文件、定时器、信号量机构等。由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。
​`````````````````````````````````````````````````````````````````````````````````
​`````````````````````````````````````````````````````````````````````````````````
三、协程
	协程与子例程一样,协程(coroutine)也是一种程序组件。相对子例程而言,协程更为一般和灵活,但在实践中使用没有子例程那样广泛。协程源自 Simula 和 Modula-2 语言,但也有其他语言支持。 
	协程不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用。 
一个程序可以包含多个协程,可以对比与一个进程包含多个线程, 
因而下面我们来比较协程和线程。我们知道多个线程相对独立,有自己的上下文,切换受系统控制;而协程也相对独立,有自己的上下文,但是其切换由自己控制,由当前协程切换到其他协程由当前协程来控制。 
	协程和线程区别:协程避免了无意义的调度,由此可以提高性能,但也因此,程序员必须自己承担调度的责任,同时,协程也失去了标准线程使用多CPU的能力。

​`````````````````````````````````````````````````````````````````````````````````

进程状态切换

20180301143430302

这篇关于Linux知识心得17 Linux 进程管理初了解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!