> For the complete documentation index, see [llms.txt](https://olb.gitbook.io/linux-essentials-certification/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://olb.gitbook.io/linux-essentials-certification/4.linux-operating-system/4.2-understanding-computer-hardware.md).

# 4.2 Understanding hardware

**Weight 2**\
Key Knowledge Areas

* Hardware

Partial list of the used files, terms and utilities

* Motherboards, processors, power supplies, optical drives, peripherals
* Hard drives, solid state disks and partitions, /dev/sd\*
* Drivers

***

## Power supplies

* normalize sources of power
* consuming power generates heat : use of fans and heat sinks

## Motherboard

* normalize interface to hardware with standard connectors
* use programs for hardware configuration stored in nonvolatile memory
* non volatile memory : BIOS (Basic Input/Output System)
  * identifying, loading, and transferring operation to an OS
  * support larger disks, diagnostics, graphical interfaces, networking
* EFI / UEFI (Unified Extensible Firmware Interface) - BIOS standard made by INTEL

## Memory

* RAM (Random Access Memory) : hold data of running applications
* different physical implementation like DIMM, SIMM or DDR
* SWAP is used if RAM is full
* `free -m` for info about RAM

## Processors

* process information / make computation
* CPU *(Central Processing Unit)* / GPU *(Graphical Processing Unit)* are part of a processor
  * **i386** References the 32-bit instruction set associated with the Intel 80386.
  * **x86** Typically references the 32-bit instruction sets associated with successors to the 80386 such as 80486, 80586, and Pentium.
  * **x64 / x86-64** References processors that support both the 32-bit and 64-bit instructions of the x86 family.
  * **AMD** A reference to x86 support by AMD processors.
  * **AMD64** A reference to x64 support by AMD processors.
  * **ARM** References a Reduced Instruction Set Computer (RISC) CPU that is not based on the x86 instruction set. Commonly used by embedded, mobile, tablet, and battery operated devices. A version of Linux for ARM is used by the Raspberry Pi.
* `/proc/cpuinfo` or `lscpu` for CPU info
  * **Bit size** : 32-bit or 64-bit - If an application needs access to more than 4 GB of memory then it must run on a 64-bit
  * **Clock Speed** : in MHz or GHz - how fast is a CPU
  * **Cache** : high-speed buffer between CPUs and system memory. Cache is separated into multiple layers, commonly referenced as L1, L2, L3 and even L4
  * **Cores** : number of physical CPU

## Storage

* HDD *(Hard Disk Drives)*: physical disks with magnetic band - moving parts
* SSD *(Solid State Drives)* : microchip - no moving parts
* Storage Interfaces:
  * SCSI *(Small Computer System Interface)*
  * SATA *(Serial AT Attachment)*
  * PCIe *(Peripheral Component Interconnect Express)*
* RAID *(Redundant Array of Independent Disks)*
  * RAID 0 (split data in 2 disks)
  * RAID 1 (mirroring)
  * RAID 5 (split in 4 disk with parity)
* `lsblk` : list block devices

## Partitions

* see these storage locations as multiple independent sequences
* Logical Volume Manager (LVM) is a software capability that allows administrators to combine individual disks and disk partitions

## Peripherals

* Peripherals are the devices that provide systems with input, output, and access to the rest of the real world.
* System on a Chip (SoC) : single package for CPU,RAM,SSD. Often use for smartphones

## Drivers

* No need for developpers to deal with details for each peripherals
* Normalize access to devices
* Devices are in `/dev`
  * `sd` for storage device
  * `a` for the first physical device
  * `/dev/sda3` for the third partition of first physical device storage
  * `mmcblk` memory-cards
