Diseases, endocrinologists. MRI
Site search

Download the encyclopedia everything about operating systems. Books on operating systems. Purpose and functions of operating systems

1Getting Started with Operating Systems

1.1 Purpose and functions of operating systems

A computer operating system is a set of interrelated programs that acts as an interface between applications and users on the one hand, and the computer hardware on the other. The operating system performs two groups of functions:

Provides the user or programmer with an extended virtual machine instead of real computer hardware;

Increases the efficiency of computer use by rationally managing its resources in accordance with some criterion.

The user, as a rule, is not interested in the details of the computer hardware; he sees it as a set of applications that can be written in one of the programming languages. The operating system provides the programmer with a number of capabilities that programs can use through special commands called system calls. Therefore, a software application includes many system calls necessary, for example, to work with files. The operating system hides the hardware details from the programmer and provides a convenient interface for executing the operating environment system.

At the same time, the operating system acts as a resource manager. According to this approach, the job of the operating system is to provide an organized and controlled distribution of processors, memory, and I/O devices among various programs. The operating system has the following features:

The functions of the operating system work in the same way as other software - they are implemented in the form of individual programs or a set of programs, executing processes;

The operating system must delegate control to other processes and wait for the processor to give it time again to perform its duties.

Resource management includes solving the following general tasks that do not depend on the type of resource:

Resource scheduling – that is, determining which process, when and in what quantity (if the resource can be allocated in parts) should be allocated a given resource;

Satisfying resource requests;

Monitoring the status and recording the use of a resource - that is, maintaining operational information about whether the resource is busy or free and what share of the resource has already been distributed;

Resolving conflicts between processes.

Resource management includes their multiplexing (distribution) in two ways: in time and in space. When a resource is allocated over time, different users and programs take turns using it. First one of them gets access to use the resource, then another, etc. For example, several programs want to access the central processor. In this situation, the operating system first allows one program access to the processor, then, after it has been running for a sufficient time, another program, then the next one, and finally the first one again. Determining how long a resource will be used over time, who will be next, and for how long the resource will be given to them is the task of the operating system. Another type of distribution is spatial multiplexing. Instead of taking turns, each client receives a portion of the resource. Typically, RAM is shared among several running programs so that all of them can reside in memory at the same time (for example, using the central processor in turn). Assuming there is enough memory to hold multiple programs, it is more efficient to allocate multiple programs in memory at once than to allocate all the memory to one program, especially if it only needs a small portion of the available memory. Of course, this raises issues of fair distribution, memory protection, etc., and the operating system exists to resolve such issues.

1.2 History of the development of operating systems

Usually the history of the development of operating systems is associated with the history of the development of computers. The first idea for a computer was proposed by the English mathematician Charles Babbage in the mid-nineteenth century. He developed the so-called mechanical “analytical engine”, which, however, never worked properly. The following are generations of computers and their relationship to operating systems.

First generation 1945-1955

Computers consisted of vacuum tubes and patch panels. The highest achievement is the production of punched cards. Made from thin cardboard, a punched card represents information by the presence or absence of holes at certain positions on the card. There is no operating system.

Second generation 1955-1965

The basis of computers are transistors and batch processing systems. Characterized by decks of punched cards and devices for recording magnetic tapes. Mainly programmed in Fortran and Assembly languages ​​for the Fortran Monitor System (FMS) and IBSYS operating systems.

Third generation 1965-1980

The period is characterized by the appearance of integrated circuits, as well as multitasking or, as it is otherwise called, multiprogramming. IBM produces various series of machines, starting with the IBM/360. The OS/360 operating system was written for them, which was approximately 1000 times larger than the second generation FMS. At this stage, an industrial implementation of multitasking appears - a method of organizing a computing process in which several programs were simultaneously stored in the computer memory and alternately executed on one processor.

Other notable operating systems of this period were CTSS (Compatible Time Sharing System) and MULTICS (Multiplex Information and Computing Service), which was designed to provide access to a single machine for hundreds of users at once. Further development of this system grew into UNIX.

Fourth generation 1980-present

This period is associated with the advent of large-scale integrated circuits. In 1974, Intel released the first universal 8-bit processor, the Intel 8080. In the early 80s, IBM developed the IBM PC, a personal computer. At the same time, the first version of MS-DOS appeared. All operating systems developed up to this point supported only text mode of communication with the user.

The first attempt to make a user-friendly graphical interface was implemented on the Apple Macintosh. Influenced by its successes, Microsoft Corporation releases a graphical shell for MS-DOS - Windows. And since 1995, Windows 95 was released, which became a standalone system. Subsequently, based on Windows 95 and another Windows NT system, the currently existing operating systems were developed - Windows 2000, XP, Vista and others.

1.3 Classification of operating systems

There are a lot of operating systems and not everyone knows them. Next, we consider 7 types of different operating systems from large to small levels.

Mainframe Operating Systems

Mainframe is a high-performance general-purpose computer with a significant amount of RAM and external memory, designed to perform intensive computing work. These are usually room-sized computers and are found in large corporations. Mainframes typically contain thousands of disks and terabytes of RAM.

Mainframe operating systems are primarily designed to handle multiple simultaneous jobs, most of which require huge amounts of I/O. The system must respond to thousands of requests per second. An example is OS/390, which evolved from the 3rd generation operating system OS/360.

Server operating systems

These operating systems run on servers, which are a personal computer, a workstation, or even a mainframe. Servers provide the ability to work with printing devices, files, or the Internet. Such operating systems include Unix, Linux, Windows 2003 Server, etc.

Multiprocessor operating systems

These systems are used on computers with multiple central processors. They require special operating systems, but are usually modifications of server operating systems.

Operating systems for personal computers

The main criterion of these systems is a convenient interface for one user. The most famous systems: Windows 98, 2000, XP, Vista series; Macintosh, Linux.

Real-time operating systems

The main parameter of these systems is time. In industrial process control systems, it is necessary to clearly synchronize the operating time of the conveyor and various industrial robots. This is a hard real-time system. There are also flexible real-time systems where missed deadlines for completing an operation are acceptable, for example, multimedia systems. Real-time operating systems include VxWorks and QNX.

Embedded operating systems

These include PDA (Personal Digital Assistant) operating systems. In addition, embedded systems work on cars, televisions, and mobile phones. These operating systems typically have all the characteristics of real-time operating systems with limitations on memory, power, etc. Examples of systems are PalmOS, Windows CE.

Operating systems for smart cards

A smart card is a credit card-sized device containing a central processing unit. Such systems are subject to severe power and memory limitations. Some manage only one operation - electronic payment, for example. Select smart cards include support for the Java Virtual Machine.

1.4 Computer hardware overview

An operating system is closely related to the hardware of the computer on which it must run. Hardware influences the operating system's command set and the management of its resources. Conceptually, a simple computer can be represented by the model shown in Figure 1. This structure was used on the first IBM PC models.

Figure 1 - Some components of a personal computer


In the figure, the central processor, memory, and input/output devices are connected by a system bus through which they exchange information.

CPU

The “brain” of a computer is the central processing unit (CPU). It selects commands from memory and executes them. A typical processor cycle looks like this: reads the first instruction from memory, decodes it to determine its type and operands, executes the instruction, then reads and decodes subsequent instructions. This is how programs are executed.

Each processor has a set of instructions that it is able to execute. Since accessing memory to receive instructions or retrieving data takes much longer than executing those instructions, all processors contain internal registers to store variables and intermediate results. Therefore, the instruction set usually contains instructions to load a word from memory into a register and store a word from a register into memory. In addition to the main registers used to store variables, most processors have several special registers used to store variables, as well as special registers visible to programmers.

When the processor is time-multiplexed, the operating system stops a running program to start another one. Each time such an interrupt occurs, the operating system must save all of the processor's registers so that later, when the interrupted program continues to run, they can be restored.

To increase the speed of the CPU, their developers abandoned the simple model, when only one command can be read, decoded, and executed in one clock cycle. Modern processors have the ability to execute multiple commands simultaneously.

Most CPUs have two operating modes: kernel mode and user mode. If the processor is running in kernel mode, it can execute all instructions in the instruction set and use all the capabilities of the hardware. The operating system runs in kernel mode, providing access to all hardware. In contrast, users operate in user mode, which allows execution of a subset of programs and makes only a portion of the hardware available.

Memory

The second main component of any computer is memory. Ideally, memory should be as fast as possible (faster than processing a single instruction, so that the processor is not slowed down by accessing memory that is large enough and extremely cheap). Today there are no technologies that satisfy all these requirements. Therefore there is another approach.

The memory system is constructed in the form of a hierarchy of layers, which are illustrated in Figure 2. As you move through the hierarchy from top to bottom, two parameters increase: access time, memory size.

The top layer consists of the CPU's internal registers, so there is no delay when accessing them. Internal registers store less than 1Kb of information. Programs can manipulate registers without hardware intervention. Register access is the fastest - a few nanoseconds.

The next layer contains cache memory, mostly controlled by hardware. The most frequently used cache areas are stored in high-speed cache memory located inside the CPU. When a program needs to read a word from memory, the cache chip determines whether the desired line is in the cache; if so, then a cache access occurs. Cache memory is limited in size due to its high cost. Modern machines have two or three cache levels, each one being slower and larger than the previous one. Cache memory sizes range from tens of kilobytes to several megabytes. Access time is slightly longer than for registers.


Figure 2 – Hierarchical memory structure


Next comes the RAM (RAM - Random Access Memory or random access memory) - the main working area of ​​​​the machine's storage device. All CPU requests that cannot be fulfilled by cache memory are sent to RAM for processing. Volumes range from hundreds of megabytes to several gigabytes. Access time is tens of nanoseconds.

Next comes the magnetic disk. Disk memory is two orders of magnitude cheaper than RAM per bit and two orders of magnitude larger in size. The disk has one problem - random access to data on it takes about three orders of magnitude longer. The reason for the slow speed of hard disk drives (HDDs) is that the drive is a mechanical structure. It consists of one or more metal plates rotating at specific speeds, such as 7200 rpm. Disk volumes are now growing rapidly; disks with hundreds of gigabytes are on sale for most users. Access time – no less than 10 µs.

Magnetic tape is often used to create HDD backups or to store very large data sets. Now, of course, it is rare where you can find the use of magnetic tapes, but still they have not yet gone out of use. The magnetic tape level also includes CDs, DVDs and flash memory. Access time is measured in seconds.

In addition to the types described, computers have a small amount of permanent random access memory. Unlike RAM, it does not lose its contents when the power is turned off. It is called ROM or ROM. The ROM is programmed during manufacturing and its contents cannot be changed after that. This memory is quite fast and cheap. The computer's boot programs, used at startup, are located in ROM. In addition, some I/O cards contain ROM to control low-level devices. A type of memory called CMOS is volatile. CMOS is used to store the current date, time and configuration parameters, such as which hard drive to boot from. This memory draws power from the installed battery.

I/O devices

The operating system treats I/O devices as resources. I/O devices usually consist of a controller and the device itself.

A controller is a set of chips on a board inserted into a connector, a physical control device. It accepts operating system commands (for example, instructions to read data from a device) and executes them. The actual control of the device is very complex and requires a high level of detail. Therefore, the controller's function is to provide a simple interface to the operating system.

The next part is the device itself. The devices have fairly simple interfaces, because their capabilities are limited and they need to be brought to a single standard. A single standard is needed, for example, so that every IDE disk controller (Integrated Drive Electronics) can manage any IDE disk. The IDE interface is standard for drives on computers with a Pentium processor, as well as on other computers. Since the actual device interface is hidden by the controller, the operating system only sees the controller interface, which may be very different from the interface of the device itself.

Since each type of controller is different, they require different software. The program that communicates with the controller is the device driver. Each controller manufacturer must provide drivers for supported operating systems. To use the driver, it must be installed in the operating system so that it can run in kernel mode. There are three ways to install a driver into the kernel:

Rebuild the kernel along with a new driver and then reboot the operating system (this is how many Unix operating systems work);

Create an entry in the file included in the operating system indicating that a driver is required and then reboot the system; during the initial boot, the operating system itself finds the necessary drivers and loads them (this is how Windows works);

The operating system can accept new drivers without interrupting operation, and quickly install them without requiring a reboot. This method is becoming more and more common. Devices such as USB buses, IEEE 1394 always require dynamically loaded drivers.

Data input and output can be done in three different ways.

The simplest way: the user program issues a system request, which the kernel translates into a procedure call corresponding to the driver, then the driver begins the I/O process. During this time, it performs a short program loop, constantly polling the device it is working with. When I/O completes, the driver places the data where it is needed and returns to its original state. The operating system then returns control to the program that made the call. This method is waiting for readiness (active waiting). It has one drawback: the processor must poll the device until it shuts down.

The driver starts the device and asks it to issue interrupts when I/O is complete; After this, the driver returns control to the operating system, and it begins to perform other tasks. When the controller detects the end of the data transfer, it generates a completion interrupt. The I/O process using interrupts consists of four steps (Figure 3). At the first step, the driver transmits a command to the controller, writing information to device registers. The controller then starts the device. When the controller finishes reading or writing the number of bytes it was told to transfer, it sends a signal to the interrupt controller chip using specific bus wires. This is step two. In the third step, if the interrupt controller is ready to handle interrupts, then it sends a signal to a certain pin of the CPU, thus informing it. In the fourth step, the interrupt controller inserts a device number on the bus so that the CPU can know which device has completed its work.

The third method of input/output of information is to use a special DMA (Direct Memory Access) controller. DMA manages the flow of bits between RAM and some controllers without CPU intervention. The processor accesses the DMA chip, tells it the number of bytes to transfer, as well as the device and memory address, and the direction of data transfer. Upon completion of work, the DMA initiates an interrupt, which is processed in the usual manner.


Figure 3 - Actions performed when an I/O device starts and receives an interrupt


Tires

Due to the increase in processor and memory speed, additional buses were added to the system both to speed up the communication of I/O devices and to transfer data between the processor and memory. Figure 4 shows a diagram of the computing system of the first Pentiums.

This system has 8 buses (cache bus, local bus, memory bus, PCI, SCSI, USB, IDE, ISA), each with its own data transfer speed and its own functions. The operating system must have information about all these buses to manage the computer.

The central processor transmits data via the local bus to the PCI bridge chip, which in turn accesses the memory via a dedicated bus. The Pentium I system has a Level 1 cache (L1) built into the processor and a much larger Level 2 cache (L2) connected to the processor on a separate cache bus. The IDE bus is used to connect peripheral devices to the system (CD-ROM, hard drive).


Figure 4 – Pentium system structure


The USB (Universal Serial Bus) bus is designed to connect additional input/output devices such as a keyboard, mouse, printer, flash memory, etc. to a computer. Over time, new, faster tires appear and are added.

Downloads: 8365

The most famous of all operating systems now is undoubtedly the Windows family of Microsoft Corporation. However, despite its popularity, Windows is not the first or only operating system in the world.


28.04.2014
Nathan Wallace, Anthony Sequeira - Windows® 2000 Registry

Downloads: 596

First and foremost, we’d like to thank Charlotte Carpentier, Acquisitions Editor at Coriolis. Also, special thanks to Greg Balas, who served as Project Editor, and Peggy Cantrell, who served as the Production Coordinator for the book.


27.04.2014
A. Chekmarev - Windows 7 Administrator's Guide

Downloads: 12818

The Microsoft Windows 7 Operating System Guide is aimed at advanced users and network administrators. The numerous capabilities of all editions of Windows 7 are revealed, all aspects of using the system are discussed in detail: from installation to recovery methods.


27.04.2014
M. Russinovich - Internal structure of Microsoft Windows

Downloads: 9066

The sixth edition of this legendary book is devoted to the internal structure and algorithms of operation of the main components of the Microsoft Windows 7 operating system, as well as Windows Server 2008 R2.


17.04.2014
Richard Simon - Microsoft Windows API. System Programmer's Handbook

Downloads: 8967

Operating systems of the Windows family have taken the methodology for developing application applications that run under the control of these operating systems to a completely new qualitative level. Despite the abundance of powerful software creation tools, knowledge of the application programming interface (API) - the basics of it all - is the key to writing programs that can achieve a worthy position in the market.


17.04.2014
Arnold Robbins, Elbert Hannah, and Linda Lamb-Learning the vi and Vim Editors. 7th ed.

Downloads: 799

There"s nothing that hard-core Unix and Linux users are more fanatical about than their text editor. Editors are the subject of adoration and worship, or of scorn and ridicule, depending upon whether the topic of discussion is your editor or someone else" s. vi has been the standard editor for close to 30 years. Popular on Unix and Linux, it has a growing following on Windows systems, too. Most experienced system administrators citevi as their tool of choice. And since 1986, this book has been the guide for vi.


OS/2, VMS, VAX, Win32, UNIX - the reader of “Introduction to Operating Systems” by D.V. Irtegov will become familiar with these operating systems. OS architecture, memory allocation, file systems, security, and much more are covered in this tutorial.

A modern user, of course, is familiar with operating systems of the Win32 family, but is unlikely to know about the existence of this family itself; he may have heard about something called Linux, but all UNIX-like operating systems get in the way without doing anything between them difference, he hardly remembers such a system as OS/2 and certainly does not know that the current branch of the MS Windows family owes its existence to it. He certainly doesn’t have the slightest idea about an OS that is extremely specific to banks and defense structures, like VMS. The textbook "Introduction to Operating Systems" fills this gap in the reader's education, talking about the architecture of all these operating systems, their file systems, working with hardware and events, implementing multitasking and transaction processing, operating system security systems and other issues that are absolutely necessary for future specialists in the field of computer technology.

Today it is difficult to imagine a modern person who does not own a computer. And to work effectively with this technique, the user needs to understand the various Microsoft Windows file formats. The most popular text, graphic and audio formats include TeX, PDF, TIFF, HTML, GIF, AVI, MPEG, JPEG, CGML, MIME, QuickTime, PNDZIP, VRML, XXE, UUE, WAVE, etc.

The book tells how to correctly unpack files that have been compressed by various archivers, and how to correctly encode and decode data. After studying the reference book “Microsoft Windows XP File Formats” (author Boris Leontyev), the reader will learn to identify the “traces” of those utilities that affected the files that ended up on his computer.

A distinctive feature of this textbook is a well-constructed combination of the theoretical foundations of building an operating system with examples implemented in practice. The third edition of this textbook covers memory management algorithms in detail. The basics of message transmission and interprocessor interaction are outlined in more detail, each of the processes is described in detail. Concepts such as semaphores, monitors, and device drivers are considered. Attention is paid to the implementation of information input/output, the development of file systems, and ensuring data protection and security.

Textbook E. Tanenbaum, A. Woodhull “Operating systems. Development and Implementation" is additionally equipped with a CD containing the source code of a running UNIX-compatible MINIX OS. This makes it possible to examine in detail in practice the features of the operation of each of its components and the operating system as a whole.

The publication, intended for those interested in modern software developments and the development of Microsoft products, talks about applications on the 2003 platform. The information was collected by Yu. Kuptsevich “first-hand” - “The Programmer’s Almanac” was created on the basis of magazines, the authors of which are the developers and testers of the applications discussed. .

This textbook is already in its second edition and is an officially recommended textbook by the Russian Ministry of Education. It consistently describes the structure of UNIX systems - their architecture, interfaces, routines, interaction with hardware and network interaction. The book “UNIX Operating System” by Robachevsky and Nemnyugin has been updated in accordance with the requirements of the time and will be useful to professional programmers and system administrators.

The publication is devoted to the basic mechanisms of the Windows OS. The book covers all stages of operations, from accessing a processor register to displaying a GUI message on the screen. Much attention is paid to system transitions from one mode to another, the reasons for the appearance of “blue screens of death”, and the features of the NTFS file system. Russinovich’s book “The Internal Structure of Microsoft Windows: Windows Server 2003, Windows XP, Windows 2000. Master Class” is a collection of information that is most useful for system administrators of large organizations and service center employees.

This textbook was created by teachers of the St. Petersburg State University of Aerospace Instrumentation based on materials from the course of the same name. The book is distinguished by its volume and versatility - it includes consideration of issues from the simplest, in particular, from the basic concepts of system programming, to quite complex ones. For example, to the microarchitecture features of x86 processors. Compliance with the state standard allows you to use “System Software” by Gordeev and Molchanov as a guide for preparing for knowledge tests. However, the main value of the book is its usefulness in the practical activities of a system administrator or programmer.

The book describes the capabilities and vulnerabilities of the Windows 2000 system, which few people know and are rarely used. It consists of several large chapters designed to improve the skills of professionals, and appendices with lists of Kernel Debugger commands, kernel API functions, and elements of OS routines. In “Undocumented Features of Windows 2000,” Sven Schreiber talks about working with the Native API, using Windows 2000 debugging mechanisms and exploring its memory, accessing the system kernel from user mode, developing kernel-mode drivers, and much more. So the book will be useful to specialists who want to create the most effective applications and are ready to understand the works of Microsoft at an extremely deep level.

Written by a professional developer, the Windows Embedded reference and tutorial will be useful not only for beginners, but also for professional programmers, as it contains a wide range of practical information - from “beginner tips” to the professional secrets of the author.

Microsoft Windows Embedded 2009 is the most stable and widespread of all embedded Windows systems today, created on the basis of Windows XP. For all its similarities with XP, it is nevertheless sufficiently different from its ancestor that learning to program for it requires separate study. Stanislav Pavlov’s book “Fundamentals of Windows Embedded Standard 2009” covers not only the technical issues facing a Windows Embedded software developer, but also other practical information, which the author of the textbook writes about based on personal professional experience.

The manual will be useful both for novice developers - provided they consistently master the material chapter by chapter - and for professional programmers, who will find a lot of useful reference information here. Experienced developers will also benefit from the author’s professional advice, which is also supported by “live” practical examples.

Dedicated to examining the concept of operating systems as such rather than any specific OS, this textbook is intended for undergraduate and graduate students studying computer science rather than programming per se.

Approved by the Ministry of Education, this book is intended for students of the specialty “Informatics and Computer Science” as a teaching aid in the subject “Operating Systems” and graduate students engaged in the theoretical side of computer science in its original understanding, that is, “the science of information processing.” Here you will not find information about assembling the system kernel for a specific processor, setting up video card modes or optimizing the file system, managing the roles of users and groups - unlike many workshops and reference books dedicated to Windows or Unix, this tutorial treats it from a purely theoretical point of view points of view about the concept of operating systems as such. The fundamental principles of operating system design discussed in this book are valid for almost all operating systems existing today.

For practicing IT specialists, the textbook “Network Operating Systems” by Natalya and Victor Oliferov can also be useful as a source of “academic” knowledge when interviewing in companies where they primarily focus on the academic nature of official education rather than on the practical skills of applicants.