Subscribe to the feed

I started my Linux sysadmin path with hardware. I began by fixing audio equipment. I eventually went to work for IBM as a Customer Engineer (CE), repairing everything from keypunches to mid-range computers like the IBM System/3, and then finally the IBM PC. This path ultimately led me to programming and system administration.

As a sysadmin, I have found that my hardware experience often helps me solve problems. It also helps me understand the Linux operating system and the tools we use daily to locate and resolve issues with both hardware and software.

In this series of articles, I will cover aspects of hardware, such as how the central processing unit (CPU) works, the types of memory found in computers, and how the two work together.

Let's start with a bit of history and why the architecture of today's computers is what it is.

The first computers

The first computers were people. Humans have been performing calculations for millennia, but 1613 is the first known use of the term "computers" as applied to people. These individuals used their brains to compute. They also used devices such as the abacus, slide rule, Friden calculator, and many other mechanical calculators to aid them. Their knowledge of mathematical formulae and computing procedures enabled them to perform complex calculations, such as those required to put humans into orbit and recover them.

Note: The abacus is generally considered to be the first mechanical device used by humans to aid in performing mathematical calculations. The abacus was developed in what is now Iraq around 4,300 to 4,700 years ago.

In the 19th century, Charles Babbage designed a massive mechanical calculator called the difference engine, but it was beyond the technology of his time to construct. Babbage's ideas for his machine are the precursors of some of the elements in modern computers. For example, he visualized a "store" as a data repository, and a form of mechanical processor called a "mill" (today's CPU).

One of the first devices to foreshadow more modern computers was the Jacquard loom, circa 1860. The loom used punched cards containing programs to automate the weaving process. Other efforts to mechanize weaving preceded Jacquard and used paper tapes. These attempts did not fully automate the looms, but merely improved on methods for setting up the weaving patterns.

What constitutes a modern computer?

All of the reckoning devices up through the middle of the 20th century were calculating machines. They were very complex mechanical machines, but not computers. They performed complicated calculations according to rigid algorithms, but each lacked one or more of the essential characteristics of modern computers.

I did many online searches to find some sort of universal agreement as to what those characteristics are. I found many lists, but most of them centered around speed, reliability, and security. Although those are essential attributes for computers to have, they are not defining characteristics. They also apply to many devices besides computers. After additional searches and some thoughts of my own, I formulated the following characteristics to define what we call a computer today.

1. Stored program

The stored program is one of the primary defining characteristics of the Universal Turing Machine as envisioned by Alan Turing and is a key attribute of modern computers. Most of the mechanical calculators used external devices to store their programs. For example, the IBM 402 Accounting Machine and its successor, the IBM 403, represent one final expression of the external program devices used in many businesses up through the 1970s. They used plugboards to program their machine calculating cycles. They had just enough internal memory registers (in the form of relays) to store a few cumulative totals such as "department totals," "weekly totals," "monthly totals," "yearly totals," and so on. As a CE at IBM, I used to work on these devices.

Modern computers use random access memory (RAM) to store their programs while they are executed. The stored program concept opens up some powerful and interesting possibilities, including the ability to modify the sequence of the program execution and the content and logic of the program.

2. Stored data

The IBM 402/403 accounting machines did not internally store the information on which they worked. The data was stored on 80-column punched cards fed into the accounting machine from a hopper, usually one card per computing cycle, under the control of the plugboard program. Each card was one record. The cards required sorting and collating using specific criteria for each program before being fed into the machine's hopper. This type of external data storage required the program to obtain its data in a predetermined order using the punched cards' sequence.

Modern computers store their data in RAM, where it is accessed at will during program execution. This means that the data can be obtained in any sequence and as many times as needed.

3. Unified memory space

Unified memory space is an important convergence of stored programs and stored data. It provides modern computers with a single memory space in RAM for both programs and data. Because the program is stored in the same memory as data, it is easy for the program to access its own code as if it were just data. Applications can, therefore, operate upon themselves and modify their own code. Programs and data are interchangeable and can be manipulated by using the same tools.

Using a single RAM data store for both programs and data also simplifies the storage architecture and access to it. It is more flexible for storing either programs or data in different amounts for different applications.

4. Arithmetic operations

Computers perform arithmetic operations (maths) because that is what they are supposed to do. Modern computers perform many other types of activities on text and numerical data, but to the CPU, the operations all work the same way.

This characteristic seems to be left out of most of the lists I found because it would seem to be an underlying assumption about what a computer is. I prefer to make this an explicit item on my list for the sake of completeness if nothing else.

5. Logical operations

In addition to arithmetic operations, computers also perform various types of logical operations. These logical operations determine whether two numeric values are equal, or whether two character strings are the same. Among many other things, the results can determine which program path to take for further processing, or when an algorithm has completed.

6. Online storage

Online storage refers to hard disk drives (HDD), solid-state drives (SSD), or tape drives that store the data and programs "online" for immediate access during program execution. Hot-pluggable devices notwithstanding, storage disks are intended to hold the operating system, applications, and data required by the host system and remain available at all times. Online storage makes both applications and data quickly accessible for transfer to RAM—without human intervention—where the processor can access them.

Online storage is in contrast to so-called offline storage. Offline storage—which is not a required attribute for a computer—could be a removable disk or tape that is mounted as needed for specific programs. The data and programs kept in offline storage require human intervention to be accessible by the computer. For example, offline storage requires you to insert a CD, DVD, external USB or SATA storage drive, or USB thumb drive into your computer to access it.

The legacy

The punched card was the primary storage medium for both data and programs for over a century. As a result, the paradigm for data processing in the first digital computers was the same as that for the mechanical calculators they replaced. In this paradigm, each punched card represents one record. Data was still stored on punched cards even after computers were well-entrenched in modern business processes in the 1960s. That data included customer information, employee data, accounting transactions, hours worked, and more. The cards were used to perform many offline tasks, such as sorting the cards (records) into the proper sequence, extracting only cards that met specific criteria, merging cards from multiple sources into a single deck in the desired order, and more. All this was to prepare a particular set of records for use as input to whatever program would use them as input on the computer itself.

In fact, this record-based approach is so pervasive in the mainframe world that even today, IBM's MVS operating system still uses a record-based filesystem related to many of the same concepts as punched cards.

One early language, Report Program Generator (RPG), was intentionally designed to mimic the IBM accounting machines' calculation cycle for IBM's mid-range and small computers. This design was explicitly intended to appeal to the many smaller companies still using the IBM accounting machines in the late 1970s.

Any machine that used punched cards is generically referred to as a "unit record" type of device.

Wrap up

So there you have it—a brief history lesson that gives a bit of perspective on how far computers have progressed beyond the original calculating machines. We need to appreciate where we came from to understand where we are today. I also listed the characteristics that define a modern computer. In my next article, I'll tie this history into the development and functionality of modern CPUs.

[ Want to test your sysadmin skills? Take a skills assessment today. ]


About the author

David Both is an open source software and GNU/Linux advocate, trainer,
writer, and speaker who lives in Raleigh, NC. He is a strong
proponent of and evangelist for the "Linux Philosophy."

David has been in the IT industry for over 50 years. He has taught RHCE
classes for Red Hat and has worked at MCI Worldcom, Cisco, and the State
of North Carolina. He has been working with Linux and open source
software for over 20 years.

David  likes to purchase the components and build his own computers from
scratch to ensure that each new computer meets his exacting
specifications. His primary workstation is an ASUS TUF X299 motherboard
and an Intel i9 CPU with 16 cores (32 CPUs) and 64GB of RAM in a
CoolerMaster MasterFrame 700.

David has written articles for magazines including Linux Magazine and
Linux Journal. His article "Complete Kickstart," co-authored with a
colleague at Cisco, was ranked 9th in the Linux Magazine Top Ten Best
System Administration Articles list for 2008. David currently writes
prolifically for OpenSource.com and Enable Sysadmin.

David currently has five books published with Apress, "The Linux
Philosophy for SysAdmins," a self-study training course in three
volumes "Using and Administering Linux: Zero to SysAdmin," that was
released in late 2019, and "Linux for Small Business Owners" with
co-author Cyndi Bulka.

David can be reached at LinuxGeek46@both.org or on Twitter @LinuxGeek46.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

Browse by channel

automation icon

Automation

The latest on IT automation for tech, teams, and environments

AI icon

Artificial intelligence

Updates on the platforms that free customers to run AI workloads anywhere

open hybrid cloud icon

Open hybrid cloud

Explore how we build a more flexible future with hybrid cloud

security icon

Security

The latest on how we reduce risks across environments and technologies

edge icon

Edge computing

Updates on the platforms that simplify operations at the edge

Infrastructure icon

Infrastructure

The latest on the world’s leading enterprise Linux platform

application development icon

Applications

Inside our solutions to the toughest application challenges

Original series icon

Original shows

Entertaining stories from the makers and leaders in enterprise tech