208*_*080 1 smalltalk runtime conceptual pharo
对于 Javascript,存在解释运行时状态的优秀介绍:http : //latentflip.com/loupe/
对于 Smalltalk,我从未找到类似的关于运行时和图像快照结构的概述。
据说 Smalltalk 图像由可以相互发送消息的对象组成。这会产生很多问题:
一次只有一个物体处于活动状态吗?
是否有启动指定“进程”对象的“根调度程序”?
每个暂停的图像是否都有活动对象的列表?
如果两个活动对象向第三个对象发送消息会发生什么?
一次只能处理一条消息吗?“原子性”的级别是什么?
两个活动对象如何通信?
是否每个对象都有一个接收到但尚未处理的消息的“收件箱”?
每个对象都有一个事件循环吗?
一次只有一个物体处于活动状态吗?
是的,虽然系统可以调度不同的“进程”,这些进程是Process在不同优先级运行的类的实例,但它们在当时控制一个。由于调度是非抢占式的,进程必须显式地让步或等待信号量(类的实例Semaphore)。
是否有启动指定“进程”对象的“根调度程序”?
是的,全局Processor( 的一个实例ProcessorScheduler)保存和管理准备运行的进程的优先级列表(其他是等待某个信号量的进程)。
每个暂停的图像是否都有活动对象的列表?
悬浮的图像不过是图像。所以,是的,它包含了一切,特别是Processor,它知道是谁activeProcess。
如果两个活动对象向第三个对象发送消息会发生什么?
一次发送一条消息(即使它们可能被虚拟机中断)
一次只能处理一条消息吗?“原子性”的级别是什么?
atomiciy(不可中断性)的级别本质上是字节码:消息发送、赋值等。任何被程序员视为原子的操作。
两个活动对象如何通信?
对象通过消息发送进行通信。