博客
关于我
3分钟搞清楚进程与线程的区别
阅读量:366 次
发布时间:2019-03-05

本文共 955 字,大约阅读时间需要 3 分钟。

工厂车间与进程的类比

进程(process)和线程(thread)是操作系统的基础概念,但它们的抽象性让很多人感到难以理解。为了让这些概念更直观,我尝试用一个工厂车间的场景来进行类比。

CPU是工厂的核心,始终在运行。它就像工厂的生产线,24小时不停地加工各种产品。就像生产线一样,CPU一次只能处理一个任务,也就是一个进程。就像车间的生产线一样,其他车间的生产活动必须暂停,直到当前车间完成生产任务。

进程就像工厂的车间。每个车间都有自己的生产任务,且在任何时候都只有一间车间在运行。CPU就像车间的负责人,负责监督整个生产流程。就像车间的生产任务一样,进程也需要独占CPU的资源。

线程与进程的关系就像车间里的工人。一个车间可以有多个工人协同工作,但每个工人都属于同一个车间。同样,一个进程可以包含多个线程。这些线程就像工厂车间里的工人,他们可以同时执行不同的任务,但每个任务都属于同一个车间。

内存的共享就像车间的办公桌。每个车间都有自己的办公桌,所有工人都可以使用这些共享资源。就像内存一样,进程的内存空间是共享的,所有线程都可以访问这些共享内存。

为了防止多个线程同时访问同一块内存,车间可以设置一些限制。最简单的方法是设置门卫,先进入的人拿取钥匙,等待的人就在门口排队。这种机制就像互斥锁(Mutex),它确保了同一块内存只能被一个线程访问。

有些车间的空间有限,只能容纳固定数量的人。比如说厨房,它可以容纳5个人,超过5个人的人就需要在外面等待。这就像某些内存区域只能供给固定数量的线程使用。为了避免资源冲突,这些车间可以设置门卫,挂上特定的钥匙,确保只有预定数量的人能够进入。

为了更好地管理这些车间,工厂可以设置钥匙架。每个车间都有自己的钥匙,进去时取钥匙,出来时还要归位。这种机制就像信号量(Semaphore),它确保了多个线程不会互相冲突。信号量是一种更灵活的资源管理机制,它可以支持不同的车间容量需求。

总体来说,操作系统的设计可以归结为以下几点:

  • 允许多进程形式,多个任务可以同时运行
  • 允许多线程形式,一个任务可以分成多个部分同时运行
  • 提供协调机制,防止进程和线程之间的冲突,同时允许资源共享
  • 希望这些类比能够帮助大家更好地理解进程和线程的概念。如果对某些内容有疑问,欢迎随时交流!

    转载地址:http://dlvg.baihongyu.com/

    你可能感兴趣的文章
    MySQL的常见命令
    查看>>
    mysql的引擎以及优缺点_MySQL有哪些存储引擎,各自的优缺点,应用场景-阿里云开发者社区...
    查看>>
    MySQL的操作:
    查看>>
    mysql的数据类型有哪些?
    查看>>
    mysql的语法规范
    查看>>
    MySql的连接查询
    查看>>
    mysql的配置文件参数
    查看>>
    MySQL的错误:No query specified
    查看>>
    mysql监控工具-PMM,让你更上一层楼(上)
    查看>>
    mysql监控工具-PMM,让你更上一层楼(下)
    查看>>
    MySQL相关命令
    查看>>
    mysql社工库搭建教程_社工库的搭建思路与代码实现
    查看>>
    Warning: Can't perform a React state update on an unmounted component. This is a no-
    查看>>
    mysql笔记 (早前的,很乱)
    查看>>
    MySQL笔记:InnoDB的锁机制
    查看>>
    mysql第一天~mysql基础【主要是DDL、DML、DQL语句,以及重点掌握存存引擎、查询(模糊查询)】
    查看>>
    mysql第二天~mysql基础【查询排序、分页查询、多表查询、数据备份与恢复等】
    查看>>
    MySQL简介和安装
    查看>>
    MySQL简单查询
    查看>>
    MySQL管理利器 MySQL Utilities 安装
    查看>>