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. 记一次 .NET 某电商无货源后端服务 死锁分析

    一:背景 1. 讲故事 这个月初,星球里的一位朋友找到我,说他的程序出现了死锁,怀疑是自己的某些写法导致mongodb出现了如此尴尬的情况,截图如下: 说实话,看过这么多dump,还是第一次遇到真实的 ...

  3. SpringBoot数据源相关配置

    数据源配置 单数据源 配置步骤 引入依赖:H2数据库驱动.JDBC依赖.acturator(运维).web模块(用于测试).lambok(使用@Slf4j打印日志). 直接配置所需的Bean,注入容器 ...

  4. [bzoj5338]xor

    维护两颗可持久化字典树(当然可以放在一起),第一棵维护每一个点到根的每一位的二进制数量,在其父亲的基础上建立:第二棵维护dfs序上每一个点到第1个点的二进制数量,在其上一个点的基础上建立. 对于询问1 ...

  5. [atARC084D]Small Multiple

    构造一张图:$\forall x$,向$10x$连一条边权为0的边,向$x+1$连1条边权为1的边,那么0到$i$的代价即为$i$各位数字之和 考虑到我们只关心于当前点的两个特征:1.模$n$的余数( ...

  6. HouseRobber

    // // Created by Administrator on 2021/7/27. // #ifndef C__TEST01_HOUSEROBBER_HPP #define C__TEST01_ ...

  7. airTest小程序自动化踩坑记(android设备)

    一:怎么开启微信小程序的webview调试定位元素 操作如下(android设备): 1.打开X5内核的方法在聊天窗口任意输入"http://debugx5.qq.com" 点击& ...

  8. Hbuilder/Uniapp 格式化的时候,很多属性会排列在一行,如何结局?

    因为自己遇到这个问题,然后百度了很久都得不到解决办法,所以解决问题以后在博客园写下此文,希望能帮助到更多人! //在jsbeautifyrc.js里面的html中加入这个,就OK了 "wra ...

  9. CF1264D1 Beautiful Bracket Sequence (easy version)

    考虑在一个确定的括号序列中,我们可以枚举中间位置,按左右最长延伸出去的答案计算. 我们很自然的思考,我们直接维护左右两边,在删除一些字符后能够延伸的最长长度. 我们设\(f_{i,j}\)为\(i\) ...

  10. 洛谷 P3438 - [POI2006]ZAB-Frogs(乱搞/李超线段树)

    题面传送门 首先一眼二分答案,我们假设距离 \((i,j)\) 最近的 scarefrog 离它的距离为 \(mn_{i,j}\),那么当我们二分到 \(mid\) 时我们显然只能经过 \(mn_{i ...