How IEEE 754 Floating Point Works: Formats, Rounding, and Why 0.1 Is Not Exact
A statement like 0.1 + 0.2 == 0.3 fails in Python, JavaScript, Java, Go, and C for the same reason. None of those languages stored the deci...
A statement like 0.1 + 0.2 == 0.3 fails in Python, JavaScript, Java, Go, and C for the same reason. None of those languages stored the deci...
A statement like 0.1 + 0.2 == 0.3 fails in Python, JavaScript, Java, Go, and C for the same reason. None of those languages stored the deci...
A driver that calls kmalloc(256, GFP_ATOMIC) from an interrupt handler and a process that calls malloc(256) are not talking to the same al...
A database that updates a 4 KiB page does not update a 4 KiB cell on the SSD. The host sends a logical block address. The drive's flash ...
A call to puts in a normal C binary is not a direct jump to libc. The machine code in the executable names a procedure-linkage-table stub. ...
A prefork server that looked cheap in RSS before the first request can double its memory after workers start handling traffic. fork did not...
An open("/var/log/app.log", O_RDONLY) does not hand the kernel a file. It hands the kernel a string. The Virtual File System (VFS...
A static file server that uses read() into a user buffer and write() onto a socket copies every byte twice through the CPU: page cache to ...
A NIC that just received a frame cannot wait for the current process to finish a syscall. The device raises a hardware interrupt. The CPU st...
A process that spends all its time in a tight userspace loop never notices SIGTERM until the kernel has a chance to put that process back on...
A process asks for a few bytes from a file. The kernel may return them without asking the storage device for anything at all—not because the...
A mutex that takes a system call on every lock and unlock would dominate a hot critical section. The uncontended case is a few atomic instru...