Java教程

进程与资源管理篇(一)

本文主要是介绍进程与资源管理篇(一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、资源管理器

Windows资源管理器
在Windows中可以直观地使用任务管理器来进行进程管理,了解系统的运行状态,比如CPU使用率、内存使用率,磁盘使用率。
使用任务管理器的目的有:

  • 利用"应用程序"和"进程"标签来査看系统中运行了哪些程序和进程
  • 利用"性能"和"用户"标签来判断服务器的健康状态,查看该程序的资源使用率
  • 在"应用程序"和"进程"标签中强制中止任务和进程

    Linux资源管理
    windows的进程管理更直白,更好看,但是如果管理多个进程,自动化管理进程的启动、结束,重启,那么图形化就显得费劲了,Linux更适合专业技术人员使用。

二、进程

2.1概念

进程:是正在计算机执行的一个程序或命令,每个进程都是一个运行的实体,并占用一定的系统资源
程序:是人使用计算机语言编写的,可以实现特定目标或解决特定问题,并且可以执行的代码集合

2.2进程与程序的关系

  • 开发把代码写好,还未运行的时候,只是个静态、程序源代码
  • 当运维将开发的代码运行起来之后,就称之为进程(机器上一个在运行的程序)
  • 程序运行时,系统为其分配了PID、运行的用户、内存、CPU等使用率

2.3进程与线程

进程(包工头):是源代码,数据的结合体,是一个资源单位,可以在Linux上查到对应信息
线程(工人):才是操作系统去干活的一个工作单位

2.4关于进程fork的概念

我们的操作系统都是一堆进程,系统运行时,就产生了1号进程,然后其他进程都是1号进程创建的子进程,操作系统的运行,就是不断的创建进程、以及销毁进程的过程。

2.5孤儿进程

当父亲进程挂了,导致儿子进程成了孤儿,可以是一个或者多个。孤儿进程会被系统的1号进程收养,并且由1号进程来回收,处理这些孤儿进程,不会对系统产生什么危害。

代码运行孤儿进程

[root@localhost ~]# cat guer.py
#coding:utf-8
import os
import sys
import time

pid = os.getpid()
ppid = os.getppid()
print 'im father: ', 'pid: ', pid, 'ppid: ', ppid
son_pid = os.fork()
print('now song_pid is: ',son_pid)
#执行pid=os.fork()则会生成一个子进程
#返回值pid有两种值:
#    如果返回的pid值为0,表示在子进程当中
#    如果返回的pid值>0,表示在父进程当中
if son_pid > 0:
    print 'father going die...'
    # 让老父亲,主动退出,挂掉
    sys.exit(0)

# 保证主线程退出完毕
# 程序延迟了1秒,还在运行中,儿子进程还未挂,成了孤儿
time.sleep(20)

print 'im child: ', os.getpid(),'now my father is: ', os.getppid()

2.6僵尸进程

父亲进程创建出子进程后,如果子进程先挂了,父进程却不知道儿子进程挂了这件事,就无法正确送走儿子进程,清楚它在系统中的信息,这个儿子进程就成了僵尸进程,会对系统产生危害。(当系统中有了僵尸进程,可以通过ps命令找到它,状态是Z,zombie)

2.6.1代码运行僵尸进程

[root@localhost ~]# cat jiangshi.py
#coding:utf-8
from multiprocessing import Process
import time,os

def run():
    print('son_pid: ',os.getpid())

if __name__ == '__main__':
    p=Process(target=run)
    p.start()

    print('father_pid: ',os.getpid())
    time.sleep(1000)


2.6.2 如何解决僵尸进程
使用ps -ef命令,可以找出父亲进程和僵尸进程的pid号

  • 可以主动杀死父亲进程
  • 等程序自动结束,则自动退出所有进程
  • 优化代码

三、进程管理命令

3.1 top命令

# 作用:查看服务器的进程占用资源
# 快捷键:
z 打开,关闭颜色

M 将结果按照内存从高到低进行降序排列;
m 切换内存的显示格式。
P 将结果按照CPU使用率从高到低进行排列
1 当服务器有多个cpu 时可以使用该快捷键来切换是否展示显示各个cpu 的详细信息
q 退出

3.1.1系统整体信息

第一行


如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载

获取CPU的信息

查看当前机器的核数


查看当前机器的核数(多核情况,排序,去重,统计)

虚拟机硬件设置

第二行

这篇关于进程与资源管理篇(一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!