Knowledge

THE multiprogramming system

Source 📝

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:)

Index

Developer
Eindhoven University of Technology
Edsger Dijkstra
Written in
Electrologica X8
assembly language
Final release
Research
Available in
source code
Electrologica X8
Kernel
Layered
Default
user interface

Paper tape
operating system
Edsger W. Dijkstra
Dutch
Eindhoven University of Technology
Netherlands
batch system
multitasking
multi-user
SDS 940
processes
paged
virtual memory
Electrologica X8
hardware-based
memory management

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.