Throughout the history of computer development, we can see that demand has driven development. from ancient times to the present, we have analyzed it a little.
(1) punch card machine
In 1880 AD, it took the United States of America seven and a half years to complete the national census. Someone invented a punch card machine. By converting the population data into punched cards, the statistical data of the machine increased by five or six times. For the first time, the punch card on the primary machine converts the data into binary information.
(2) First computer
In February 14, 1946, the world's first computer ENIAC was born at the University of Pennsylvania.
(3) early development of computer hardware
Early computers did not have a complex graphic interface, and the CPU clock speed was not high. The CPU memory was directly connected through the bus. Because the speed difference between the IO Device and the CPU was too large, the IO Device was connected to the bus through the IO controller.
Because the CPU memory speed is fast, the IO controller speed is slow, and the bus design is complex, it is divided into the South-North Bridge, the south bridge processes Io, the North bridge connects the CPU memory and PCI bus.
The data transmission bottleneck between the CPU and peripherals has promoted the emergence of the PCI bus. By allowing high-speed peripheral devices such as the video card, sound card, Nic, and hard disk controller to communicate directly with the CPU, the computer performance has been improved.
The PCI speed is up to 133 MHz, which cannot meet people's needs. Therefore, many bus structures and corresponding control chips such as AGP and PCI Express were invented.
The CPU has also developed rapidly, from dozens of kHz to 4 GHz in 50 years. However, since 2004, the CPU manufacturing process has reached the physical limit and the clock speed has slowed down. A multi-core computer appears.
(4) computer software
"Any problem in the computer science field can be solved by adding an indirect middle layer"
Computer System Software Architecture: hardware-Operating System-running database-Application
Each intermediate layer must have communication protocol interfaces, which allow applications and hardware to be relatively independent and adapt to the rapid development of hardware and operating systems. Virtual Machine technology adds an intermediate layer between hardware and operating systems.
(5) Operating System
The role of the Operating System is to provide abstract interfaces and manage hardware resources.
To make full use of valuable CPU resources, the hardware schedules CPU tasks in turn, and the subsequent scheduling by the operating system is more secure and controllable.
(6) Virtual Memory
In early computers, the program runs directly on the physical memory. In the case of multiple processes, it may cause:
1. The address space is not isolated, and it is easy to be modified and attacked by other programs.
2. The memory usage is low. When the memory is insufficient, the space occupied by the program is moved to the disk, resulting in low transmission efficiency of large data volumes.
3. The program running address is uncertain. The data and target command address during the program running must be fixed (involving program redirection issues)
The above problems can be solved by using virtual memory, and space isolation can be achieved by properly controlling the ing between virtual addresses and physical addresses.
(7) threads
The CPU clock speed has evolved to a bottleneck and began to develop into multi-core, with the emergence of multi-thread concurrency problems.
Thread Scheduling, security, user thread and kernel thread ing are all issues to be solved.