One day, the adolescent Tubman was sent to a dry-goods store for supplies. There she met a slave owned by another family. That slave had left the fields without permission. His overseer was angry. He demanded that Tubman help restrain the young man. Tubman refused. As the slave ran away, the overseer threw a two-pound weight at him. The weight hit Tubman instead. Tubman said the weight "broke my skull". She later explained her belief that her hair – which "had never been combed and ... stood out like a bushel basket" – might have saved her life. Bleeding and unconscious, Tubman was returned to her owner's house and laid on the seat of a loom. She had no medical care for two days. She was sent back into the fields, "with blood and sweat rolling down my face until I couldn't see." Her boss returned her to Brodess, who tried unsuccessfully to sell her. She began having seizures and seemed to fall unconscious. She later said she was aware of her surroundings while appearing to be asleep. These episodes were alarming to her family. They couldn't wake her when she fell asleep suddenly and without warning. This condition remained with Tubman for the rest of her life. Larson suggests she may have suffered from temporal lobe epilepsy because of the injury.
Around 1844, Tubman married a free black man named John Tubman. Little is known about him or their time together. Their marriage was complicated because she was a slave. Since children would have the status of the mother, any children born to Harriet and John would become slaves. By this time, half the black population on the Eastern Shore of Maryland was free. Marriages between free people and enslaved people were not uncommon. Most African-American families had both free and enslaved members. Larson suggests that they might have planned to buy Tubman's freedom. Tubman changed her name from Araminta to Harriet when she arrived to Philadelphia. When she returned to Manchester to tell her husband to come with him, he was remarried already.
Device driver
A device driver is a program that lets the operating system communicate with specific computer hardware.
Computer parts need a driver because they do not use standard commands. For example, video cards from Advanced Micro Devices (or AMD) and Nvidia do the same job, but each requires its own driver as different hardware requires different commands. Different operating systems also need different drivers, a driver written for macOS can not be used by Microsoft Windows.
Many parts of a computer need drivers, and common examples are:
Some other computer parts do not need drivers (or the driver is built-in to the operating system) because they use a kind of standard; the operating system recognizes those parts and knows how to use those parts.
Such parts include items on the following list:
Central processing unit
A central processing unit (CPU) is an important part of every computer. The CPU sends signals to control the other parts of the computer, almost like how a brain controls a body.
The CPU is an electronic machine that works on a list of computer things to do, called "instructions". It reads the list of instructions and runs ("executes") each one in order. A list of instructions that a CPU can run is a computer program.
The clock rate, or speed of a CPU's internal parts, is measured in hertz (Hz). Modern processors often run so fast that gigahertz (GHz) is used instead. One GHz is 1,000,000,000 cycles per second.
Most CPUs used in desktop (home) computers are microprocessors made by either Intel or Advanced Micro Devices (usually shortened to AMD). Some other companies that make CPUs are ARM (recently bought by Nvidia), IBM, and AMD under ATI Technologies, which is the leader right now. Most of their CPUs are used in embedded systems for more specialized things, like in mobile phones, cars, video game consoles, or in the military.
In the 20th century engineers invented many different computer architectures. Nowadays most desktop computers use either 32-bit CPUs or 64-bit CPUs. The instructions in a 32-bit CPU are good at handling data that is 32 bits in size (most instructions "think" in 32 bits in a 32-bit CPU). Likewise, a 64-bit CPU is good at handling data that is 64 bits in size (and often good at handling 32-bit data too). The size of data that a CPU handles best is often called the "word size" of the CPU. Many old CPUs from the 70s, 80s and early 90s (and many modern embedded systems) have an 8-bit or 16-bit word size. When CPUs were invented in the middle 20th century they had many different word sizes. Some had different word sizes for instructions and data. The less popular word sizes later stopped being used.
Most CPUs are microprocessors. This means that the CPU is just a single chip. Some chips with microprocessors inside them also contain other components, and are complete single-chip "computers". This is called a microcontroller.
When the CPU runs a computer program, it needs somewhere to store the data that the instructions operate on (the data that they read and write). This storage is called a "register." A CPU usually has many registers. Registers must be very fast to access (to read and write). Therefore, they are part of the CPU chip itself.
Storing all data in registers would make most CPUs too complicated (and very expensive). Therefore, registers usually only store the data that the CPU is working on "right now". The rest of the data used by the program is stored in RAM (Random Access Memory). Except in microcontrollers, RAM is usually stored outside the CPU in separate chips.
When the CPU wants to read or write data in RAM, it outputs an "address" to that data. Each byte in RAM has a memory address. The size of addresses is often the same as the word size: A 32-bit CPU uses 32-bit addresses, etc. However, smaller CPUs, like 8-bit CPUs, often use addresses that are larger than the word size. Otherwise the maximum program length would be too short.
Because the size of addresses is limited, the maximum amount of memory is also limited. 32-bit processors can usually only handle up to 4 GB of RAM. This is the number of different bytes that can be selected using a 32-bit address (each bit can have two values—0 and 1—and 2 bytes is 4 GB). A 64-bit processor might be able to handle up to 16 EB of RAM (16 exabytes, around 16 billion GB, or 16 billion billion bytes). The operating system may limit it to using smaller amounts.
The information that is stored in RAM is usually volatile. This means that it will disappear if the computer is turned off.
On modern computers, RAM is much slower than registers, so accessing RAM slows down programs. To speed up memory accesses, a faster type of memory called a "cache" is often put between the RAM and the main parts of the CPU. The cache is usually a part of the CPU chip itself, and is much more expensive per byte than RAM. The cache stores the same data as RAM, but is usually much smaller. Therefore, all the data used by the program might not fit in the cache. The cache tries to store data that is likely to be used a lot. Examples include recently used data and data close in memory to recently used data.
Often it makes sense to have a "cache for the cache", just as it makes sense to have a cache for RAM. In "multi-level caching", there are many caches, called the L1 cache, the L2 cache, and so on. The L1 cache is the fastest (and most expensive per byte) cache and is "closest" to the CPU. The L2 cache is one step away and is slower than the L1 cache, etc. The L1 cache can often be viewed as a cache for the L2 cache, etc.
Computer buses are the wires used by the CPU to communicate with RAM and other components in the computer. Almost all CPUs have at least a "data bus" - used to read and write data - and an "address bus" - used to output addresses. Other buses inside the CPU carry data to different parts of the CPU.