34 votes

Contenu pour la classe des systèmes d'exploitation Linux

Je serai TA pour une classe de systèmes d'exploitation ce semestre à venir. Les travaux pratiques porteront spécifiquement sur le noyau Linux.

  1. Quels sont les concepts / composants du noyau Linux qui sont les plus importants à couvrir dans la classe?
  2. Que souhaiteriez-vous voir couvert par vos études?

Toute suggestion concernant le noyau Linux ou la conception globale des systèmes d'exploitation serait très appréciée.

21voto

Aiden Bell Points 19856

Ma liste:

  1. Un système d'exploitation de ses préoccupations: l'Abstraction et la vulgarisation de la physique à la machine et de la gestion des ressources.
  2. Comment le processus de construction de travaux c'est à dire, la façon dont l'architecture spécifique/code machine des choses est implanté
  3. Comment les appels système de travail et la façon dont les modules peuvent relier jusqu'
  4. Gestion de la mémoire / Mémoire Virtuelle / la Pagination et tout le reste
  5. La façon dont les processus sont nés, vivent et meurent dans POSIX et d'autres systèmes
  6. userspace vs threads du noyau et quelle est la différence entre les processus/threads
  7. Pourquoi le Noyau monolithique de la conception est en croissance fastidieux et quelles sont les alternatives
  8. La planification (et certains de l'alternative / domaine spécifique planificateurs)
  9. I/O, Pilote de développement et la façon dont ils sont chargés dynamiquement
  10. Les premières étapes de démarrage et de ce que le noyau n'a pour l'installation de l'environnement
  11. Problèmes avec des horloges, mmu des systèmes, etc
  12. ... Je pourrais continuer ...
  13. J'ai presque oublié de la CIB et Unix tout est fichier " décisions de conception
  14. POSIX, pourquoi il existe, pourquoi il ne devrait pas

En fin de compte tout simplement de passer par tanenbaum de systèmes d'exploitation modernes et aussi faire des études de cas sur certains autres noyaux comme Mach/Hurd micro-noyau d'installation et peut-être quelques distribués et exokernel choses.

Donner une vision large de la passé à Linux, je recon

Pour ceux qui sont super geek, l'histoire des systèmes d'exploitation et pourquoi ils sont comme ils sont.

13voto

JaredPar Points 333733

La couche de système de fichiers virtuel est une nécessité absolue pour toute classe de système d'exploitation Linux.

J'ai pris un cours similaire au collège. Le projet le plus frustrant, mais utile en même temps, consistait à écrire un petit système de fichiers pour le système d'exploitation Linux. Cela prend environ 2-3 semaines pour un groupe de 4 personnes et vous enseigne réellement les tenants et les aboutissants du noyau.

6voto

FreeMemory Points 4742

J'ai récemment participé à un des systèmes d'exploitation de la classe, et j'ai trouvé les projets à être difficile, mais essentielle à la compréhension des concepts en classe. Les projets ont été aussi amusant, en effet, nous avons fait le code source de Linux (la version 2.6.12, ou à peu près).

Voici une liste de quelques très bons projets/concepts qui, je pense, devrait être traité dans l'un des systèmes d'exploitation de la classe:

  • La différence entre l'espace utilisateur et l'espace noyau
  • La gestion des processus (c'est à dire fork(), exec(), etc.)
  • Écrire une petite coquille qui démontre la connaissance de l' fork() et exec()
  • Comment les appels système de travail, c'est à dire comment basculer d'un mode utilisateur au mode noyau
  • Ajouter un système simple appel au noyau Linux, à écrire une application de test qui appelle le système d'appel à démontrer qu'il fonctionne.
  • La synchronisation dans et hors du noyau
  • Mettre en œuvre des primitives de synchronisation dans l'espace utilisateur
  • Comprendre comment les primitives de synchronisation de travail dans l'espace noyau
  • Comprendre comment les primitives de synchronisation diffèrent entre mono-processeurs et architectures SMP
  • Ajouter un système simple appel pour le noyau Linux qui démontre la connaissance de la façon d'utiliser les primitives de synchronisation dans le noyau Linux (c'est à dire quelque chose qui a de l'acquérir, de le dire, la liste des tâches de verrouillage, etc. mais aussi faire quelque chose où vous devez kmalloc, qui ne peut être fait tout en maintenant un verrou (à moins que vous GFP_ATOMIC, mais vous ne devriez pas, vraiment))
  • Algorithmes d'ordonnancement, et la façon dont la planification a lieu dans le noyau Linux
  • Modifier la Linux planificateur de tâches, en ajoutant votre propre politique d'ordonnancement
  • Qu'est-ce que la pagination? Comment ça fonctionne? Pourquoi avons-nous de la pagination? Comment ça fonctionne dans le noyau Linux?
  • Ajouter un appel système pour le noyau Linux qui, étant donné une adresse, vous dira si cette adresse est présente ou si elle a été permutée (ou une autre affectation impliquant la pagination).
  • Les systèmes de fichiers - quels sont-ils? Pourquoi existent-elles? Comment travaillent-ils dans le noyau Linux?
  • Disque algorithmes d'ordonnancement - pourquoi existent-elles? Quels sont-ils?
  • Ajouter un VFS pour le noyau Linux

4voto

samoz Points 14652

Eh bien, je viens de finir mon OS cours de ce semestre, j'ai donc pensé carillon.

J'ai été un peu contrarié que nous n'avons pas fait de jouer avec le réel de l'OS lui-même, plutôt nous venons de faire de la programmation système. Je vous recommande d'avoir les laboratoires être sur quelque chose qui est dans l'OS lui-même, qui est ce que cela ressemble à ce que vous voulez faire.

Un laboratoire que j'ai apprécié et trouvé utile, cependant, était de l'écriture de notre propre malloc/free routines. C'était difficile, mais assez divertissant aussi bien.

Peut-être aussi à couvrir les programmes de chargement dans la mémoire et/ou la mise en place du gestionnaire de mémoire (telles que la pagination).

4voto

fortran Points 26495

Pour les laboratoires, une chose qui peut être cool, c'est de leur montrer le code réel et d'en discuter, de poser des questions au sujet de ce que pensent-ils de faire les choses de cette façon et pas d'une autre, etc.

Si j'étais encore à l'Université, je ne serait certainement apprécier plus en profondeur les leçons sur les primitives de synchronisation, de simultanéité et ainsi de suite... ceux qui sont durs de questions qui sont plus difficiles à approcher sans orientation adéquate. Je me souviens que je suis allé à un discours prononcé par Paul "Rusty" Russell sur les spinlocks et d'autres primitives de synchronisation qui a été absolument rad, peut-être que vous pourriez trouver sur youtube et emprunter quelques idées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X