Archives de catégorie : Langages

Gérard Berry : Le langage Esterel (18/06/2015)

Orateur

Gérard BERRY (Collège de France)

Titre

Programmer en Esterel

Résumé

Esterel v5, créé en 1983 et développé jusqu’à 2001 à l’Ecole des mines de Paris et à l’Inria Sophia-Antipolis, est un langage parallèle synchrone spécifiquement conçu pour la programmation des systèmes réactifs événementiels : contrôle de processus en temps-réel, protocoles de communication, robotique, IHM, etc. Il a été industrialisé et utilisé dans de nombreuses applications dans des contextes académiques et industriels. Je montrerai d’abord ses idées principales et deux exemples de programmes simples.En 1999 a commencé en collaboration avec Intel Strategic Cad Lab de Portland le développement d’Esterel v7, un langage beaucoup plus riche destiné à la conception et la vérification des circuits électroniques mono- ou multi-horloges. Esterel v7 a été industrialisé par Esterel Technologies de 2001 à 2009. Il a été utilisé d’abord en recherche industrielle, puis en production réelle sur des circuits complexes. Couplé dans l’environnement Esterel Studio à un environnement mixte textuel / graphique, à un débogueur sophistiqué et à l’outil de vérification formelle Prover SL de Prover Technologies, il a permis de développer et vérifier rapidement des circuits sophistiqués, en particulier chez  Texas Instruments, NXP (ex Philips) et ST Microelectronics. Il a fait l’objet d’un processus de standardisation industrielle, malheureusement avorté prématurément avec son développement à cause de la crise de 2008 qui a bouleversé l’industrie électronique. Esterel v7 n’est malheureusement plus disponible, ayant été mis au congélateur par Synopsys, son nouveau propriétaire. Mais ses idées originales méritent d’être exposées et re-développées, et je montrerai son style de programmation à travers une présentation générale et une version réduite d’un filtre vidéo développé chez NXP.

Documents

Informations

Jeudi 18 juin, 14h-16h.

LIP6, salle 25-26/105.

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.

David Madore : Géométrie hyperbolique en JavaScript (30/04/2015)

Orateur

David MADORE (Télécom ParisTech)

Titre

Un jeu de labyrinthe dans le plan hyperbolique écrit en JavaScript

Résumé

La géométrie hyperbolique (géométrie non-euclidienne à courbure constante négative) peut présenter un attrait particulier pour le développement de jeux informatiques en ce qu’elle rend naturelle la création de mondes intrinsèquement labyrinthiques. Cette possibilité a cependant été peu explorée.

Nous expliquerons brièvement en quoi consiste la géométrie hyperbolique, ce qu’elle a de spécifique, et ce qui peut la rendre intéressante pour des jeux informatiques. Puis, à travers l’exemple d’un jeu de labyrinthe hyperbolique assez simple écrit en JavaScript, nous explorerons quelques uns des problèmes qui se posent pour implémenter en pratique cette géométrie hyperbolique (notamment, comment mettre des coordonnées et comment les rendre « périodiques »). Les spécificités du langage JavaScript pourront également être discutées.

Documents

Informations

Jeudi 30 avril, 14h-16h.

LIP6, salle 25-26/105.

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.

 

Damiano Mazza : Les virus pour MS-DOS (19/03/2015)

Orateur

Damiano MAZZA (CNRS, LIPN)

Titre

Voyage à travers les virus MS-DOS

Résumé

Entre la fin des années 1980 et la première moitié des années 1990, MS-DOS domine la scène des systèmes d’exploitation pour PC. Sa structure extrêmement simple, voire naïve, vis-à-vis de la gestion de la mémoire, des droits d’accès aux fichiers et des mesures de protection en générale (pratiquement inexistantes) fait de MS-DOS un terrain extraordinairement fertile pour le développement des virus informatiques dans le sens primordial (biologique) du terme : un morceau de code ne constituant pas en soi un programme mais s’appuyant sur d’autres programmes pour s’exécuter et s’auto-répliquer, entraînant éventuellement des effets secondaires néfastes (la grande majorité de ce que l’on appelle « virus » informatiques aujourd’hui en effet ne le sont pas en ce sens).

Dans cet exposé, nous analyserons quelques exemplaires de ces organismes informatiques désormais éteints, en montrant leurs principes de fonctionnement et, pour certains, leur sophistication.

Documents

Informations

Jeudi 19 mars 2015, 14h-16h.

LIP6, salle 25-26/105.

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.