平台。豫
yuyan · 276 行 · 15347 字节 · UTF-8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276
寻观「底层库」之书。
寻观「客体二号」之「布局」之书。
寻观「客体二号」之「林系统」之书。
寻观「客体二号」之「原生系统」之书。
「:文言:执行器所倚之宿主原语,皆导入自“平台”模块。汉语:宿主(Node 夹具或裸机加载器)提供的平台导入:输出一字节、退出任务、读一字节(无则为负一)、时钟滴答,以及任务与邮箱服务(复制、等待、回收任务,发送、接收、等待消息,消息来源,任务状态、退出码)。裸机上它们被降级为内核服务。同一份执行器也在 Linux 与 macOS 上运行:每个原始原语先看平台号,原生系统上改走 Linux 系统调用或 macOS 的 libSystem(写、读、退出、clock_gettime);任务与邮箱服务在原生系统上尚未实现,按失败返回(待办事项:子进程改用底层接口的运行程序)。:」
「写字节原始」乃化「整数」而「有」也。
「写字节原始」者会「字节」而
若「是原生」于「元」则
虑「流」者
「选择」于(「等零」于(「读四」于「状态_输出流」))于「一」
于(「读四」于「状态_输出流」)而
虑「无」者「写一」于「状态_林字节」于「字节」而
虑「数」者「原生_写」于「流」于「状态_林字节」于「一」而
「元」
否则
《《外调》》名『导入:平台:写字节:1:0』传「字节」
也。
「退出任务原始」乃化「整数」而「有」也。
「退出任务原始」者会「码」而
若「是原生」于「元」则
「原生_退出」于「码」
否则
《《外调》》名『导入:平台:退出任务:1:0』传「码」
也。
「读字节原始」乃化「有」而「整数」也。
「读字节原始」者会「无」而
若「是原生」于「元」则
虑「数」者「原生_读」于「零」于「状态_林字节」于「一」而
若「等」于「数」于「一」则「读一」于「状态_林字节」
否则若「等零」于「数」则(「减」于「零」于「二」)
否则
(「减」于「零」于「一」)
否则
《《外调》》名『导入:平台:读字节:0:1』传「无」
也。
「:文言:读字节:标准入若已重定向于文件,则自其内容取,尽则返负二;否则取自控制台。汉语:读字节:标准输入被重定向到文件(状态_输入缓冲 非零,其内容是堆里的字节数组,长度在偏移 8、字节从偏移 16 起)时从那份内容里取,取尽返回 -2(文件结束;-1 仍表示控制台暂时没有输入);否则取自控制台。:」
「读字节」乃化「有」而「整数」也。
「读字节」者会「无」而
虑「缓」者「读四」于「状态_输入缓冲」而
若「等零」于「缓」则
「读字节原始」于「元」
否则
虑「位」者「读四」于「状态_输入位」而
若「无符号小于」于「位」于(「读四」于(「加」于「缓」于「八」))
则
((「写四」于「状态_输入位」于(「加」于「位」于「一」));
「读一」于(「加」于(「加」于「缓」于「一六」)于「位」))
否则
(「减」于「零」于「二」)
也。
「时钟滴答」乃化「有」而「整数」也。
「时钟滴答」者会「无」而
若「是原生」于「元」则
虑「无」者「原生_取时」于「阳」于「状态_林时」而
虑「秒」者「读四」于「状态_林时」而
虑「纳」者「读四」于(「加」于「状态_林时」于「八」)而
「加」于(「乘」于「秒」于「一零零」)于(「无符号除」于「纳」于「一零零零零零零零」)
否则
《《外调》》名『导入:平台:时钟滴答:0:1』传「无」
也。
「:文言:墙钟:读硬件实时钟,得自一九七零年正月朔日子时起之秒数(三十二位无符号)。汉语:墙钟秒:内核服务 26,返回自 1970-01-01 00:00:00 UTC 起的秒数(三十二位无符号,至 2106 年);ARM64 读 PL031,AMD64 读 CMOS 时钟并换算。开机以来的单调时间仍用 时钟滴答。:」
「墙钟秒」乃化「有」而「整数」也。
「墙钟秒」者会「无」而
若「是原生」于「元」则
虑「无」者「原生_取时」于「阴」于「状态_林时」而
「读四」于「状态_林时」
否则
《《外调》》名『导入:平台:墙钟秒:0:1』传「无」
也。
「:文言:中断:内核吞 Ctrl-C 而立标,此询之(读而清)。汉语:控制台中断。平台.中断查询(内核服务 27,见[控台输入])返回并清除内核记下的 Ctrl-C 标志(1 有 0 无);串口读到的 0x03 不会进入字节流。中断检查:见到标志时,子任务以退出码 130(128 + SIGINT,与 POSIX 相同)结束本任务,首任务(壳)则记进 状态_中断挂起,由正在读行的 读行核 取用;中断点:解释器在每次进入 Wasm 函数体与每次跳回循环头时调用,隔 4096 次才真正询问一次,所以死循环也会在几毫秒内被打断,而平时几乎不增加开销。:」
「中断查询」乃化「有」而「整数」也。
「中断查询」者会「无」而
若「是原生」于「元」则
「零」
否则
《《外调》》名『导入:平台:中断查询:0:1』传「无」
也。
「中断检查」乃化「有」而「有」也。
「中断检查」者会「无」而
若「等零」于(「中断查询」于「元」)则
「元」
否则
(若「等零」于(「读四」于「状态_是子任务」)则「写四」于「状态_中断挂起」于「一」否则「退出任务原始」于「一三零」)
也。
「中断点」乃化「有」而「有」也。
「中断点」者会「无」而
虑「余」者「减」于(「读四」于「状态_中断计」)于「一」而
若「大于」于「余」于「零」则
「写四」于「状态_中断计」于「余」
否则
((「写四」于「状态_中断计」于「中断计初值」);
「中断检查」于「元」)
也。
「:文言:任务之服务:复制、等待、回收。汉语:内核任务服务:复制任务(父得子号、子得零、败为负)、等待任务(阻塞至子退出,返其退出码)、回收任务(释放子任务槽)。:」
「复制任务」乃化「有」而「整数」也。
「复制任务」者会「无」而
若「是原生」于「元」则
(「减」于「零」于「一」)
否则
《《外调》》名『导入:平台:复制任务:0:1』传「无」
也。
「等待任务」乃化「整数」而「整数」也。
「等待任务」者会「号」而
若「是原生」于「元」则
(「减」于「零」于「一」)
否则
《《外调》》名『导入:平台:等待任务:1:1』传「号」
也。
「回收任务」乃化「整数」而「整数」也。
「回收任务」者会「号」而
若「是原生」于「元」则
(「减」于「零」于「一」)
否则
《《外调》》名『导入:平台:回收任务:1:1』传「号」
也。
「:文言:邮箱之服务:一条整数之信,送、收、候、问来源;任务之状态与退出码。汉语:内核邮箱与任务查询服务:发送消息(目标句柄、值 → 0 成功 / -1 失败)、接收消息(非阻塞,空为 0)、消息来源(最近接收的发送者句柄,空为 -1)、等待消息(阻塞至有消息;对端已退出则空返回)、任务状态(位 4 表示已结束)、任务退出码。:」
「发送消息原始」乃化「整数」而化「整数」而「整数」也。
「发送消息原始」者会「目标」而会「值」而
若「是原生」于「元」则
(「减」于「零」于「一」)
否则
《《外调》》名『导入:平台:发送消息:2:1』传「目标」与「值」
也。
「:文言:发送之重试:邮箱唯容一信,对端未取则送不出而返负一;对端得确认后每未及被调度,本任务已发下一信,故败则重试,试尽则记其目标而后径败。汉语:可靠发送:内核邮箱只有一条容量,对端还没取走上一条时 发送消息 返回 -1(“邮箱满”)。而对端刚被唤醒去取确认时往往还没被调度,本任务就已经要发下一条了(远程文件调用里紧接着的两次请求就是如此,二三十次里会撞上一次),所以发送失败时重试(最多二十万次,每次都进内核,时钟中断会让对端运行、取走消息);试尽仍失败,把目标记进 状态_发送失联(加 1),此后发往同一目标的消息立刻失败(对端已退出或无权限时不至于每条都空转);成功则清除该记录。:」
「发送消息重试」乃化「整数」而化「整数」而化「整数」而「整数」也。
「发送消息重试」者会「目标」而会「值」而会「余」而
虑「果」者「发送消息原始」于「目标」于「值」而
若「或者」于(「等零」于「果」)于(「等零」于「余」)则
「果」
否则
「发送消息重试」于「目标」于「值」于(「减」于「余」于「一」)
也。
「发送消息」乃化「整数」而化「整数」而「整数」也。
「发送消息」者会「目标」而会「值」而
若「等」于(「读四」于「状态_发送失联」)于(「加」于「目标」于「一」)则(「减」于「零」于「一」)
否则
虑「果」者「发送消息重试」于「目标」于「值」于「二零零零零零」而
虑「无」者
(「写四」于「状态_发送失联」于(「选择」于(「等零」于「果」)于「零」于(「加」于「目标」于「一」)))
而
「果」
也。
「接收消息」乃化「有」而「整数」也。
「接收消息」者会「无」而
若「是原生」于「元」则
「零」
否则
《《外调》》名『导入:平台:接收消息:0:1』传「无」
也。
「消息来源」乃化「有」而「整数」也。
「消息来源」者会「无」而
若「是原生」于「元」则
(「减」于「零」于「一」)
否则
《《外调》》名『导入:平台:消息来源:0:1』传「无」
也。
「等待消息」乃化「有」而「整数」也。
「等待消息」者会「无」而
若「是原生」于「元」则
「零」
否则
《《外调》》名『导入:平台:等待消息:0:1』传「无」
也。
「任务状态」乃化「整数」而「整数」也。
「任务状态」者会「号」而
若「是原生」于「元」则
「零」
否则
《《外调》》名『导入:平台:任务状态:1:1』传「号」
也。
「任务退出码」乃化「整数」而「整数」也。
「任务退出码」者会「号」而
若「是原生」于「元」则
「零」
否则
《《外调》》名『导入:平台:任务退出码:1:1』传「号」
也。
「:文言:输出之捕获:子任务之出,三字节一信,送父任务而候其确认。汉语:捕获写字节:输出模式为三(子进程的输出被父任务捕获)时,字节先攒在 状态_待发字 里,满三个字节、遇换行或流(标准输出/标准错误)改变时,打成一条消息发给初始任务(句柄 0),再阻塞等它的确认,父任务由此得到限速的输出。发送失败(父任务已退出)则丢弃。:」
「等确认」乃化「有」而「有」也。
「等确认」者会「无」而
虑「无」者「等待消息」于「元」而
「元」
也。
「捕获冲刷」乃化「有」而「有」也。
「捕获冲刷」者会「无」而
虑「数」者「读四」于「状态_待发数」而
若「等零」于「数」则
「元」
否则
虑「消息」者
「位或」
于(「左移」
于(「加」
于(「加」于「捕获消息标」于(「乘」于「一六」于(「减」于(「读四」于「状态_待发流」)于「一」)))
于「数」)
于「二四」)
于(「读四」于「状态_待发字」)
而
虑「无」者(「写四」于「状态_待发数」于「零」)而
虑「无」者(「写四」于「状态_待发字」于「零」)而
虑「结果」者「发送消息」于「零」于「消息」而
若「等零」于「结果」则「等确认」于「元」否则「元」
也。
「捕获写字节」乃化「整数」而「有」也。
「捕获写字节」者会「字节」而
虑「流」者
「选择」于(「等零」于(「读四」于「状态_输出流」))于「一」
于(「读四」于「状态_输出流」)而
虑「无」者
(
若「且」
于(「大于」于(「读四」于「状态_待发数」)于「零」)
于(「不等于」于(「读四」于「状态_待发流」)于「流」)则「捕获冲刷」
于「元」
否则
「元」
)
而
虑「数」者「读四」于「状态_待发数」
而
虑「无」者(「写四」于「状态_待发流」于「流」)
而
虑「无」者
(「写四」
于「状态_待发字」
于(「位或」
于(「读四」于「状态_待发字」)
于(「左移」于(「位与」于「字节」于「二五五」)于(「乘」于「八」于「数」))))
而
虑「无」者
(「写四」于「状态_待发数」于(「加」于「数」于「一」))
而
若「或者」于(「等」于「数」于「二」)于(「等」于「字节」于「一零」)则
「捕获冲刷」于「元」
否则
「元」
也。
「:文言:写字节:子任务之输出被弃者(是子任务为二)不真写;被捕获者(为三)经邮箱送父任务。汉语:输出一字节:本任务是“输出被丢弃”的子任务(状态_是子任务 为 2)则什么也不做;是“输出被捕获”的子任务(为 3)则交给 捕获写字节;否则真写到控制台。:」
「写字节」乃化「整数」而「有」也。
「写字节」者会「字节」而
虑「模」者「读四」于「状态_是子任务」而
若「等」于「模」于「二」则
「元」
否则
(若「等」于「模」于「三」则「捕获写字节」于「字节」否则「写字节原始」于「字节」)
也。
「退出任务」乃化「整数」而「有」也。
「退出任务」者会「码」而
虑「无」者「捕获冲刷」于「元」而
「退出任务原始」于「码」
也。