Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
THE multiprogramming system
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Design== The design of the THE multiprogramming system is significant for its use of a [[Abstraction|layered structure]], in which "higher" layers depend on "lower" layers only: * '''Layer 0''' was responsible for the multiprogramming aspects of the operating system. It decided which process was allocated to the [[central processing unit]] (CPU), and accounted for processes that were blocked on [[Semaphore (programming)|semaphores]]. It dealt with [[interrupt]]s and performed the [[context switch]]es when a process change was needed. This is the lowest level. In modern terms, this was the [[scheduler]]. * '''Layer 1''' was concerned with [[Memory management|allocating memory]] to processes. In modern terms, this was the pager. * '''Layer 2''' dealt with communication between the operating system and the [[system console]]. * '''Layer 3''' managed all I/O between the devices attached to the computer. This included buffering information from the various devices. * '''Layer 4''' consisted of [[User space|user programs]]. There were 5 processes: in total, they handled the [[Compiler|compiling]], [[Execution (computing)|executing]], and [[Printer (computing)|printing]] of user programs. When finished, they [[Control flow|passed control]] back to the schedule [[Queue (abstract data type)|queue]], which was [[Priority queue|priority-based]], favoring recently started processes and ones that blocked because of I/O. * '''Layer 5''' was the user; as Dijkstra notes, "not implemented by us". The constraint that higher layers can only depend on lower layers was imposed by the designers in order to make reasoning about the system (using quasi-[[formal methods]]) more tractable, and also to facilitate building and testing the system incrementally. The layers were implemented in order, layer 0 first, with thorough testing of the abstractions provided by each layer in turn. This division of the [[kernel (operating system)|kernel]] into layers was similar in some ways to [[Multics]]' later [[protection ring|ring-segmentation]] model. Several subsequent operating systems have used layering to some extent, including [[Windows NT]] and [[macOS]], although usually with fewer layers. The code of the system was written in [[assembly language]] for the Dutch [[Electrologica X8]] computer. This computer had a [[word (computer architecture)|word]] size of 27 bits, 48 [[kiloword]]s of [[core memory]],<ref name="osc"/> 512 kilowords of [[drum memory]] providing [[cache (computing)|backing store]] for the [[Cache replacement policies|LRU cache algorithm]], paper tape readers, paper tape punches, plotters, and printers.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)