Archives de catégorie : Systèmes d’exploitation

Gauthier van den Hove : « L’invention des liens statiques » (23/05/2019)

Gauthier van den Hove (Centrum Wiskunde & Informatica)

« L’invention des liens statiques »

Résumé

La plupart des langages de programmation utilisent une pile de blocs d’activation pendant leur exécution, dans laquelle les blocs d’activation sont liés entre eux par deux liens, communément appelés « dynamique » et « statique ». Notre exposé examinera l’invention de cette technique, et sa première mise en œuvre, en 1960, dans la première implémentation du langage ALGOL 60, qui est l’ancêtre de la plupart des langages de programmation dits « impératifs » utilisés aujourd’hui.

Informations

Jeudi 23 mai 2019

Salle 24-25/405 du LIP6 (rotonde 25, 4e étage)
4 place Jussieu, 75005 Paris
métro Jussieu (lignes 7 et 10)

Liesbeth De Mol : Un code source sans code ? Le cas de l’ENIAC (22/06/2016)

Oratrice

Liesbeth De Mol (CNRS, Savoirs Textes Langages, Université de Lille 3)

Titre

« Un code source sans code ? Le cas de l’ENIAC »

Résumé

Qu’est-ce qu’un programme ? Qu’est-ce qu’un code (source) ? Est-ce un « texte » susceptible d’une analyse littéraire ou plutôt quelque chose qui réside dans les circuit électroniques de l’ordinateur ? Est-ce un objet technique ou formel ? D’un certain point de vue, ces questions purement philosophiques ont peu à voir avec une réalité quelle qu’elle soit. Mais en informatique, ces questions sont au cœur de la discipline et les réponses qu’on leur donne déterminent des décisions qui affectent jusqu’à la législation des logiciels : selon qu’on voie le code comme texte ou comme programme exécutable, la législation qui s’applique est celle du copyright ou du brevet. Ainsi, aucune philosophie du code source n’est innocente et la prudence s’impose à ce sujet.

De nos jours, il est de bon ton de ne plus parler du matérialité du logiciel : même en histoire de l’informatique, la tendance est de se concentrer sur les logiciels et d’ignorer la matérialité dans laquelle ils sont ancrés. Cette tendance est le résultat d’une des technique les plus importantes de l’informatique : l’abstraction. C’est l’abstraction qui nous permet d’oublier ce qui est caché sous une interface et de rendre ainsi transparents les logiciels. C’est l’abstraction qui permet le développement de logiciels qui n’ont plus besoin de renvoyer au niveau inférieur. Sans abstraction, pas de vrais logiciels. Sans abstraction, pas de vrai « langage » de programmation. Sans abstraction, l’industrie ne serait pas capable de créer ce vers quoi tendent les abstractions industrielles, et que Dijkstra décrit ainsi :

“[T]he computer user, as functioning in the development of computer products is not a real person of flesh and blood but a literary figure, the creation of literature, rather poor literature. […] [H]e is most uninspiring. He is stupid, education resistant if not education proof, and he hates any form of intellectual demand made on him, he cannot be delighted by something truly beautiful, because he lacks the education to appreciate beauty. Large sections of computer science are paralyzed by accepting this moron as their typical customer.”

Dans cet exposé, je voudrais effectuer un mouvement inverse en allant de l’abstraction vers la physicalité des calculs, en étudiant une pratique où il n’y a pas de « code » qui puisse être « compris » par la machine. Au contraire, il s’agit d’une pratique où c’est l’être humain qui doit comprendre la machine alors qu’elle peut coder ces idées. C’est la pratique de l’ENIAC original – une des premières machines électroniques et programmables. Dans cet exposé, j’expliquerai comment la machine peut être programmée. Le but de tel exposé est d’interroger ce que veut dire « code source » du point de vue de la machine. Cela me permet non seulement de montrer le contexte original de l’abstraction mais aussi d’introduire un point de vue matériel pour lequel il n’existe pas de logiciels. Ainsi, le vrai but de cet exposé est d’aller contre la tendance de cacher l’entrelacement du code, de la machine et des humains en le rendant transparent.

Informations

Mercredi 22 juin, 14h-15h30.

LIP6, salle 24-25/405.

Documents

Maarten Bullynck : Explorer MULTICS (21/05/2015)

Orateur

Maarten BULLYNCK (SPHERE, Paris 8)

Titre

Explorer les codes et textes de MULTICS

Résumé

Multics est (avec l’OS/360 d’IBM) l’un des grands projets de développement de systèmes d’exploitation dans les années 1960. Le système Multics fut développé à partir de CTSS (Compatible Time Sharing System), le système d’exploitation en temps partagé du MIT. Aujourd’hui, Multics est surtout connu pour avoir inspiré les programmeurs de Bell Laboratories dans la conception d’Unix.
Le noyau de Multics contient à peu près 54.000 lignes de code, dont la majorité est écrite en PL/1 mais quelques parties essentielles sont écrites en ALM, une sorte de macro-assembleur pour Multics. La lecture du code de Multics présente des difficultés: le code dans son ensemble est trop large et peu « littéraire » dans sa documentation locale ; il est particulièrement indigeste dans ses passages en assembleur. Heureusement, le développement de Multics est plutôt bien documenté par des rapports d’étape et des descriptions techniques. Ces documents éclairent ce qui se passe entre les différentes versions des modules Multics. Nous allons explorer le module de l’ordonnanceur et son évolution à travers le code et les documents techniques.

Documents

Informations

Jeudi 21 mai, 14h-16h.

LIP6, salle 24-25/405.

Greg Kroah Hartman : Objects in the Linux kernel (09/04/2015)

Speaker

Greg KROAH HARTMAN (Linux Foundation)

Title

Objects in the Linux kernel: evolution is good

Abstract

This talk will discuss how the Linux kernel driver model came to be, starting out with one idea, which was refined by a group of people over time to encompass all types of devices within the kernel.  This evolution changed Linux to use object oriented programming throughout all drivers, taking small objects and building on them, all using only the C language with almost no runtime overhead.

This model would never have come about except due to the way the Linux kernel is developed, with multiple developer helping each other out, and forcing developers to break their changes up into small individual pieces.  Combined with the fact that all device drivers are within the kernel source tree, this has enabled Linux drivers to be, on average, 1/3 smaller than drivers for other operating systems.
Portions of this model have now been copied by the BSD kernels, including MacOS, validating the basic idea in a cross-codebase manner.

Documents

Practical information

Thursday, April the 9th, 14-16 PM.

LIP6, room 24-25/405.

 

Julia Lawall : Understanding Linux Network Device Driver Code (19/02/2015)

Speaker

Julia LAWALL (Inria/LIP6-Whisper)

Title

Understanding Linux Network Device Driver Code

Abstract

A device driver forms the interface between the operating system and a specific device.  While the operating system, running on a CPU, has a global view of machines resources, the device, due to possible limitations on its capabilities and to security constraints, has a specific and limited view.  This different view of system resources leads to complex communication protocols.  To address performance issues and evolutions in device design, these protocols have furthermore changed over time.  We illustrate these issues in the context of network device drivers via examples, and consider how program manipulation techniques can be used to help in getting a global understanding of the code.

Julia Lawall has been a Senior Researcher at Inria since 2011. Previously she was an Associate Professor at the University of Copenhagen. Her work includes the development of the program matching and transformation tool for C code, Coccinelle.  Coccinelle has been used in the development of around 2000 patches for the Linux kernel.

Documents

Practical information

Thursday, February the 19th.
LIP6, room 24-25/405, 14-16 PM.