Smalltalks 运行时状态

208*_*080 1 smalltalk runtime conceptual pharo

对于 Javascript,存在解释运行时状态的优秀介绍:http : //latentflip.com/loupe/

对于 Smalltalk,我从未找到类似的关于运行时和图像快照结构的概述。

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

  • 一次只有一个物体处于活动状态吗?

  • 是否有启动指定“进程”对象的“根调度程序”?

  • 每个暂停的图像是否都有活动对象的列表?

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

  • 一次只能处理一条消息吗?“原子性”的级别是什么?

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

  • 是否每个对象都有一个接收到但尚未处理的消息的“收件箱”?

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

Lea*_*lia 5

一次只有一个物体处于活动状态吗?

是的,虽然系统可以调度不同的“进程”,这些进程是Process在不同优先级运行的类的实例,但它们在当时控制一个。由于调度是非抢占式的,进程必须显式地让步或等待信号量(类的实例Semaphore)。

是否有启动指定“进程”对象的“根调度程序”?

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

每个暂停的图像是否都有活动对象的列表?

悬浮的图像不过是图像。所以,是的,它包含了一切,特别是Processor,它知道是谁activeProcess

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

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

一次只能处理一条消息吗?“原子性”的级别是什么?

atomiciy(不可中断性)的级别本质上是字节码:消息发送、赋值等。任何被程序员视为原子的操作。

两个活动对象如何通信?

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