Atomicity and durability are usually backed by a write-ahead log (WAL). Before changing the actual data pages, the database appends a record of the intended change to an append-only log on disk. On COMMIT it flushes that log and tells you the work is safe. If the process dies mid-transaction, recovery on restart replays committed log records and discards uncommitted ones, so you never see a half-applied transaction. PostgreSQL, MySQL InnoDB, and SQLite in WAL mode all work this way.
Isolation is the harder part because many transactions run at once. Databases use locks, multi-version concurrency control (MVCC), or both. MVCC keeps multiple versions of each row so readers see a consistent snapshot without blocking writers. PostgreSQL and Oracle lean heavily on MVCC; that is why a long-running read in Postgres does not stall writers.
SQL defines four isolation levels: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, and SERIALIZABLE. Lower levels are faster but allow anomalies like dirty reads, non-repeatable reads, and phantom reads. SERIALIZABLE is the strictest and behaves as if every transaction ran one after another, at the cost of more aborts and retries. Most databases default to READ COMMITTED.