preemption proof-of-concept

This commit is contained in:
minjaesong
2022-03-05 22:47:21 +09:00
parent 91c9fcea10
commit 8d1f6fccf3
8 changed files with 99 additions and 10 deletions

1
assets/disk1/!BOOTSEC Normal file
View File

@@ -0,0 +1 @@
let p=_BIOS.FIRST_BOOTABLE_PORT;com.sendMessage(p[0],"DEVRST\x17");com.sendMessage(p[0],'OPENR"WORKBENCH",'+p[1]);let r=com.getStatusCode(p[0]);if(0==r)if(com.sendMessage(p[0],"READ"),r=com.getStatusCode(p[0]),0==r){let g=com.pullMessage(p[0]);eval(g)}else println("I/O Error");else println("WORKBENCH not found");println("Shutting down...");println("It is now safe to turn off the power");

33
assets/disk1/WORKBENCH Normal file
View File

@@ -0,0 +1,33 @@
con.move(2,1)
let prog1 = "while(1){print(1);sys.sleep(600);}"
let prog2 = "while(1){print(2);sys.sleep(500);}"
let context1 = parallel.spawnNewContext()
let context2 = parallel.spawnNewContext()
let runner1 = parallel.attachProgram(context1, prog1)
let runner2 = parallel.attachProgram(context2, prog2)
con.move(2,1)
parallel.launch(runner1)
parallel.launch(runner2)
let exit = false
while (!exit) {
parallel.suspend(runner1)
parallel.suspend(runner2)
let [y,x] = con.getyx()
con.move(1,2)
print(`Used mem: ${sys.getUsedMem()} ; ${Math.random()} `)
con.move(y,x)
parallel.resume(runner1)
parallel.resume(runner2)
sys.spin()
}