4 ms·
The ultimate goal of an operating system is to provide some abstraction level so that application programmers don't have to worry about things like disk I/O, sc
by reynoldsbd 12y ago
The ultimate goal of an operating system is to provide some abstraction level so that application programmers don't have to worry about things like disk I/O, scheduling, etc... The key here is that the OS takes care of things that are done the same way each time so that programmers have less work to do.
Currently, the de facto abstraction is to (as an application programmer) generate machine code either by direct compilation or by interpreting at run time. Programs are written as if they're the only process on the CPU, and the OS takes care of keeping multiple running processes from overwriting each other or starving each other of CPU time.
In other words, everything ends up as machine code. This is the same every time.
I think a really radical OS redesign would target a higher level of abstraction. Instead of programmers designing procedural programs resulting in machine code, why can't programmers design a static system of components and let the OS orchestrate their interaction?
If the overarching goal of an OS is to support application programmers, then I think an important notion to challenge is that all applications must be imperative.