Systems programming main domains:
- CPU Architecture
- PC Architecture
- OS
CPU/PC
Digital circuits:
- transistors level
- microprocessor, microcontroller, FPGA, ASIC
CPU Architecture:
- CPU (Logical gates, ALU, Opcodes/Decoder, Clock, Stack, Interruptions)
- ISA (x86, CISC/RISC, ARM)
- Memory (Registers, Volatile/non-volatile mem, cache)
- IO (Display/VGA, Mouse/KB, Soundcard)
PC Hardware:
- BIOS/UEFI (firmware, microcode, CMOS/EEPROM)
- Motherboard, Bridges
- RAM (volatile-mem)
- Storages (floppy, flash, CD, HDD, SDD)
- Peripherals
Digital circuits terms
In this context:
- CPU is logical component («idea» of instruction performing machine)
- microprocessor is physical chip with actual CPU
Terms:
- Microprocessor — physical chip with CPU
- Microcontroller — physical chip with CPU, memory and IO-interface
- FPGA
- ASIC
CPU terms
CPU (Central Processing Unit) — “brain” of a computer
- ALU (Arythmetic Logic Unit) — CPU component used for calculations
- Instructions decoder — component that transforms opcodes to CPU instructions
- Opcode (Operation Code) — enumerated value (like
11100011 00001010) that specifies operation to be performed - Clock — component that synchronizes all CPU components
Memory:
- Registers — fast and small memory directly integrated into CPU
- Volatile memory — one that requires power to store data
- Non-volatile memory — persistent data storage
- Cache — small fast memory (slower than registers, faster than RAM) that stores copies of frequently used data from main memory (which is slow to access)
Input/Output — communication between CPU and external peripherals to send and receive data
ISA and real-life architectures:
- x86: 80+ ISA for 8086, 1000+ modern
- x86 / AMD = same ISA, different hardware
- RISC-V: core 47, additional 100+
- ARM
BIOS terms
Firmware — software embeded into hardware.
BIOS:
- microcode — software layer inside cpu, stored and loaded from bios
- BIOS/UEFI:
- firmware/software that runs on main CPU
- CPU starts on hardwired «reset vector» that points to BIOS location
- BIOS loads microcode into CPU
- BIOS is stored in EEPROM (non-volatile memory)
- CMOS — stores some BIOS info (date-time, boot order), volatile memory depending on battery
OS
Main stems:
- Windows
- Linux/Unix, MacOS
- Android
Parts:
- Filesystems (FAT32, NTFS, ext4)
- Virtual memory
- Scheduling, Multi-processing
- Executables (linking, object code)
Systems programming:
- Code levels (machine code, object code, assembly, c/c++)
- Core software (zip, digital color)
- CPU-level data structures (ints, floats)
Code levels
Levels:
- machine code (
11001100 00101011…) - object code (machine code + linking info)
- assembly (specific for every CPU or at least CPU Architecture)
- C/C++ and higher-level languages