Skip to main content

An overview of computer operating systems---objectives, roles, functions, characteristics and development process



1. What is the goal of the operating system?

​ First, the concept of the operating system is given: Operating System (OS) is the first layer of software configured on computer hardware, and is the first expansion of the hardware system. OS is a modern computer system, the most basic and most important system software, such as compilers and other software, database systems and other system software and a large number of applications are directly dependent on the support of the operating system.



​ In fact, the PCs we use daily are installed with Windows, macOS, or Linux, and the Android, IOS, or the dead Symbian installed on the mobile phone, or the emerging domestic Hongmeng OS, are specific to our lives. In China, smart TVs, refrigerators, and homes are all installed with various OSs. Operating systems have taken root around us, and everyone is accustomed to them. OS invisibly helps us manage hardware resources on the device. OS Has been essential.


​ Below we use a picture to illustrate the hierarchical structure of the operating system in the computer. In the figure, we can see that the OS is the system software that directly controls the hardware. For the user, the user directly operates the application, and the application calls the language The processing program or the interface provided by the OS operates the hardware, and the OS is transparent to the user.

The hierarchical structure of the operating system in the computer


What are the main objectives of the operating system :


Convenience: It is convenient for users (ordinary users and developers) to use, and better operate the computer's hardware resources;

Effectiveness: The most important thing is to improve the system's resource utilization and system throughput. In the early days, computer resources were very limited. Improving effectiveness is also the main driving force for the development of operating systems;

Scalability: computer hardware, architecture, and computer application development requirements can be used. Scalability has always promoted the continuous development of OS system institutions;

Openness: The OS needs to follow world standards and specifications, especially the open system interconnection OSI international standard, which can be that computers and applications can be compatible with each other and facilitate interconnection.

​ The above are the main goals of the OS, but the goals of the OS are related to the use environment. The design goals of different OSs are inconsistent. Later, when the development process of the OS is described, the goals of each OS will be described separately.


2. What is the role of the operating system?

​ We analyze from multiple perspectives of a user, resource management, and resource abstraction.


OS serves as the interface between the user and the computer hardware system: it is mainly for the user to conveniently, quickly, and reliably manipulate the computer hardware and run their own programs, as shown in the figure below. As can be seen from the figure, users can communicate with the OS through system calls, commands, icons, and windows, and use the services provided by the OS.

OS as the interface between the user and computer hardware

OS as the manager of computer system resources: mainly manages processors, memory, I/O devices, and files (data and programs), which is also the main function of OS.

OS realizes the abstraction of computer resources: through the abstraction of resources, not only the functions of the system are enhanced, but the details of hardware operation are also hidden, and multiple levels of abstraction models for computer hardware operations are realized, allowing users to operate more simple.

3. What are the Functions of the operating system ?

​ The functions here are summarized in accordance with the five major management functions given by Baidu. Some textbooks and resources may be somewhat different, but the central ideas are the same. Therefore, the main functions of the OS are as follows:


Equipment management: complete the I/O request of the user process, improve the utilization rate of CPU and I/O equipment, increase I/O, and facilitate the user to use I/O equipment;


Job management: Responsible for job input and output, job scheduling (selecting to enter memory) and control (suspending operation);


File management: The main task is to manage user files and system files for the convenience of users and ensure the safety of files;


Processor management: also called process management, the main functions are creation and cancellation, coordination of many operations, the realization of information exchange between processes, and allocation of processors to processes according to a certain algorithm (process scheduling algorithm);


Memory management: Memory management mainly manages memory. The main task is to provide a good environment for the operation of multiple programs, improve the utilization rate of the memory, make it convenient for users to use, and can store and expand the memory logically.


The following articles are also mainly based on the functions of the OS.


4. What are the characteristics of an Operating system?

In addition to the unique characteristics of different operating systems, all OSs have four basic characteristics in common, that is, these basic characteristics allow the operating system to better create good conditions for the concurrent execution of multiple programs.


Concurrence: Concurrence refers to the occurrence of two or more events in the same time interval. It is precisely because of the concurrent execution of programs in the system that the OS can effectively improve the resource utilization in the system. It is also to increase the concurrency of the operating system, the OS introduces the concept of processes and threads, allowing programs to be executed concurrently, and even threads in a process can be executed in parallel on multiple processors.

Sharing: Also known as resource reuse, it means that resources in the system can be used by multiple concurrently executing processes in memory.

Virtual: A physical entity is transformed into several logical counterparts through a certain technology, which is mainly divided into two technologies: time-division multiplexing and space-division multiplexing.

Asynchrony: Due to the limitation of resources and other factors, the execution of the process is usually not done in one go but runs in a stop-and-go manner, that is, the process advances at an unpredictable speed.

​Among them, concurrency and sharing are the two basic characteristics of multiple users (tasks). They are conditions for mutual existence. On the one hand, resource sharing is conditional on the concurrent execution of processes. If the system does not allow concurrent execution, there will be no resources. Sharing issues, on the other hand, if the system cannot effectively manage resource sharing to coordinate the access of various processes to shared resources, it will inevitably affect the degree of concurrent execution among processes, and even basically cannot execute concurrently. The two virtual technologies, they start with channel communication. Those who have studied computer networks should know that. Here should remember the two 1/N. The processing speed obtained by each user (or virtual device) in real-time division multiplexing must be Less than or equal to 1/N of the speed of the physical device; the average space occupied by each user (virtual device) in space division multiplexing is also less than or equal to 1/N of the space owned by the physical device. For asynchronous, you can refer to the asynchronous request in ajax or the thread pool in Java programming. The execution speed of a separately started thread cannot be directly predicted. This is why we need to pay special attention to concurrent programming.


5.  What is the development cycle or process of the operating system ?

​ This part is also what I wanted to write at the beginning. Let's organize the development process of OS according to the timeline, and use people's new requirements for OS to slowly describe. I will not add subtitles in the following parts and use 1, 2, 3, 4 to identify a stage.

​ 1. In 1945, the world’s first computer ENIAC was born. At this time, the OS had not yet appeared, and all operations on the computer were performed manually by the user (programs and data were transferred through paper tape Input into memory). Because it is a manual operation, one program needs to be completed before another program and data can be loaded again. This will have two disadvantages: the user monopolizes the host, and the CPU processing speed does not match the manual input speed.

​ 2. In order to solve the above problems, offline I/O technology appeared in the 1950s. This technology mainly adopts the concept of a buffer zone. A batch of jobs are input to the tape in advance under the control of the peripheral machine. When the CPU needs these programs and data, it is transferred from the tape to the memory and executed. Similarly, when the CPU needs to output, it directly writes the data to the tape at a high level of memory and then outputs the running result of the job under the control of the peripheral machine.

Offline I/O method

3. In order to further improve the utilization rate of resources in the computer, the continuous operation of the system can be maintained as much as possible. Developers have added a supervisory program (Monitor) based on the offline I/O mode. Under its control, it is The next batch of jobs that are input to the system under the control of the peripheral machine can be processed one after another. This also forms a single-pass batch processing system. The following figure shows the processing flow of its job:

Single batch job processing flow

But in a single-pass batch processing system, the resources in the system are still not fully utilized. Let's look at the following picture. We can see from the figure that if the program has multiple I/O requests during its execution, the program will always occupy the processor while waiting for the I/O to complete. In this stage, other programs cannot Execution, this makes the CPU idle in the t2 t3, t6 t7 time interval.

The single-pass batch program execution sequence

4. In order to solve the problems in the single-pass batch processing system, that is, in order to further improve resource utilization and system throughput , multi-pass programming technology was introduced in the mid-1960s, thus forming a multi-pass batch processing system . The multi-pass batch processing system allows multiple jobs to be executed concurrently in the memory at the same time , allowing them to share the CPU and various resources in the system. And in order to ensure the correctness of concurrent execution of the program, the concept of process is introduced. The figure below shows the running status of the program in the four-pass batch processing system. From the figure, we can see that when an I/O request occurs in A, the idle time of the CPU can be used to schedule program B to execute, and when the same B, C, and D I/O requests occur, they can then schedule other Executable program.

Program execution in the multi-pass batch processing system

Through this alternate execution program, the CPU is kept idle as little as possible, so its system resource utilization rate is high and the system throughput is large; but because of its alternate execution of jobs, the average job turnaround time is long, and drone interaction Ability.

The OS has developed into a multi-channel batch processing system, and the resource utilization rate in the system has been very high. The subsequent OS development is mainly driven by specific needs or hardware upgrades, which promote the OS to meet new needs And can make good use of more powerful hardware to improve system performance.

5. In order to meet with the user of human-computer interaction, shared hosting demand, thereby forming a new type of the OS ----- sharing system. In the 1960s, because computers were still very expensive, a computer needed to be shared by multiple users. In the process of each user’s use, it was hoped that the processor could quickly process their own requests or jobs. It can monopolize the computer, so the time-sharing system is like the following figure. A host is connected to a terminal with multiple displays and keyboards. Each user obtains the processing resources of the host in the form of time slice rotation.

Time-sharing system

6. In order to ensure the job start time and end time, able to respond to requests external events, completed a deal with the incident within the stipulated time, and control all real-time tasks coordinated operation, the emergence of real-time systems. Real-time OS requires the system to be highly reliable and can guarantee the timely processing of events. After that, many types of real-time systems have been derived, including industrial (weapon) control systems, information query systems, multimedia systems, and embedded systems.

​ 7. With the development of VLSI (Very Large Scale Integrated Circuit) and computer architecture, as well as the continuous development of application requirements, operating systems are still evolving, and a microcomputer (microcomputer) operating systems, network operating systems, and many processor operating system, let's briefly talk about them below.


Operating system computer operation is deployed on a microcomputer system, whose main objective is user-friendly, and ease of use, can be divided into single-user single-task OS, OS single-user multi-tasking and multi-user multitask OS, now What we use is a multi-user multi-tasking system, the typical Linux system, a user login is created for it, a Linux server allows multiple users to log in at the same time.

Network operating system with the development of the World Wide Web and the formation of a network OS requires not only a single processing function original OS, also need to provide network communication and network resource sharing to other computers on the network, and provides network users Various network services.

Multiprocessor operating system refers to a plurality of CPU in the system using a plurality of parallel execution of the user program, in order to improve the system throughput for redundant operation or to improve system reliability. Multiprocessor OS is also born due to the emergence of multiple CPUs in order to be able to give full play to their parallel processing capabilities and further improve the performance of the system. And because of this, the traditional process is "too heavy", resulting in a large time and space overhead for process creation, scheduling, and cancellation. Therefore, the OS introduces the concept of threads. (The concept of process and thread in this article can refer to my other blog post-the difference between process and thread)


​ Let's summarize the driving force behind the development of operating systems:

  • Continuously improve the utilization of computer resources;
  • Convenient for users;
  • Continuous updating of devices (hardware);
  • Continuous development of computer architecture; (theory promotes practice)
  • Constantly put forward new application requirements.

​ For OS, the application requirements that are constantly being put forward have prompted the production of other OSs such as time-sharing systems and real-time systems. In fact, in our development process, requirements are also very important. If a system is developed that cannot meet the needs of anyone, then the system will not have any vitality. If it can be created to cater to some people or even big Some people need applications (there are so many people in this world, a small part is also a very large audience), then you can stand in the air. 

Comments

Popular posts from this blog

Defination of the essential properties of operating systems

Define the essential properties of the following types of operating sys-tems:  Batch  Interactive  Time sharing  Real time  Network  Parallel  Distributed  Clustered  Handheld ANSWERS: a. Batch processing:-   Jobs with similar needs are batched together and run through the computer as a group by an operator or automatic job sequencer. Performance is increased by attempting to keep CPU and I/O devices busy at all times through buffering, off-line operation, spooling, and multi-programming. Batch is good for executing large jobs that need little interaction; it can be submitted and picked up later. b. Interactive System:-   This system is composed of many short transactions where the results of the next transaction may be unpredictable. Response time needs to be short (seconds) since the user submits and waits for the result. c. Time sharing:-   This systems uses CPU scheduling and multipro-gramming to provide economical interactive use of a system. The CPU switches rapidl

What is a Fair lock in multithreading?

  Photo by  João Jesus  from  Pexels In Java, there is a class ReentrantLock that is used for implementing Fair lock. This class accepts optional parameter fairness.  When fairness is set to true, the RenentrantLock will give access to the longest waiting thread.  The most popular use of Fair lock is in avoiding thread starvation.  Since longest waiting threads are always given priority in case of contention, no thread can starve.  The downside of Fair lock is the low throughput of the program.  Since low priority or slow threads are getting locks multiple times, it leads to slower execution of a program. The only exception to a Fair lock is tryLock() method of ReentrantLock.  This method does not honor the value of the fairness parameter.

How do clustered systems differ from multiprocessor systems? What is required for two machines belonging to a cluster to cooperate to provide a highly available service?

 How do clustered systems differ from multiprocessor systems? What is required for two machines belonging to a cluster to cooperate to provide a highly available service? Answer: Clustered systems are typically constructed by combining multiple computers into a single system to perform a computational task distributed across the cluster. Multiprocessor systems on the other hand could be a single physical entity comprising of multiple CPUs. A clustered system is less tightly coupled than a multiprocessor system. Clustered systems communicate using messages, while processors in a multiprocessor system could communicate using shared memory. In order for two machines to provide a highly available service, the state on the two machines should be replicated and should be consistently updated. When one of the machines fails, the other could then take‐over the functionality of the failed machine. Some computer systems do not provide a privileged mode of operation in hardware. Is it possible t