Remix.run Logo
▲ da_chicken 5 hours ago

The term she coined for it was "man-rated". Meaning that it had been tested rigorously enough to be trusted to keep humans alive.

During the Apollo 11 descent to the lunar surface, Buzz Aldarin pressed a button to display altitude and position during the landing sequence. As it turns out, this was the 8th task the Apollo 11 lander's guidance computer was asked to run, and it was only capable of running 7 tasks in real-time. Thanks to Hamilton and her team's priority scheduler, the guidance computer threw an alarm, killed the lowest priority task, and then resumed the execution of the other 7. If that hadn't been programmed to rescue itself like that, the computer would have crashed, and the Apollo 11 lander would not likely not have been the success that it was.

▲setr 4 hours ago | parent [-]

That does not seem like particularly notable example of foresight & robustness, given that it’s such a low number of maximum tasks, and such a fundamental & frequently used element of its operation.

Like it wouldn’t even be describable as a “rescue itself” if the response was simply “No. Too many jobs running. Please kill one to continue”

▲jacquesm 4 hours ago | parent | next [-]

At that time running that many concurrent tasks on such anemic hardware was a small miracle. This wasn't your average linux kernel.

▲delamon 30 minutes ago | parent | prev | next [-]

It is infinitely harder to be first. Once it is known that viable path exists, the task becomes a lot easier

▲jonstewart 3 hours ago | parent | prev | next [-]

The Apollo Guidance Computer had 4KB of RAM and 16KB of ROM. Can you write a scheduler that would execute 8 programs related to landing on the moon in 4KB?

▲da_chicken 2 hours ago | parent | next [-]

An asynchronous scheduler with task priority, interrupts, and real-time response. That goes on a spaceship with less than 70 Watts of power available for the computer. That weighed about 70 pounds. When there has never been that sort of a multi-tasking computer controlled avionics before.

At a time when the contemporary computer systems that used asynchronous, priority-scheduled multitasking operating systems were things like IBM OS/360 mainframes and DEC PDP-6/PDP-10 minicomputers.

It was like having an Apple II in mid 1960s with double the word size.

▲Gibbon1 an hour ago | parent [-]

I used san RTOS written in assembly for the Atmel AVR. AvrX (by John Barello)

You can look at the code here.

https://github.com/kororos/AvrX

Compiles down under 2k.

The thing is while actually doing that isn't crazy hard, they did that with hardly any existing examples to go by. And without modern tools.

▲bronson 3 hours ago | parent | prev [-]

And it ran at 0.043 MIPS. Each task would get maybe 5000 instructions per second, minus scheduler overhead.

▲coffeefirst 3 hours ago | parent | prev [-]

You’re forgetting this had never been done before.