Smalltalks运行时状态



对于Javascript,有一个很好的介绍来解释运行时状态:http://latentflip.com/loupe/

对于Smalltalk,我从未发现运行时和图像快照的结构有类似的概述。

据说Smalltalk图像由可以相互发送消息的对象组成。这就产生了许多问题:

  • 一次是否只有一个对象处于活动状态?

  • 是否存在";根调度器";启动时被指定为";过程";对象?

  • 每个挂起的图像都有活动对象的列表吗?

  • 如果两个活动对象向第三个对象发送消息,会发生什么?

  • 一次只能处理一条消息吗?";原子性"?

  • 两个活动对象如何通信?

  • 是否每个对象都有一个";收件箱";已接收但尚未处理的邮件的数量?

  • 每个对象都有一个事件循环吗?

一次是否只有一个对象处于活动状态?

是的,而系统可以调度不同的";过程";,它们是以不同优先级运行的类Process的实例,它们一次控制一个。由于调度是非抢占式的,进程必须显式地让出或等待信号量(类Semaphore的实例(。

是否存在";根调度器";启动时被指定为";过程";对象?

是的,全局Processor(ProcessorScheduler的实例(保留并管理准备运行的进程的优先级列表(其他进程是等待某个信号量的进程(。

每个挂起的图像都有活动对象的列表吗?

挂起的图像不过是图像。所以,是的,它有所有的东西,特别是Processor,它知道activeProcess是谁

如果两个活动对象向第三个对象发送消息,会发生什么?

消息一次发送一条(即使它们可能被虚拟机中断(

一次只能处理一条消息吗?";原子性"?

原子性(不可中断性(的级别本质上是字节码:消息发送、分配等。程序员认为是原子性的任何操作。

两个活动对象如何通信?

对象通过消息发送进行通信。

在某种程度上,问题的答案取决于使用的虚拟机。虽然许多Smalltalk实现或衍生产品都非常接近最初的概念,但可能会有很大的差异。

从你的问题来看,你似乎对概念性答案感兴趣,我建议你阅读Smalltalk的原文;蓝皮书";。

Smalltalk-80:语言及其实现。阿黛尔·戈德堡和大卫·罗布森,1983年,艾迪森·韦斯利·

这本书深入讨论了系统的设计和核心类的实现,但也有几个部分,最后,提供了来自VM、解释器、对象内存等的规范

相关内容

  • 没有找到相关文章

最新更新