It includes aspects like the kernel structure, process management, memory management, file system management, and more. Different operating systems have different system call interfaces and resource management strategies, which can affect how a program runs.
Check OS Architecture
uname -m
Docker images are designed for specific OS architectures because they contain a lightweight operating system that needs to match the architecture of the host system. If the architectures don't match, the Docker container won't be able to run correctly because the system calls it makes won't be compatible with the host system.
Go libraries that rely on specific C code need to be compiled for the target OS architecture. This is because the C code likely makes system calls that are specific to a certain OS. If the library was compiled for a different OS, those system calls wouldn't work correctly, leading to errors or unexpected behaviour.
The main differences between these architectures are their memory handling capabilities (32-bit vs 64-bit), their power efficiency (x86 vs ARM), and the types of devices they're used in (desktops/servers vs mobile devices vs mainframes). Each architecture also has its own set of system calls and might support different instruction sets, which can affect software compatibility.