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

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

工厂车间与进程的类比

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

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

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

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

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

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

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

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

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

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

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

    你可能感兴趣的文章
    Mysql 学习总结(89)—— Mysql 库表容量统计
    查看>>
    mysql 实现主从复制/主从同步
    查看>>
    mysql 审核_审核MySQL数据库上的登录
    查看>>
    mysql 导入 sql 文件时 ERROR 1046 (3D000) no database selected 错误的解决
    查看>>
    mysql 导入导出大文件
    查看>>
    mysql 将null转代为0
    查看>>
    mysql 常用
    查看>>
    MySQL 常用列类型
    查看>>
    mysql 常用命令
    查看>>
    Mysql 常见ALTER TABLE操作
    查看>>
    mysql 往字段后面加字符串
    查看>>
    mysql 快速自增假数据, 新增假数据,mysql自增假数据
    查看>>
    Mysql 报错 Field 'id' doesn't have a default value
    查看>>
    MySQL 报错:Duplicate entry 'xxx' for key 'UNIQ_XXXX'
    查看>>
    mysql 排序id_mysql如何按特定id排序
    查看>>
    Mysql 提示:Communication link failure
    查看>>
    mysql 插入是否成功_PDO mysql:如何知道插入是否成功
    查看>>
    Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log
    查看>>
    mysql 数据库备份及ibdata1的瘦身
    查看>>
    MySQL 数据库备份种类以及常用备份工具汇总
    查看>>