diff --git a/src/content/chapters/2-slice-dat-time.mdx b/src/content/chapters/2-slice-dat-time.mdx index 6e76c6e..ca389e0 100644 --- a/src/content/chapters/2-slice-dat-time.mdx +++ b/src/content/chapters/2-slice-dat-time.mdx @@ -63,4 +63,4 @@ This isn't very important to know about unless you're writing a kernel or someth Ancient operating systems, including classic Mac OS and versions of Windows long before NT, used a predecessor to preemptive multitasking. Rather than the OS deciding when to preempt programs, the programs themselves would choose to yield to the OS. They would trigger a software interrupt to say, "hey, you can let another program run now." These explicit yields were the only way for the OS to regain control and switch to the next scheduled process. -This is called [*cooperative multitasking*](https://en.wikipedia.org/wiki/Cooperative_multitasking). It has a couple major flaws: malicious or just poorly designed programs can easily freeze the entire operating system, and it's nigh impossible to ensure temporal consistency for realtime/time-sensitive tasks. For these reasons, the tech world switched to preemptive multitasking a long time ago and never looked back. +This is called [*cooperative multitasking*](https://en.wikipedia.org/wiki/Cooperative_multitasking). It has a couple major flaws: malicious or just poorly designed programs can easily freeze the entire operating system, and it's nigh impossible to ensure temporal consistency for realtime/time-sensitive tasks. For example, a program for airbag deployment in a car cannot afford delays. For these reasons, the tech world switched to preemptive multitasking a long time ago and never looked back.