Что происходит при переполнении оперативной памяти?
В первую очередь интересует Linux, но хотелось бы вместе с этим узнать, как дела обстоят на других операционных системах.
Начнёт заполняться свой (swap), в других ОС (windows) примерно такая же система, про "совсем другие ОС" - я не в курсе. 
И в Linux и в Windows и в других ОС, для которых есть компиляторы языка Си, есть функция, если посмотреть описание, например, такой функции, как malloc, то мы увидим оттуда, что: Если функции не удалось выделить требуемый блок памяти, возвращается нулевой указатель.
То есть программа сама должна контроллировать, выделили ли ей память или нет. В языках высокого уровня, этот процесс происходит аналогичным образом, просто функция выделения памяти обычно "спрятана" от глаз программиста и этот процесс происходит автоматически, но результат в теории должен быть аналогичным.Про SWAP можно немного почитать тут.
Некоторые программы, такие как Photoshop например, будучи заранее зная, что оперативной памяти не хватит наверняка, имеют свои механизмы "свопинга", т.е. создание некоего подобия "подкачки" на диске. У меня например, при открытии одного шаблона (макета) Photoshop может легко "откусить" 100Гб с диска, а если ещё и история изменений большая - может и больше.
Отдельно хочу обратить Ваше внимание, что в Linux'е есть некий механизм "самосохранения" в ядре, который при определенных условиях начинает "убивать" процессы, вышедшие из под контроля. В какой именно момент времени это происходит - точно я к сожалению сказать не могу, т.к. ещё только в процессе изучения подобных механизмов, но подозреваю, что "выход из под контроля" - это когда процесс и его потомки (форки) начинают потреблять чрезмерное кол-во процессорного времени и возможно памяти. Я наблюдал такую картину во время DDoS атаки на сервер, в этот момент Linux начал "крошить" всё подряд, в т.ч. и веб-сервер попал под раздачу. Среди прочего, помню, что где-то в документации читал, что процессу можно установить соотв. "флаг" или "приоритет" влияющий на этот механизм.
*ещё раз раз обращаю Ваше внимание, касательно абзаца выше - я детально не изучал данный механизм и в документации "по быстрому" информации не нашел, по этому, в последнем абзаце - информация может быть не совсем точной.
Будет грузить данные в своп. Если и он закончится, то программа выдаст что то вроде "can not allocate memory"