1、进程与线程的概念

来源百度百科:

  • 进程(Process) 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。
  • 线程(thread) 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

2、什么是进程管理

  • 到底什么是进程呢?

    进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
  • 那么什么是程序呢?

    程序是人使用计算机语言编写的可以实现特定目标或解决特定问题的代码集合。
  • 那我们换一种说法:
    • 程序是人使用计算机语言编写的,可以实现一定功能,并且可以执行的代码集合。
    • 进程是正在执行中的程序。程序被执行时,执行人的权限和属性、以及程序的代码都会被加载如内存,操作系统给这个进程分配一个ID号,我们成为PID(进程ID)

3、进程管理的作用

  1. 判断服务器健康状态:运维工程师最主要的工作就是保证服务器安全稳定的运行。理想的状态是,在服务器出现问题,但是还没有造成服务器宕机或停止服务时,就人为干预解决了问题。进程管理最主要的工作就是判断服务器当前运行是否健康,是否需要人为干预。如果服务器的CPU占用率、内存占用率过高,就需要人为介入解决问题了。
  2. 查看系统中所有的进程:我们需要查看系统中所有正在运行的进程,通过这些进程可以判断系统中运行了哪些服务,是否有非法服务运行。
  3. 杀死进程:这是进程管理中最不常用的手段,当我需要停止服务时,会通过正确关闭命令来停止服务(如apache服务可以通过service httpd stop来关闭)。只有当正确终止进程的手段失效的情况下,才会考虑使用kill命令杀死进程(你不是杀手,不要什么进程都用kill来终止,否则非常容易导致服务器崩溃)

4、Linux进程的几种状态

  • D:不可被唤醒的睡眠状态,通常用于I/O情况。
  • R:该进程正在运行。
  • S:该进程在睡眠状态,可被唤醒。
  • T:停止状态,可能是在后台暂停或进程在除错状态。
  • W:内存交互状态(从2.6内核开始无效)。
  • X:死掉的进程(应该不会出现)。
  • Z:僵尸进程。进程已经终止,但是部分程序还在内存当中。
  • <:高优先级(以下状态在BSD格式当中出现)。
  • N:低优先级。
  • L:被锁入内存。
  • s:包含子进程。
  • l:多线程(小写L)。
  • +:位于后台。

5、进程与线程的关系

(1)线程与进程的关系

比如电脑同时进行着200个进程:

  1. 线程与进程概念

    • 线程: 每个进程中至少包含一个线程,而这些线程都在共享进程的资源空间等,当线程发生变化的时候只会引起CPU执行的过程发生变化,不会改变进程所拥有的资源。同理一个程序中至少包含一个进程。进程中执行运算的最小单位,亦是执行处理机调度的基本单位
    • 进程: 每个进程都有自己的地址空间,资源如,内存,I/O,CPU,同一个进程里的 线程共享本进程里的地址空间,那能不能使用别人家进程的地址空间呢,显然这是不可以的。由于进程的独立性,当某一个进程崩溃之后,在保护模式下不会对别的进程进行影响。资源分配的基本单位,运行调度的基本单位,系统中并发执行的单位。
  2. 两者的比较
    • 调度

      同一个进程中,线程的切换不会引起进程的切换。

      由一个进程的线程切换到另一个线程的进程时,引起进程的切换。
    • 并发性

      进程可以并发执行,而一个进程中的线程也可以并发执行。
    • 拥有的资源

      一般来说,线程并不会拥有自己的资源,但是它可以访问自己本进程中的资源。比如,一个进程打开的文件等,进程中的其他线程是可以共享的。

(2)总结

我们简单总结下:

  • 进程:指在系统中正在运行的一个应用程序,程序一旦运行就是进程,进程是资源分配的最小单位。
  • 线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流,线程是程序执行的最小单位。

参考:

『学了就忘』Linux系统管理 — 81、进程管理介绍的更多相关文章

  1. 『学了就忘』Linux系统管理 — 82、Linux中进程的查看(ps命令)

    目录 1.ps命令介绍 2.ps aux命令示例 3.ps -le命令示例 4.pstree命令 1.ps命令介绍 ps命令是用来静态显示系统中进程的命令. 不过这个命令有些特殊,它部分命令的选项前不 ...

  2. 『学了就忘』Linux系统管理 — 83、Linux中进程的查看(top命令)

    目录 1.top命令介绍 2.top命令示例 3.top命令输出项解释 4.top命令常用的实例 1.top命令介绍 top命令是用来动态显示系统中进程的命令. [root@localhost ~]# ...

  3. 『学了就忘』Linux系统管理 — 84、Linux中进程的管理

    目录 1.Linux系统中的信号 2.杀掉进程的命令 (1)kill命令 (2)killall命令 (3)pkill命令 1.Linux系统中的信号 Linux系统中可以识别的信号较多,我们可以使用命 ...

  4. 『学了就忘』Linux系统管理 — 86、查看系统资源相关命令

    目录 1.vmstat命令 2.dmesg命令 3.free命令 4.查看CPU信息 5.查看本机登陆用户信息 (1)w命令 (2)who命令 6.uptime命令 7.查看系统与内核相关信息 1.v ...

  5. 『学了就忘』Linux系统管理 — 85、工作管理相关命令

    目录 1.工作管理简介 2.如何把命令放入后台 3.后台管理命令 (1)查看后台的工作 (2)将后台暂停的工作恢复到前台执行 (3)把后台暂停的工作恢复到后台执行 4.后台命令脱离登录终端运行 1.工 ...

  6. 『学了就忘』Linux文件系统管理 — 66、通过图形界面进行LVM分区

    目录 1.选择自定义分区 2.分配boot分区 3.创建LVM物理卷 4.生成卷组 5.创建逻辑卷 6.格式化安装 我们先用新安装Linux系统时的图形化界面,来演示一下LVM逻辑卷如何进行分区. 提 ...

  7. 『学了就忘』Linux软件包管理 — 40、Linux系统软件包介绍

    目录 1.Linux系统软件包分类 2.源码包说明 3.二进制包说明 4.RPM包的优缺点 4.RPM包的两种安装方法 5.总结 1.Linux系统软件包分类 Linux系统下的软件包只有源码包和二进 ...

  8. 『学了就忘』Linux文件系统管理 — 57、Linux文件系统介绍

    目录 1.了解硬盘结构(了解即可) (1)硬盘的逻辑结构 (2)硬盘接口 2.Linux文件系统介绍 (1)Linux文件系统的特性 (2)Linux常见文件系统 3.整理一下对文件系统的认识 在了解 ...

  9. 『学了就忘』Linux文件系统管理 — 65、LVM逻辑卷管理介绍

    目录 1.LVM逻辑卷管理的简介 2.LVM逻辑卷管理的原理 3.总结建立LVM分区的步骤 1.LVM逻辑卷管理的简介 LVM是Logical Volume Manager的简称,中文就是逻辑卷管理. ...

随机推荐

  1. 痞子衡嵌入式:深扒IAR启动函数流程及其__low_level_init设计对函数重定向的影响

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是IAR启动函数流程及其__low_level_init设计对函数重定向的影响. 上一篇文章 <IAR下RT-Thread工程自定义 ...

  2. selenium实战:窗口化爬取*宝数据(附源码链接)

    完整代码&火狐浏览器驱动下载链接:https://pan.baidu.com/s/1pc8HnHNY8BvZLvNOdHwHBw 提取码:4c08 双十一刚过,想着某宝的信息看起来有些少很难做 ...

  3. 使用pmml跨平台部署机器学习模型Demo——房价预测

      基于房价数据,在python中训练得到一个线性回归的模型,在JavaWeb中加载模型完成房价预测的功能. 一. 训练.保存模型 工具:PyCharm-2017.Python-39.sklearn2 ...

  4. C++和Java中的i+++i++

    1 public class Cd { 2 public static void main(String[]args){ 3 int i = 50 ; 4 System.out.println(i++ ...

  5. Atcoder Grand Contest 038 F - Two Permutations(集合划分模型+最小割)

    洛谷题面传送门 & Atcoder 题面传送门 好久前做的题了--今天偶然想起来要补个题解 首先考虑排列 \(A_i\) 要么等于 \(i\),要么等于 \(P_i\) 这个条件有什么用.我们 ...

  6. windows和linux文本的编码格式不一样所出的错

    windows下编写的python脚本上传的linux下执行会出现错误: usr/bin/python^M: bad interpreter: No such file or directory 原因 ...

  7. 9. Delete Node in a Linked List

    Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...

  8. mysql 不等于 符号写法

    今天在写sql语句的时候,想确认下mysql的不等于运算符是用什么符号表示的 经过测试发现mysql中用<>与!=都是可以的,但sqlserver中不识别!=,所以建议用<> ...

  9. Scrapy-Splash的安装和使用

    Scrapy-Splash是一个Scrapy中支持JavaScript渲染的工具. Scrapy-Splash的安装分为两部分.一个是Splash服务的安装,具体是通过Docker,安装之后,会启动一 ...

  10. Swift-技巧(十) Protocol 的灵活使用

    摘要 Protocol 是 Swift 中实现面向协议编程思想的重要部分.在使用过程中有遇到协议中声明的部分,但是在遵守部分不需要实现的,那么就需要使用 extension 参与进来,让 Protoc ...