进程管理——基础概念

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27754983/article/details/74052253

简介

刚开始接触到进程时候,进程,线程,程序总是搞不清他们什么关系,最重要是进程和线程总是搞混。不喜欢网上的”官方解释”,我试着用通俗的语言大致说一下。
程序是放在磁盘上的文件,当这个文件可以运行起来干某件事时候,它就成了进程了,当然一个程序需要多个任务,就会生成干这多个任务的进程。线程是进程的下一代,当一个进程需要同时干某件事情时候,就需要有多个线程同时工作,来完成一个进程,比如说听音乐时候,音乐播放器在放出来音乐时候,同时又需要播放歌词,这时就需要两个线程来共同完成”播放音乐”的任务

进程创建

进程(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命令中定义的优先级
    还是来图实在些
    centos4,5优先级
    当然我们现在都是centos6以后的系统了
    centos6优先级
    只是system优先级一行不一样。

进程间通信

进程间通信(Inter Process Communication),分为是否在同一个主机,如果在两个主机就需要使用网络了

同一个主机

  1. signal:信号,kill -l可以看到主机可用信号
  2. shm:共享内存,因为可以多个进程使用同一内存空间
  3. socket:文件socket

    在一个终端创建一个socket文件
    [root@CentOS7 ~]#nc -Ul ./haha
    另一个终端进行监听
    [root@CentOS7 ~]#nc -U ./haha
    这时候就可以进行通信了
    

不同主机

  1. rpc:remote procedure call远程过程调用
  2. socket:ip和端口号

有什么写错的,请多多指正^_^

没有更多推荐了,返回首页