3 ms·
If it blows your mind to consider the time before call stacks were somewhat the norm in computers, you should look into the time from before register renaming.
by taeric 3y ago
If it blows your mind to consider the time before call stacks were somewhat the norm in computers, you should look into the time from before register renaming.
I don't think many people realize just how much of a modern processor is made around supporting preemptive multitasking. Folks know that we have a class of security bugs from it, but a lot of what happens in a CPU is around juggling multiple workloads.
- mr_toad 3y agoIn ten years or so all the people who worked on machines without preemptive multitasking will be retired.
- froh 3y agowait what? you're right! 386 came 1985, 45 years later is 2030 now I feel old
- Narishma 3y agoWhy the 386? You could do preemptive multitasking on a 286 or even an 8088.
- froh 3y agowithout MMU you have to trust your tasks, but yes technically all you need is timed interrupts. so if you go the no mmu route, you could even list 6502 and z80, as in "I rarely do multithreading, but if I do I do it without MMU" ;-) or at least have an MPU, which is what some microcontrollers have to protect multitasking.
- Tabular-Iceberg 3y agoCooperative multitasking is in fashion now, so we might get a whole new generation to take over. Or they’ll just cargo-cult everything and have no clue what’s happening under the hood.
- taeric 3y agoTo be fair, I doubt I fully understand what is going on fully under the hood. I usually bring this line up when folks lament that we don't have abstractions that fits the instruction set of the computer. Ignoring that many of the abstractions of the computer are orthogonal to isolated instructions, at this point. https://stackoverflow.com/questions/72423227/is-a-schedulable-unit-of-cpu-time-slice-process-or-thread https://stackoverflow.com/questions/72423227/is-a-schedulabl... was a fun read as I was looking for something that would explore some of that for me.
- Tabular-Iceberg 3y agoThere can be degrees of understanding. What I’ve been seeing is devs deciding that everything should be async to improve performance, but then running every single task in its own event loop, making it exactly as synchronous as before, but with more overhead.