首页 > 技术文章 > 【好文推荐】黑莓OS手册是如何详细阐述底层的进程和线程模型的?

wmyskxz 2020-07-31 17:15 原文

  • 「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」
  • 当然 不论新老朋友 我相信您都可以 从中获益。如果觉得 「不错」 的朋友,欢迎 「关注 + 留言 + 分享」,文末有完整的获取链接,您的支持是我前进的最大的动力!

写在前面

该文章的大部分内容都是翻译自是黑莓 10 实时操作系统 QNX Neutrino开发手册,该手册不仅详细地阐述了 BlackBerry 10 OS 的原理以及 OS 的体系结构,还描述了其 QNX Neutrino 微内核的详细信息 (包括进程线程、多和处理、网络架构、文件系统等...非常完整..)

我阅读了其中「描述进程和线程」的精华部分,觉得写的非常不错,特意翻译 (主要靠有道和 Google 翻译) 跟大家分享一下 (部分内容有改动)

手册中详细描述了许多关于 Linux 函数调用涉及底层方面的细节,在本文中我大都没有贴出来,感兴趣的朋友强烈建议去拜读一下原文!

Part 1. 进程和线程基础

在我们开始讨论线程、进程、时间片和所有其他的精彩的概念之前,让我们先来建立一个类比。

我要做的首先是 说明线程和进程是如何工作的。我能想到的最好的方法 (不涉及实时系统的设计) 是在某种情况下想象我们的线程和进程。

进程就像一栋房子

房子实际上是 具有某些属性的容器 (例如卧室数量、占地面积、区域划分等)

如果您以这个角度来看,房子实际上并不会主动做任何事情————它是一个 被动的对象。这实际上就是进程干的事情了 (充当容器)

线程就像是居住者

居住在房子里面的人是 活动的对象,他们可以使用各种房间,看电视、做饭、洗澡等等等...

单线程

如果您独居过,那么您就会知道————您可以在家里的任何时间做您任何想做的事,因为家里面没有其他人,您只要遵从内心的规则就好。

多线程

如果在您的房子中再另外添加一个人,情况将发生巨变。

假设您结婚了,那么现在您的家里住着您和您的配偶。因此您不能在 任何时间 都能够使用厕所,因为您需要首先确保您的配合不在其中!

如果您有两个 负责任的成年人 居住在房屋中,那么通常您可以在 「安全性」 这一块儿稍微放松一些 (因为您知道另一个成年人会尊重您的空间,不会试图故意在厨房放火之类的..)

但是,如果把几个 熊孩子 混在一起,事情就会变得更加有趣了...

说回进程和线程

就像是房屋占用土地一样,进程也要占用内存。

也正如房屋拥有者可以随意进入他们想去的任何房间一样,进程中的线程也 都拥有 对该内存区域访问的权限。

如果某个线程被分配了某些东西 (例如哥哥进程出去买了游戏机

推荐阅读