784:
939:
399:) 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
195:, described in monographs in 1965-66 and published in 1968. Dijkstra never named the system; "THE" is simply the abbreviation of "Technische Hogeschool Eindhoven", then the name (in
985:
762:
980:
395:
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-
611:
479:
970:
706:
755:
699:
677:
965:
713:
200:
157:
33:
685:
628:
942:
734:
463:
669:
861:
741:
351:
managed all I/O between the devices attached to the computer. This included buffering information from the various devices.
842:
604:
511:
473:
802:
431:
305:
was responsible for the multiprogramming aspects of the operating system. It decided which process was allocated to the
748:
990:
637:
90:
720:
692:
645:
451:
378:
975:
653:
480:
http://archive.computerhistory.org/resources/text/Knuth_Don_X4100/PDF_index/k-1-pdf/k-1-C1063.6-source-THE-os.pdf
400:
151:
597:
468:
661:
919:
837:
310:
306:
283:
727:
995:
242:
856:
827:
517:
366:
212:
851:
822:
807:
260:
49:
370:
224:
278:(I/O) device data, and for a significant portion of the operating system code, and nearly all the
768:
620:
552:
530:
499:
192:
914:
884:
447:
423:
332:
245:
57:
817:
792:
542:
427:
238:
188:
144:
120:
54:
847:
812:
408:
321:
when a process change was needed. This is the lowest level. In modern terms, this was the
38:
411:
model. Several subsequent operating systems have used layering to some extent, including
502:
899:
894:
832:
396:
382:
342:
318:
234:
196:
164:
959:
924:
909:
783:
578:
Silberschatz, Abraham; Peterson, James L. (May 1988), "13: Historical
Perspective",
904:
879:
556:
374:
275:
208:
443:
439:
295:
272:
268:
264:
249:
231:
204:
134:
889:
412:
358:
294:
The design of the THE multiprogramming system is significant for its use of a
216:
171:
28:
322:
314:
385:, favoring recently started processes and ones that blocked because of I/O.
547:
435:
362:
279:
256:
113:
404:
248:), freeing programs from being forced to use physical locations on the
230:
The THE system apparently introduced the first forms of software-based
220:
589:
454:, paper tape readers, paper tape punches, plotters, and printers.
416:
253:
773:
593:
533:(1968), "The structure of the 'THE'-multiprogramming system",
341:
dealt with communication between the operating system and the
504:
The structure of the 'THE'-multiprogramming system (EWD-196)
267:, which made sure the requested information was in memory,
263:
supported by
Dijkstra's system) to "automatically generate
298:, in which "higher" layers depend on "lower" layers only:
391:
was the user; as
Dijkstra notes, "not implemented by us".
286:
were used as a programming construct for the first time.
862:
Philosophy of computer programming and computing science
756:
Self-stabilizing
Systems in Spite of Distributed Control
309:(CPU), and accounted for processes that were blocked on
700:
Solution of a
Problem in Concurrent Programming Control
678:
Selected
Writings on Computing: A Personal Perspective
510:. E.W. Dijkstra Archive. Center for American History,
271:
if necessary". Paged virtual memory was also used for
361:. There were 5 processes: in total, they handled the
870:
791:
627:
163:
150:
140:
129:
119:
109:
89:
71:
63:
48:
27:
763:On the Cruelty of Really Teaching Computer Science
707:The Structure of the 'THE'-Multiprogramming System
335:to processes. In modern terms, this was the pager.
686:A Note on Two Problems in Connexion with Graphs
605:
8:
22:
16:First implementation of paged virtual memory
735:Programming Considered as a Human Activity
612:
598:
590:
21:
986:Information technology in the Netherlands
546:
670:Predicate Calculus and Program Semantics
403:into layers was similar in some ways to
491:
219:operating system. It was much like the
938:
742:How Do We Tell Truths That Might Hurt?
422:The code of the system was written in
419:, although usually with fewer layers.
373:of user programs. When finished, they
573:
571:
569:
567:
565:
7:
981:Computer science in the Netherlands
714:Go To Statement Considered Harmful
252:. It did this by using a modified
201:Eindhoven University of Technology
36:(Technische Hogeschool Eindhoven);
34:Eindhoven University of Technology
14:
749:On the Role of Scientific Thought
207:. The THE system was primarily a
937:
782:
693:Cooperating Sequential Processes
638:A Primer of ALGOL 60 Programming
721:Notes on Structured Programming
464:RC 4000 Multiprogramming System
227:in the THE system was static".
971:Discontinued operating systems
430:computer. This computer had a
1:
843:Programming language research
803:Theoretical computing science
512:University of Texas at Austin
474:Timeline of operating systems
478:Source code is available at
654:A Discipline of Programming
215:; it was not designed as a
191:designed by a team led by
181:THE multiprogramming system
97:; 56 years ago
77:; 59 years ago
23:THE multiprogramming system
1012:
966:Assembly language software
282:compiler. In this system,
933:
780:
580:Operating System Concepts
535:Communications of the ACM
469:Ring (computer security)
265:calls to system routines
920:Adriaan van Wijngaarden
838:Programming methodology
662:A Method of Programming
307:central processing unit
646:Structured Programming
857:Software architecture
828:Distributed computing
728:The Humble Programmer
548:10.1145/363095.363143
377:back to the schedule
823:Concurrent computing
808:Software engineering
434:size of 27 bits, 48
261:programming language
500:Dijkstra, Edsger W.
452:LRU cache algorithm
442:, 512 kilowords of
331:was concerned with
24:
991:Edsger W. Dijkstra
915:Carel S. Scholten
317:and performed the
223:, but "the set of
193:Edsger W. Dijkstra
953:
952:
885:Per Brinch Hansen
424:assembly language
409:ring-segmentation
333:allocating memory
296:layered structure
246:memory management
177:
176:
58:assembly language
1003:
976:Dutch inventions
941:
940:
818:Algorithm design
786:
614:
607:
600:
591:
584:
583:
575:
560:
559:
550:
527:
521:
520:) (Jun 14, 1965)
515:
509:
496:
428:Electrologica X8
319:context switches
313:. It dealt with
241:did not support
239:Electrologica X8
189:operating system
145:Electrologica X8
110:Marketing target
105:
103:
98:
85:
83:
78:
55:Electrologica X8
25:
19:Operating system
1011:
1010:
1006:
1005:
1004:
1002:
1001:
1000:
956:
955:
954:
949:
929:
872:
866:
813:Systems science
794:
787:
778:
774:EWD manuscripts
769:Selected papers
623:
621:Edsger Dijkstra
618:
588:
587:
577:
576:
563:
529:
528:
524:
507:
498:
497:
493:
488:
460:
292:
211:that supported
187:was a computer
166:
101:
99:
96:
81:
79:
76:
72:Initial release
39:Edsger Dijkstra
37:
20:
17:
12:
11:
5:
1009:
1007:
999:
998:
993:
988:
983:
978:
973:
968:
958:
957:
951:
950:
948:
947:
934:
931:
930:
928:
927:
922:
917:
912:
910:Jaap Zonneveld
907:
902:
900:Leslie Lamport
897:
895:Ole-Johan Dahl
892:
887:
882:
876:
874:
868:
867:
865:
864:
859:
854:
848:Program design
845:
840:
835:
833:Formal methods
830:
825:
820:
815:
810:
805:
799:
797:
789:
788:
781:
779:
777:
776:
771:
766:
759:
752:
745:
738:
731:
724:
717:
710:
703:
696:
689:
682:
674:
666:
658:
650:
642:
633:
631:
625:
624:
619:
617:
616:
609:
602:
594:
586:
585:
561:
541:(5): 341–346,
531:Dijkstra, E.W.
522:
490:
489:
487:
484:
483:
482:
476:
471:
466:
459:
456:
426:for the Dutch
397:formal methods
393:
392:
386:
383:priority-based
375:passed control
352:
346:
343:system console
336:
326:
291:
288:
243:hardware-based
235:virtual memory
175:
174:
169:
167:user interface
161:
160:
155:
148:
147:
142:
138:
137:
131:
127:
126:
123:
117:
116:
111:
107:
106:
93:
87:
86:
73:
69:
68:
65:
61:
60:
52:
46:
45:
31:
18:
15:
13:
10:
9:
6:
4:
3:
2:
1008:
997:
996:1968 software
994:
992:
989:
987:
984:
982:
979:
977:
974:
972:
969:
967:
964:
963:
961:
946:
945:
936:
935:
932:
926:
925:Niklaus Wirth
923:
921:
918:
916:
913:
911:
908:
906:
903:
901:
898:
896:
893:
891:
888:
886:
883:
881:
878:
877:
875:
869:
863:
860:
858:
855:
853:
849:
846:
844:
841:
839:
836:
834:
831:
829:
826:
824:
821:
819:
816:
814:
811:
809:
806:
804:
801:
800:
798:
796:
793:Main research
790:
785:
775:
772:
770:
767:
765:
764:
760:
758:
757:
753:
751:
750:
746:
744:
743:
739:
737:
736:
732:
730:
729:
725:
723:
722:
718:
716:
715:
711:
709:
708:
704:
702:
701:
697:
695:
694:
690:
688:
687:
683:
680:
679:
675:
672:
671:
667:
664:
663:
659:
656:
655:
651:
648:
647:
643:
640:
639:
635:
634:
632:
630:
626:
622:
615:
610:
608:
603:
601:
596:
595:
592:
582:, p. 512
581:
574:
572:
570:
568:
566:
562:
558:
554:
549:
544:
540:
536:
532:
526:
523:
519:
518:transcription
513:
506:
505:
501:
495:
492:
485:
481:
477:
475:
472:
470:
467:
465:
462:
461:
457:
455:
453:
449:
448:backing store
445:
441:
437:
433:
429:
425:
420:
418:
414:
410:
406:
402:
398:
390:
387:
384:
380:
376:
372:
368:
364:
360:
359:user programs
357:consisted of
356:
353:
350:
347:
344:
340:
337:
334:
330:
327:
324:
320:
316:
312:
308:
304:
301:
300:
299:
297:
289:
287:
285:
281:
277:
274:
270:
266:
262:
258:
255:
251:
247:
244:
240:
236:
233:
228:
226:
222:
218:
214:
210:
206:
202:
198:
194:
190:
186:
182:
173:
170:
168:
162:
159:
156:
153:
149:
146:
143:
139:
136:
133:Compile from
132:
130:Update method
128:
124:
122:
118:
115:
112:
108:
94:
92:
91:Final release
88:
74:
70:
66:
64:Working state
62:
59:
56:
53:
51:
47:
44:
40:
35:
32:
30:
26:
943:
905:David Parnas
880:Shlomi Dolev
761:
754:
747:
740:
733:
726:
719:
712:
705:
698:
691:
684:
676:
668:
660:
652:
644:
636:
579:
538:
534:
525:
503:
494:
421:
394:
388:
381:, which was
354:
348:
338:
328:
302:
293:
276:input/output
229:
213:multitasking
209:batch system
184:
180:
178:
121:Available in
95:Final / 1968
67:Discontinued
42:
852:development
444:drum memory
440:core memory
250:drum memory
205:Netherlands
135:source code
960:Categories
890:Tony Hoare
486:References
446:providing
413:Windows NT
315:interrupts
311:semaphores
284:semaphores
259:(the only
217:multi-user
172:Paper tape
50:Written in
944:Wikiquote
436:kilowords
367:executing
363:compiling
323:scheduler
273:buffering
225:processes
199:) of the
141:Platforms
29:Developer
458:See also
450:for the
407:' later
371:printing
280:ALGOL 60
269:swapping
257:compiler
114:Research
871:Related
557:2021311
405:Multics
389:Layer 5
355:Layer 4
349:Layer 3
339:Layer 2
329:Layer 1
303:Layer 0
221:SDS 940
203:of the
165:Default
158:Layered
125:English
100: (
80: (
873:people
681:(book)
673:(book)
665:(book)
657:(book)
649:(book)
641:(book)
555:
401:kernel
369:, and
290:Design
185:THE OS
152:Kernel
43:et al.
795:areas
629:Works
553:S2CID
508:(PDF)
417:macOS
379:queue
254:ALGOL
237:(the
232:paged
197:Dutch
850:and
432:word
415:and
179:The
154:type
102:1968
82:1965
75:1965
543:doi
438:of
183:or
962::
564:^
551:,
539:11
537:,
365:,
41:,
613:e
606:t
599:v
545::
516:(
514:.
345:.
325:.
104:)
84:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.