CS Ramble — Set 3b - operating systems

This is post is part of set 3 of A Ramble Around CS.

We’ll get to processes, threads, and fibers soon, but first we need to talk about how all the things your computer is doing at any given time are organized.

What is an Operating System?

Early personal computers more or less gave the currently-running program full control of the machine.

For instance, a simplified map of the memory of the Apple II computer looks like this:

down
LOW: box width 2 height 0.3 fill 0xd8ecf3 thin "Free RAM" bold
TEXT: box same fill lightblue height 0.2 "Text screen data"
GR: box same height 0.5 "Graphical screen data"
RAM: box same as LOW height 3 "Free RAM" bold "(not to scale)" italic
IO: box same as GR height 0.05 "“Memory” that controls devices" above "" above
ROM: box same height 0.4 "ROM"

# Border
box with nw at 1st box.nw width 2 height (first box.n.y - last box.s.y)

arrow from IO.ne + (-0.15,0.17) down until even with IO.n - (0,0.01) thin
Apple II Memory Map

Within limits1, your code was pretty much free to use the Free RAM (“Random Access Memory”) however it wanted.

We’ll discuss TBD in the next part.


  1. The ROM (“Read-Only Memory”) used certain locations to keep track of things like the current position on the screen, current drawing color, etc., so you had to avoid those if you wanted to keep using the ROM routines. ↩︎