Un système d'exploitation simple qui peut fonctionner sur des processeurs multi-cœurs x86-64.
Ceci est mes devoirs effectués dans le cours d'expérience du système d'exploitation. Étant donné que la classe ne parle que de la conception du système d'exploitation sur un processeur monocore 32 bits, et je suis plus intéressé par les systèmes d'exploitation fonctionnant sur des processeurs multi-core, j'ai choisi d'écrire un système d'exploitation sur un multi-processeur symétrique x64.
Développé à l'aide d'Ubuntu 16.04. Dépendances d'installation:
apt install make gcc gdb qemu
courir
make qemu

Fournit une API de processus / thread pour les applications, la création de processus / création de threads, l'attente, l'annulation, le sommeil et d'autres opérations.
Implémente la technologie de copie de mémoire à l'écriture pendant la création de processus.
Évitez les conditions de course lorsque plusieurs CPU exécutent des instructions via des mécanismes de mutex synchrones appropriés.
Utilisez LAPIC / IOAPIC pour réaliser le contrôle du démarrage et de l'interruption des processeurs multi-core.
Stockez les variables liées à un CPU spécifique via des variables Thread_Local.
| numéro de série | nom |
|---|---|
| 0 | fourchette |
| 1 | sortie |
| 2 | thread_create |
| 3 | thread_exit |
| 4 | wait_process |
| 5 | wait_thread |
| 6 | get_pid |
| 7 | get_tid |
| 8 | kill_process |
| 9 | kill_thread |
| 10 | dormir |
| 11 | ouvrir |
| 12 | Fermer |
| 13 | lire |
| 14 | Écrire |
| 15 | déchaîner |
| 16 | readdir |
| 17 | stat |
| 18 | mkdir |
| 19 | rmdir |
| 20 | lseek |
| vingt-et-un | exécutif |
Mettre en œuvre le mécanisme du signal.
Implémentez la prise en charge d'un système de fichiers couramment utilisé.
Pile de protocole TCP / IP.