Operating system internals
The first widely used operating system was CP/M, devel-oped for the Intel 8080 microprocessor and 8" floppy disk systems. It supported I/O calls by two jump tables — BDOS (basic disk operating system) and BIOS (basic I/O system). It quickly became a standard within the industry and a large amount of application software became available for it. Many of the micro-based busi-ness machines of the late 1970s and early 1980s were based on CP/ M. Its ideas even formed the basis of MS-DOS, chosen by IBM for its personal computers.
CP/M is a good example of a single tasking operating system. Only one task or application can be executed at any one time and therefore it only supports one user at a time. When an application is loaded, it provides the user-defined part of the total ‘CP/M’ program.
Any application program has to be complete and therefore the available memory often becomes the limiting factor. Program overlays are often used to solve this problem. Parts of the complete program are stored separately on disk and retrieved and loaded over an unused code area when needed. This allows applications larger than the available memory to run, but it places the control responsibility on the application. This is similar to virtual memory schemes where the operating system divides a task’s memory into pages and swaps them between memory and mass storage. How-ever, the operating system assumes complete control and such schemes are totally transparent to the user.
With a single tasking operating system, it is not possible to run multiple tasks simultaneously. Large applications have to be run sequentially and cannot support concurrent operations. There is no support for message passing or task control, which would enable applications to be divided into separate entities. If a system needs to take log data and store it on disk and, at the same time, allow a user to process that data using an online database package, a single tasking operating system would need everything to be integrated. With a multitasking operating system, the data log-ging task can run at the same time as the database. Data can be passed between each element by a common file on disk, and neither task need have any direct knowledge of the other. With a single tasking system, it is likely that the database program would have to be written from scratch. With the multitasking system, a commercial program can be used, and the logging software inter-faced to it. These restrictions forced many applications to interface directly with the hardware and therefore lose the hardware inde-pendence that the operating system offered. Such software would need extensive modification to port it to another configuration.