Простая операционная система, которая может работать на многоядерных процессорах x86-64.
Это мое домашнее задание, выполненное в экспериментальном курсе операционной системы. Поскольку класс рассказывает только о проектировании операционной системы на 32-разрядном одноядерном процессоре, и меня больше заинтересованы в операционных системах, работающих на многоядерных процессорах, я решил написать операционную систему на симметричном многопроцессоре X64.
Разработано с использованием Ubuntu 16.04. Зависимости установки:
apt install make gcc gdb qemu
бегать
make qemu

Предоставляет API процесса/потока для приложений, поддержки процессов/создания потоков, ожидания, отмены, сна и других операций.
Реализует технологию копии памяти на записи во время создания процесса.
Избегайте условий гонки, когда несколько процессоров выполняют инструкции с помощью соответствующих механизмов синхронных мутекс.
Используйте LAPIC/IOAPIC, чтобы реализовать запуск и управление прерыванием многоядерных процессоров.
Храните переменные, связанные с определенным процессором через переменные Thread_local.
| серийный номер | имя |
|---|---|
| 0 | вилка |
| 1 | Выход |
| 2 | Threat_create |
| 3 | Threat_exit |
| 4 | wait_process |
| 5 | wait_thread |
| 6 | get_pid |
| 7 | get_tid |
| 8 | kill_process |
| 9 | kill_thread |
| 10 | спать |
| 11 | открыть |
| 12 | Закрывать |
| 13 | читать |
| 14 | Писать |
| 15 | Unlink |
| 16 | Риддир |
| 17 | статистика |
| 18 | Мкдир |
| 19 | rmdir |
| 20 | Lseek |
| двадцать один | исполнительный |
Реализовать сигнальный механизм.
Реализуйте поддержку общеиспользуемой файловой системы.
Стек протоколов TCP/IP.