WAITLIST 子系统是阿波罗制导计算机 (AGC) 的任务调度系统,它能够延迟执行程序任务。这种基于时间的调度机制允许 AGC 在特定时间间隔执行任务,在计算资源有限的实时环境中优先处理操作。WAITLIST 管理需要在特定延迟后执行的操作,从几厘秒到几分钟不等。
有关任务执行环境的信息,请参阅核心运行时系统;有关执行许多调度任务的解释器的信息,请参阅解释器和扩展动词。
任务调度系统由三个主要组件组成:WAITLIST、T3RUPT 和 TASKOVER。WAITLIST 管理在指定延迟后执行的任务排队,T3RUPT 处理常规中断服务以检查和分派任务,TASKOVER 管理任务的完成。
来源:Comanche055/WAITLIST.agc37-63 Comanche055/WAITLIST.agc378-438
WAITLIST 系统在以下几个重要约束下运行
| 约束 | 值 | 描述 |
|---|---|---|
| 时间范围 | 1到16250厘秒 | 延迟时间必须在0.01到162.5秒之间 |
| 最大任务数 | 9 | 最多只能同时调度9个任务 |
| 中断处理 | 必须在中断被禁止的情况下调用 | 任务在中断被禁止的情况下注册 |
| 任务完成 | 必须以 TC TASKOVER 结束 | 任务必须通过调用 TASKOVER 终止 |
来源:Comanche055/WAITLIST.agc57-62
WAITLIST 系统维护两个主要数据结构
这些结构协同工作,以维护一个按时间排序的待处理任务队列。
来源:Comanche055/WAITLIST.agc39-55
当程序需要在延迟后调度一个任务执行时,它会调用 WAITLIST 并传入延迟时间和任务地址。
L-1 CA DELTAT (Time in centiseconds to task start)
L TC WAITLIST
L+1 2CADR DESIRED TASK
L+2 (Minor of 2CADR)
L+3 RELINT (Returns here)
对于与调用者在同一 EBANK 和 FBANK 中的任务,可以使用更高效的 TWIDDLE 例程
L-1 CA DELTAT
L TC TWIDDLE
L+1 ADRES DESIRED TASK
L+2 RELINT (Returns here)
来源:Comanche055/WAITLIST.agc64-82
当新任务注册到 WAITLIST 时,系统会
来源:Comanche055/WAITLIST.agc138-144 Comanche055/WAITLIST.agc201-271
T3RUPT 中断处理程序负责在任务到期时分派它们执行。
来源:Comanche055/WAITLIST.agc378-418 Comanche055/WAITLIST.agc423-438
对于超过 162.5 秒的延迟,LONGCALL 功能将等待时间分解为更小的间隔。
来源:Comanche055/WAITLIST.agc441-557
WAITLIST 系统使用独特的时间表示方式
16384 - (T1 - T)厘秒,其中 T 是当前时间,T1 是第一个任务的时间这种表示方式能够高效地检查任务是否就绪,并维护一个按时间排序的列表。
来源:Comanche055/WAITLIST.agc39-49
任务的实际执行时间可能与请求的延迟略有不同,原因如下:
来源:Comanche055/WAITLIST.agc104-121
WAITLIST 包含对常见问题的错误检测
| 错误条件 | 响应 |
|---|---|
| 零或负延迟时间 | 使用代码 1204 中止 |
| 列表溢出 (>9 个任务) | 使用代码 1203 中止 |
来源:Comanche055/WAITLIST.agc151-152 Comanche055/WAITLIST.agc338-340
WAITLIST 系统在 AGC “新启动” 过程中进行初始化
来源:Comanche055/WAITLIST.agc95-96
WAITLIST 代码采用了多种优化技术,以减少内存使用并提高性能
来源:Comanche055/WAITLIST.agc72-82 Comanche055/WAITLIST.agc39-55
WAITLIST 是 AGC 执行系统的基本组成部分,并在整个软件中广泛用于定时操作,例如
来源:Comanche055/WAITLIST.agc31-36 Comanche055/DOWNLINK_LISTS.agc76-154
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(2cbe82)