计算机-进程与线程

计算机的核心是CPU,它承担了所有的计算任务,而操作系统是计算机的管理者,它负责任务的调度,资源的分配和管理,统领整个计算机硬件;应用程序是具有某种功能的程序,程序是运行于操作系统之上的。

进程

进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。进程一般由程序,数据集合和进程控制块三部分组成。程序用于描述进程要完成的功能,是控制进程执行的指令集;数据集合是程序在执行时所需要的数据和工作区;程序控制块包含进程的描述信息和控制信息是进程存在的唯一标志进程具有的特征:

  • 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;

  • 并发性:任何进程都可以同其他进行一起并发执行;

  • 独立性:进程是系统进行资源分配和调度的一个独立单位;

  • 结构性:进程由程序,数据和进程控制块三部分组成

线程

在早期的操作系统中并没有线程的概念,进程是拥有资源和独立运行的最小单位,也是程序执行的最小单位。任务调度采用的是时间片轮转的抢占式调度方式,而进程是任务调度的最小单位,每个进程有各自独立的一块内存,使得各个进程之间内存地址相互隔离。后来,随着计算机的发展,对CPU的要求越来越高,进程之间的切换开销较大,已经无法满足越来越复杂的程序的要求了。于是就发明了线程,线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。一个进程可以有一个或

多个线程,各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。一个标准的线程由线程ID,当前指令指针PC,寄存器和堆栈组成。而进程由内存空间(代码,数据,进程空间,打开的文件)和一个或多个线程组成。

进程与线程的区别

  • 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;

  • 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线

  • 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信号等),某进程内的线程在其他进程不可见;

  • 调度和切换:线程上下文切换比进程上下文切换要快得多


漫画解析

1.

计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。

2.

假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。

3.

进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。

4.

一个车间里,可以有很多工人。他们协同完成一个任务。

5.

线程就好比车间里的工人。一个进程可以包括多个线程。

6.

车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。这象征一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。

7.

可是,每间房间的大小不同,有些房间最多只能容纳一个人,比如厕所。里面有人的时候,其他人就不能进去了。这代表一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。

8.

一个防止他人进入的简单方法,就是门口加一把锁。先到的人锁上门,后到的人看到上锁,就在门口排队,等锁打开再进去。这就叫"互斥锁"(Mutual exclusion,缩写 Mutex),防止多个线程同时读写某一块内存区域。

9.

还有些房间,可以同时容纳n个人,比如厨房。也就是说,如果人数大于n,多出来的人只能在外面等着。这好比某些内存区域,只能供给固定数目的线程使用。

10.

这时的解决方法,就是在门口挂n把钥匙。进去的人就取一把钥匙,出来时再把钥匙挂回原处。后到的人发现钥匙架空了,就知道必须在门口排队等着了。这种做法叫做"信号量"(Semaphore),用来保证多个线程不会互相冲突。

不难看出,mutex是semaphore的一种特殊情况(n=1时)。也就是说,完全可以用后者替代前者。但是,因为mutex较为简单,且效率高,所以在必须保证资源独占的情况下,还是采用这种设计。

11.

操作系统的设计,因此可以归结为三点:

(1)以多进程形式,允许多个任务同时运行;

(2)以多线程形式,允许单个任务分成不同的部分运行;

(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。

2021-01-27 计算机-进程与线程区别相关推荐

  1. 一次挖矿入侵处理记录(2021.01.27)

    https://github.com/bg6cq/ITTS/blob/master/security/mine/README.md 转自上面链接,也是我的亲身经历,供大家学习.网络安全大家引以为戒.爱 ...

  2. 程序、进程、线程区别与联系

    定义: 一 程序是存放在磁盘上的一系列代码和数据的看执行映像,是一个静止的实体, 二 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位,  是一个执 ...

  3. Interview:算法岗位面试—上海某公司算法岗位技术(偏机器学习,证券基金行业)面试考点之进程与线程区别、GD改进的算法、ROC和AUC

    Interview:算法岗位面试-上海某公司算法岗位技术(偏机器学习,证券基金行业)面试考点之进程与线程区别.GD改进的算法.ROC和AUC 导读:其实,考察的知识点,博主都做过,但是,emmm,这些 ...

  4. java的进程和线程_java进程和线程区别与不同

    java进程和线程区别与不同. 一.定义 1.进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位. 2.线程是进程的一个实体,是CPU调度和分派的基本 ...

  5. 如何查询一个进程下面的线程数(进程和线程区别)

    在平时工作中,经常会听到应用程序的进程和线程的概念,那么它们两个之间究竟有什么关系或不同呢? 一.对比进程和线程 1)两者概念 -  进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程 ...

  6. java 进程 线程数量_如何查询一个进程下面的线程数(进程和线程区别)

    在平时工作中,经常会听到应用程序的进程和线程的概念,那么它们两个之间究竟有什么关系或不同呢? 一.对比进程和线程 1)两者概念 -  进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程 ...

  7. java中的进程和线程区别

    [概念] 进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,竞争计算机系统资源的基本单位. 线程:是进程的一个执行单元,是进程内科调度实体.比进程更小的独立运行的基本单位.线程也被称为轻量级 ...

  8. C++多线程----进程与线程区别

    本篇文章围绕以下几个问题展开: 何为进程?何为线程?两者有何区别? 何为并发?C++中如何解决并发问题?C++中多线程的语言实现? 同步互斥原理以及多进程和多线程中实现同步互斥的两种方法 Qt中的多线 ...

  9. 进程与线程区别,进程间通信方式

    一.进程和线程的区别 可以根据以下四方面来分析: 1.拥有资源 进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问隶属进程的资源. 2.调度 线程是独立调度的基本单位,在同一进程中,线程的切换 ...

最新文章

  1. 团队计划(5.25)
  2. AtCoder AGC035D Add and Remove (状压DP)
  3. [JS] - 判断IE6和IE7
  4. http响应协议分析
  5. 在控制台中录入学生姓名(python)
  6. python的scripts里没有pip_解决python scripts和pip缺失问题
  7. 异步与并行~ReaderWriterLockSlim实现的共享锁和互斥锁
  8. java字符串数组排序_在Java中对字符串数组进行排序
  9. Kafka(三)-- Kafka主要参数
  10. 每天都有所收获_使技术保持最新状态会有所收获
  11. pytesseract
  12. 。。。剑指Offer之——反转链表。。。
  13. python 学习之路开始了
  14. paip.c++ 转换 java 解决方案
  15. HCIP 3-4月考试战报
  16. 什么是前端开发?什么是后端开发?
  17. zuul两大作用_springCloud学习- 路由网关(zuul)
  18. C++ 模板类和友元
  19. 我看好金融IT业的几个理由
  20. HTML入门笔记(附完整代码)

热门文章

  1. Anaconda中快速安装Tensorflow与Keras并在pycharm中完成相应配置(win10cpu版)
  2. Hadoop streaming: Exception in thread main java.io.IOException: No space left on device
  3. Python编程基础:第四十九节 鸭子类型Duck Typing
  4. A folder failed to be moved——Android SDK的安装问题解决方案
  5. AI新浪潮:截止2022年,全球74%的计算将来自端侧
  6. 农发行:BI数据平台建设
  7. 数据挖掘导论读书笔记6关联分析的高级概念
  8. Zookeeper源码用ant进行编译为eclipse工程--转载
  9. redis 控制调用频率
  10. linux shell pushd popd dirs命令