简介
刚开始接触到进程时候,进程,线程,程序总是搞不清他们什么关系,最重要是进程和线程总是搞混。不喜欢网上的”官方解释”,我试着用通俗的语言大致说一下。
程序是放在磁盘上的文件,当这个文件可以运行起来干某件事时候,它就成了进程了,当然一个程序需要多个任务,就会生成干这多个任务的进程。线程是进程的下一代,当一个进程需要同时干某件事情时候,就需要有多个线程同时工作,来完成一个进程,比如说听音乐时候,音乐播放器在放出来音乐时候,同时又需要播放歌词,这时就需要两个线程来共同完成”播放音乐”的任务
进程创建
进程(Process),官方解释大概意思是将放在磁盘中的程序复制一个副本,放在内存里,构成指令的集合。
创建进程
那么什么时候会开始一个进程呢?
当我们执行一个命令时候,通常会开启一个进程,比如ping的时候,就会产生一个进程。
这里使用pidof来查看运行着的进程编号。
进程属性
我们看到了进程编号,进程肯定还有其他属性,还包括进程名,开启进程所使用的命令,进程优先级(下面详解),进程所属用户,进程占用CPU时间等,总之,有很多,当我们用到进程工具查看时候就知道了
进程类型
看了进程长什么样后,进程有什么样的类型呢,就像人还分为黄种人,黑种人,白种人呢
按模式分
守护进程(daemon),类似守门神,不管有没有人进门,他们都时时刻刻,兢兢业业的守在那里,在系统引导过程中启动(开机就运行的进程),和终端无关,就是说,不管你开没开启终端,都会运行的进程
前台进程,跟终端相关,只有打开终端后,才运行的进程,称之为前台进程,比如说打开终端后,ping一个机器,使用vi 编辑一个文件
按照进程状态分
- 运行态:running
- 就绪态:ready(等待cpu分配时间段)
- 睡眠态:
- 可中断:interruptable
- 不可中断:uninterruptable
- 停止态:stopped,暂停于内存,没有运行,但不会被调度,除非手动启动
- 僵死态:zombie,结束进程,父进程结束前,子进程不关闭(进程的父进程死掉,而它没有死就会出现僵死态)
按照操作密集程度分
- CPU密集型:进程在运行时,占用CPU时间较多的进程。
- I/O密集型:进程在运行时,占用I/O时间较多的进程。通常情况下,I/O密集型的优先级要高于CPU密集型。
进程优先级
进程处理时候,如果同时处理多个进程,就涉及到哪个进程首先使用硬件的问题,因为进程是需要CPU分配时间片来进行资源调用,其优先级越高,分配时间片越多,这就是进程的优先级。
整个系统来说,进程的有优先级,是用0-139数字来表示的,数字优先级从小到大依次是:0-99,100-139。
在这140个数字中,优先级分为2类:
- 实时优先级(realtime):0-99,是由内核维护的
- 静态优先级(nice):100-139,可以使用nice命令来调整,nice值的取值范围是[-20,19),分别对应100到139。nice默认值是0。
- PR(top):top命令中定义的优先级
还是来图实在些
当然我们现在都是centos6以后的系统了
只是system优先级一行不一样。
进程间通信
进程间通信(Inter Process Communication),分为是否在同一个主机,如果在两个主机就需要使用网络了
同一个主机
- signal:信号,kill -l可以看到主机可用信号
- shm:共享内存,因为可以多个进程使用同一内存空间
-
socket:文件socket
在一个终端创建一个socket文件
[root@CentOS7 ~]#nc -Ul ./haha
另一个终端进行监听
[root@CentOS7 ~]#nc -U ./haha
这时候就可以进行通信了
不同主机
- rpc:remote procedure call远程过程调用
- socket:ip和端口号
有什么写错的,请多多指正^_^