Découverte du noyau GNU/Linux

Documents pareils
Présentation OpenVZ. Marc SCHAEFER. 9 janvier 2009

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

Atelier : Virtualisation avec Xen

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Le système GNU/Linux IUP NTIC /11/05

L aspect esthétique, l offre logicielle,

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

Éléments d'architecture des ordinateurs

Utilisation de matériels industriels avec des outils de virtualisation open source. Open Source dans le monde industriel

Les avantages de la virtualisation sont multiples. On peut citer:

Stratégie de sécurité grâce au logiciel libre. Frédéric Raynal Cédric Blancher

Hubert & Bruno Lundi 12 octobre 2009 SAINT-QUENTIN (02)

VMware ESX/ESXi. 1. Les composants d ESX. VMware ESX4 est le cœur de l infrastructure vsphere 4.

LA VIRTUALISATION. Etude de la virtualisation, ses concepts et ses apports dans les infrastructures informatiques. 18/01/2010.

LE MICRO ORDINATEUR. Introduction Architecture Les supports amovibles Les composants Le système d exploitation Les portables

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

Mise en œuvre d une solution de virtualisation

Démontage d'un ordinateur

Micro ordinateur & Périphériques Mémoire de masse Disque dur (SOLUTION)

Introduction aux Systèmes et aux Réseaux, Master 2 CCI

Plan de la conférence. Virtualization. Définition. Historique. Technique. Abstraction matérielle

G. Méthodes de déploiement alternatives

Installation d un serveur DHCP sous Gnu/Linux

Assistance à distance sous Windows

Systèmes d exploitation

Qu est ce qu un un serveur?

Tutorial Ophcrack. I) Ophcrack en API. (ou comment utiliser Ophcrack pour recouvrir un mot de passe sous Windows XP et Windows Vista)

LANDPARK NETWORK IP LANDPARK NETWORK IP VOUS PERMET D'INVENTORIER FACILEMENT VOS POSTES EN RÉSEAU

VMWare Infrastructure 3

Bienvenue sur Lab-Windows Il n'y a de vents favorables que pour ceux qui ont un cap

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Sauvegarde et restauration d'un système d'exploitation Clonezilla

REALISATION d'un. ORDONNANCEUR à ECHEANCES

TeamViewer 9 Manuel Wake-on-LAN

A -Systèmes de fichiers 1 - FAT vs NTFS

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

VMWare. Vmware: machine virtuelle Un véritable pc avec : VmWare

Retrouver de vieux programmes et jouer sur VirtualBox

D. Déploiement par le réseau

Red Hat Enterprise Virtualization 3.0 Instructions d'installation et informations importantes

PROTECTION DES DONNEES PERSONNELLES ET COOKIES

Activité 1 : Création et Clonage d'une première machine virtuelle Linux OpenSuSE.

LES ACCES ODBC AVEC LE SYSTEME SAS

Virtualisation de serveurs Solutions Open Source

Certificat Informatique et internet Niveau 1 TD D1. Domaine 1 : Travailler dans un environnement numérique évolutif. 1. Généralités : Filière

Manuel d'installation du logiciel

Version janvier Manuel d'utilisation. Adaptateur Ethernet rapide 10/100 USB 2.0

Windows 8 Installation et configuration

WINDOWS NT 2000: Travaux Pratiques. -Boîtier partage d'imprimante- Michel Cabaré Janvier 2002 ver 1.0

Virtualisation de Windows dans Ubuntu Linux

Construction et sécurisation d'un système Linux embarqué. Frédéric AIME

Projet de Veille Technologique

CONCEPT de MICRO-DOMOTIQUE. Système STANTOR-DOMODULOR

Vous avez des problèmes d'impression réseau? UniPrint. est la solution qu'il vous faut. Aperçu du produit

PARAGON SYSTEM BACKUP 2010

Leçon 1 : Les principaux composants d un ordinateur

Le Network File System de Sun (NFS)

Table des matières. Chapitre 1 Les architectures TSE en entreprise

Module : Virtualisation à l aide du rôle Hyper-V

Détection d'intrusions en environnement haute performance

Dynamic Host Configuration Protocol

<Insert Picture Here> Solaris pour la base de donnés Oracle

VMWARE VSPHERE ESXI INSTALLATION

Windows serveur 2008 installer hyperv

Burckel Thomas. Formation. Compétences

Exécutif temps réel Pierre-Yves Duval (cppm)

Infrastructure RDS 2012

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guide de démarrage rapide

Remplacer le disque dur d'un ordinateur portable par un SSD

DÉVELOPPEMENT INFONUAGIQUE - meilleures pratiques

Linux embarqué: une alternative à Windows CE?

FreeNAS Shere. Par THOREZ Nicolas

EN Télécom & Réseau S Utiliser VMWARE

Virtualisation et le hosting. Christophe Lucas Sébastien Bonnegent rouen.fr>

Nmap (Network Mapper) Outil d exploration réseau et scanneur de ports/sécurité

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq

À propos de Parallels Desktop 10 pour Mac

Chapitre 01 Généralités

Résolution des problèmes de connexion XDMCP aux hôtes UNIX et Linux

Quel PC pour quels usages? 1) PC de Bureau ou Portable? Les différents types de portables. - Les ultra-portables. - Les portables généralistes

Installation et Réinstallation de Windows XP

Structure et fonctionnement d'un ordinateur : hardware

Avec le pare-feu Windows Vista, vous protégez votre ordinateur contre les attaques provenant d'internet.

ORTIZ Franck Groupe 4. Terminal serveur pour administrer un serveur Windows à distance, client rdp linux.

1 LE L S S ERV R EURS Si 5

en version SAN ou NAS

Guide de virtualisation. Virtualisation Red Hat

Cours 3 : L'ordinateur

FACILITER LES COMMUNICATIONS. Le gestionnaire de réseau VPN global de Saima Sistemas

Module 0 : Présentation de Windows 2000

Activer la connectivité des systèmes de stockage 3PAR

Catalogue des stages Ercom 2013

La Solution Crypto et les accès distants

OpenMediaVault installation

II- Préparation du serveur et installation d OpenVpn :

LINUX. Préparation à la certification LPIC-2 (examens LPI 201 et LPI 202) Résumé. Sébastien BOBILLIER

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

Transcription:

Découverte du noyau GNU/Linux Premiers pas dans la compilation d'un noyau optimisé pour son matériel Stéphane Téletchéa stephane.teletchea@univ-nantes.fr http://steletch.free.fr

Organisation générale d'un ordinateur et d'un processeur Les composants matériels sont inutiles sans un système capable de les faire interagir entre eux pour transférer des données et effectuer des opérations complexes. Lors du démarrage de l'ordinateur le BIOS initialise électriquement chaque matériel, vérifie ses capacités et règle les divers composants du système (priorité des bus, fréquence d'horloge des ports PCI, fréquence du processeur, etc). Après cette phase d'initialisation, il faut qu'un second système prenne le relais pour gérer les accès aux ressources matérielles afin de répondre aux besoins des utilisateurs. Le rôle du noyau va être de compléter l'initialisation du matériel par exemple via le chargement de pilotes et/ou de firmwares spécifiques, puis de gérer l'accès concurrentiel aux ressources de l'ordinateur. Présenté ainsi, un noyau est donc premièrement un gestionnaire de ressources très efficace qui va autoriser l'utilisation d'un périphérique, charger en mémoire un fichier stocké sur le disque dur, lancer les commandes matérielles liées à l'impression de ce fichier. http://fr.wikipedia.org/wiki/système_d'exploitation

Les différents types de noyaux L'accès à la mémoire de l'ordinateur et aux ressources du processeur se font généralement selon deux modes : le mode «superviseur» / «noyau» ou en «espace utilisateur». L'architecture x86 permet d'utiliser 4 niveaux d'accès au matériel, mais en pratique deux sont utilisés : - ring 0, pour le noyau - ring 1, non utilisé - ring 2, non utilisé - ring 3, pour l'espace utilisateur En mode superviseur, dédié au fonctionnement du noyau, il y a un accès direct à la mémoire et au matériel, il faut donc un fonctionnement sans failles. L'espace utilisateur est contrôlé : les ressources mémoires sont bornées et si un dépassement mémoire apparaît, le noyau va prévenir celui-ci, en terminant le processus fautif.

Philosophie de fonctionnement du noyau En fonction de l'approche envisagée pour le fonctionnement du noyau, il est possible d'insérer tout le code du noyau dans l'espace «réservé» ou d'en répartir une partie dans l'espace utilisateur. Approche micro-noyau : comme le noyau a comme rôle premier d'ordonnancer les priorités matérielles et les requêtes logicielles, cette partie de gestion de priorités est indépendante du matériel. Il est ainsi possible que le code de l'ordonnanceur soit en mode protégé, et que le reste des pilotes de périphériques soit dans l'espace utilisateur. Ex : Mach (Mac OS X). Approche monolithique : tout le code réside dans l'espace réservé, ce qui évite des changements de contexte mais le noyau en perd en portabilité. Ex : linux (avant 1.2), BSD4.4. Approche monolithique avec chargement de modules : tout le code est dans l'espace noyau, mais certaines parties du matériel sont prises en charge par des modules qui sont chargés dynamiquement. Ex : Linux >1.2, BSD, IRIX,... Approche micro-noyau enrichi / hybride : une partie des fonctionnalités en mode utilisateur sont réintégrées dans l'espace noyau pour des raisons de performances. Ex : Windows NT. Approche «temp réel» : l'exécution d'une tâche est réalisée dans une durée garantie. Ex : Rtlinux.

Philosophie de fonctionnement du noyau http://fr.wikipedia.org/wiki/syst%c3%a8me_d%27exploitation#le_noyau, image de Wooptoo

Et le plus versatile, plus performant, plus portable est...

Linux a plus de 20 ans et plus de 15 millions de lignes de code!

Linux est un noyau à architecture monolithique modulaire!

Pourquoi compiler son propre noyau?

Pourquoi compiler son propre noyau? (1) Le noyau Linux est très versatile, les noyaux fournis avec les distributions sont très volumineux, et contiennent énormément de modules inutiles pour une utilisation sur un ordinateur donné (2) Le noyau de la distribution n'est pas optimisé pour l'architecture matérielle, il ne peut pas bénéficier de toutes les technologies, par exemple pour la gestion de l'énergie (3) Le noyau est trop ancien (besoin pour une mise à jour) (4) Une faille de sécurité a été découverte et il faut la corriger rapidement (5) L'espace disque est restreint et il vous faut récupérer l'espace occupé par le noyau et les modules (6) Les réglages par défaut pour la réactivité du système de vous conviennent pas (base de données, jeux, serveur de fichiers, bureautique) (7) Vous cherchez à utiliser une fonctionnalité inhabituelle (8) Les contraintes matérielles sont très contraignantes (embarqué)

Principaux composants du noyau L'architecture du noyau linux est très complète, ce qui lui permet de gérer des ordinateurs personnels, des routeurs, des téléphones portables ou des supercalculateurs. En reprenant les concepts développés précédemment, il est possible de découper son fonctionnement en quelques briques élémentaires, suffisantes pour une première approche de son fonctionnement.

Principaux composants du noyau : SCI Le «system call interface» est le composant qui gère l'interaction entre l'espace utilisateur et l'espace noyau. Il existe plus de 300 appels systèmes qui répondent à la norme POSIX sous linux, les principaux sont : Process Control load execute create process (ork) terminate process get/set process attributes wait for time, wait event, signal event allocate, free memory File management create file, delete file open, close read, write, reposition get/set file attributes Device Management request device, release device read, write, reposition get/set device attributes logically attach or detach devices Information Maintenance get/set time or date get/set system data get/set process, file, or device attributes Communication create, delete communication connection send, receive messages transfer status information attach or detach remote devices

Principaux composants du noyau : gestionnaire de processus Chaque élément exécuté par le noyau est appelé thread ou «processus léger». Ce terme regroupe le code exécuté, les données associées, la pile en cours de lecture/écriture, les registres solicités sur le processeurs, Dans l'espace utilisateur, on parle de processus, qui regroupe en général sous le même terme le programme en cours d'exécution et ses différents routines, sans distinction. L'interaction entre l'espace noyau et l'espace utilisation se fait via l'abstraction fournie par les appels systèmes (SCI) et permet d'envoyer au processus un signal normalisé : 15 pour le terminer proprement 9 pour l'arrêter sans se préoccuper des actions en cours Il est aussi possible d'interagir sur le temps accordé pour l'exécution de chacun processus avec les commandes nice / renice.

Principaux composants du noyau : VFS Le système de fichiers virtuels (Virtual File System) est une interface d'abstraction des systèmes de fichiers réels. Il permet d'accéder aux périphériques sans se préoccuper des détails de l'implémentation de chaque système de fichier, de la taille des fichiers gérés, des temps de réponse, etc. Le VFS est aussi particulièrement utile dans un système gouverné par le concept «tout est fichier» : pour accéder à un périphérique réel, il est possible de s'y référer à travers le «device» qui lui a été attribué (/dev/sda5) ; pour accéder à un composant de processus, un paramètre système, il est possible de lire la valeur dans /proc (aujourd'hui en cours d'abandon) ou /sys via les systèmes de fichiers procfs ou sysfs. Ex : cat /proc/loadavg 0.11 0.11 0.10 1/386 7298

Principaux composants du noyau : le gestionnaire de mémoire Dans l'espace noyau, le kernel a accès à toute la mémoire physique disponible sur l'ordinateur : 1 - caches du processeur 2 - mémoire DRAM 3 - ( mémoire «lointaine» (via NUMA) ) 4 - espace disque (via le swap) La mémoire est simulée comme «infinie» par le kernel pour que les processus aient toujours accès à une zone mémoire pour leur bon fonctionnement. En fonction de la demande, le noyau va découper l'espace mémoire par page de 4 ko et les attribuer au processus demandeur. Si cette mémoire n'est pas utilisée «pendant un certain temps», l'espace mémoire est déplacé sur disque par le mécanisme de swap, jusqu'à ce que le processus soit de nouveau actif. Si le processus se termine, la page est alors recyclée pour un autre processus. En fonction du type de processus, l'allocation peut être de taille différente

Principaux composants du noyau : la pile réseau Le noyau linux a été créé en même temps que internet et a grandi avec lui. Très tôt, il a fallut communiquer entre les développeurs pour que les échanges de code se fassent correctement. Le support des protocoles réseau, des matériels, et des configurations extrêmes est ainsi très complet. Linux support bien entendu les protocoles ipv4, ipv6, tcp, udp, mais aussi bien d'autres protocoles très spécifiques (token ring, myrinet, ). Le fonctionnement de la pile réseau est considéré comme l'un des plus performants de tous les OS, en concurrence avec *BSD. Pour une utilisation spécifique de la machine, il faudra néanmoins envisager des réglages spécifiques du noyau (voir ci-après).

Principaux composants du noyau : dépendants de l'architecture Bien que majoritairement monolithique, ce qui a été perçu initialement comme une erreur de conception limitant la portabilité, Linux est disponible pour un grand nombre d'architectures. La plus commune sur les ordinateurs personnels est l'architecture x86 et maintenant x8664. Chaque architecture implique une gestion spécifique de la mémoire, un ordre d'exécution des commandes différents, un matériel adapté, etc. Pour l'architecture x86, il est possible de vérifier les extensions prises en charge par le noyau en explorant le système de fichiers virtuel /proc (cat /proc/cpuinfo). À la ligne «Flags», on peut ainsi trouver : flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm dtherm tpr_shadow vnmi flexpriority Certains matériels offrent aussi la possibilité de «virtualiser» un autre système d'exploitation en le prenant en charge au niveau du matériel, pour des performances de premier plan. Cette prise en charge matérielle est gérée par le mécanisme «kvm» sous linux.

Principaux composants du noyau : les pilotes Chaque élément du matériel nécessite un pilote particulier qui va être en charge de communiquer directement avec le matériel et va fournir les api génériques au noyau pour qu'un appel système venu de l'espace utilisateur aboutisse. Parmi les matériels communs très bien pris en charge sous linux, on peut citer les périphériques réseaux, les chipsets (NB/SB), les hub USB (avec l'arrivée récente de l'usb 3.0), les contrôleurs de disque dur, Les pilotes pour cartes graphiques sont cependant supportés de manière plus inégale, en particulier pour les deux plus importants constructeurs de matériels que sont NVIDA et AMD. Dans certains cas, pour obtenir des performances optimales, une meilleure gestion de l'énergie, le pilote pour une carte graphique récente, il faudra se tourner vers les pilotes «propriétaires», en étant tributaire de la réactivité de ces sociétés au moment des changements d'abi/api du serveur d'affichage.

Le noyau itself : la modularité... lsmod, modinfo, insmod, modprobe, /etc/modprobe.conf, /etc/modprobe.d/blacklist, dkms cat /etc/modprobe.d/fglrx.conf # This file was installed by fglrx # Do not edit this file manually blacklist radeon alias fglrx fglrx alias radeon off alias lbm-radeon off

Le noyau itself : multitâches, multiutilisateurs, multiusages Le rôle des composants vus précédemment est de gérer au mieux l'accès aux ressources physiques et logiques du système, cependant il faut que le kernel gère les priorités d'accès, et fournisse un ensemble de mécanismes pour permettre à l'utilisateur d'agir sur ce fonctionnement. Pour atteindre cet objectif, linux «découpe» chaque exécution d'un programme pour le mettre en attente, exécuter un second, etc.

Le noyau itself : répartition des rôles... Il existe plusieurs manières de répartir le temps que le processeur va consacrer à un thread, qui vont être dépendantes du résultat espéré. Par exemple il est possible d'obtenir de meilleures performances en débit de données, en temps de calcul, mais au détriment de la réactivité du système. Jusqu'au noyau 2.6.23, l'ordonnanceur par défaut était le O(1) scheduler, mais il a été remplacé depuis par le Completely Fair Scheduler (CFS). D'autres possibilités existent...

Le noyau itself : utiliser des groupes de contrôle Principe : contrôler et regrouper des ressources «physiques» pour les attribuer à un processus donné. Avec l'utilisation du scheduler «CFS», il est recommandé de les activer pour de meilleures performances en usage bureautique standard... https://access.redhat.com/knowledge/docs/enus/red_hat_enterprise_linux/6/html/resource _Management_Guide/ch01.html

Le noyau itself : la réactivité du système Auparavant le noyau était sollicité régulièrement lors d'un compte fixe de l'horloge, pour vérifier le travail à réaliser (les processus en attente). Dorénavant, le noyau utilise l'architecture «tickless». En résumé, cela veut dire que si le système n'a aucune tâche à effectuer, le processeur ne sera pas réveillé inutilement. Quand une tâche est en cours, alors le noyau vérifie tous les x millisecondes s'il y a une tâche à effectuer. Si le système est réglé sur 1000 Hz alors il va être «consulté» 1000 fois par secondes soit une fois par milliseconde, si c'est 250 Hz, alors le réveil ne se fera que 250 fois par seconde, soit toutes les 4 millisecondes. Le noyau 2.4 avait par défaut la configuration 100 Hz. En fonction de vos besoins, c'est un paramètre qu'il faudra évaluer (d'autres valeurs sont aussi disponibles dans les options de configuration du noyau : 100, 250, 300 Hz). Pour quelques indicateurs sur les variations de performances liées à l'utilisateur d'un «timer» différent, veuillez vous référer à l'article disponible à l'adresse http://elinux.org/kernel_timer_systems (un peu ancien mais cela donne quelques indications sur les résultats que l'on peut espérer). Vous pouvez aussi vous rendre à l'adresse suivante pour vérifier les gains ou pertes de performances envisageables avec les différents réglages de l'ordonnanceur noyau : http://www.kernel.org/pub/linux/kernel/people/andrea/misc/31-44-100-1000/31-44-100-1000.html.

L'ordonnanceur par défaut pour les disques... L'ordonnanceur E/S du noyau («elevator») est le gestionnaire qui détermine le mode d'entrée/sortie pour les disques. Il est «pensé» pour des disques durs traditionnels où la tête de lecture doit se déplacer pour trouver l'information sur les plateaux. Il permet de donner la priorité, en simplifiant le propos, à : (a) la réactivité du système (deadline), (b) la performance disque en favorisant le débit (anticipatory), (c) l'équité d'accès aux fichiers entre les programmes (noop), (d) une recherche du meilleur compromis entre débit et latence (cfq). Pour un usage courant, l'ordonnanceur «cfq» est privilégié (choix par défaut du noyau linux). Pour une utilisation de base de données il est recommandé de prendre l'ordonnanceur «deadline». Pour plus de détails, voir l'explication un peu ancienne sur le site de Red Hat (en Anglais) : http://www.redhat.com/magazine/008jun05/features/schedulers/. Pour conclure, il faut signaler que l'ordonnanceur peut aussi être spécifié par périphérique, ce qui peut être avantageux si votre système est particulier (un disque SSD par exemple peut donner des résultats très différents d'un disque «traditionnel»).

Pour aller plus loin (si le temps le permet...) (1) Tester l'ordonnanceur de Con Kolivas (BFS), pensé pour améliorer la réactivité d'un système «grand public» : http://www.linuxpromagazine.com/online/news/con-kolivas-introduces-new-bfsscheduler http://ck.kolivas.org/patches/bfs (2) Ajouter un matériel exotique à son installation, la «balance board» de la Wii : http://www.phoronix.com/scan.php?page=news_item&px=mte5njy http://git.kernel.org/?p=linux/kernel/git/torvalds/linux2.6.git;a=commit;h=9fa40a1135d94cb6eed99e264c6d4fe00c0a73f9

Prendre en compte les outils de sécurité du système... Apparmor (selinux par défaut dans linux) https://wiki.ubuntu.com/apparmor https://help.ubuntu.com/12.04/serverguide/apparmor.html http://www.novell.com/documentation/apparmor/apparmor201_sp10_admin/? page=/documentation/apparmor/apparmor201_sp10_admin/data/book_apparmor_admin.html Réglages pour le réseau avec iptables ou un pare-feu générique https://help.ubuntu.com/community/iptableshowto http://doc.ubuntu-fr.org/pare-feu http://doc.ubuntu-fr.org/ufw http://doc.ubuntu-fr.org/gufw

Kernel hacking http://kernelnewbies.org/workstationkernel http://kernelnewbies.org/embeddedkernel http://kernelnewbies.org/kernelextensions http://kernelnewbies.org/writingportabledrivers La version expérimentale du noyau : http://www.kroah.com/log/linux/linux-staging-update.html Utiliser et compiler les modules associés à cette version «expérimentale» : http://www.element14.com/community/docs/doc-44948/l/compiling-linux-kernel-staging-driver-modules

En savoir encore plus... Introduction à la notion de système d'exploitation : http://www.commentcamarche.net/contents/systemes/sysintro.php3 http://fr.wikipedia.org/wiki/anneau_de_protection http://fr.wikipedia.org/wiki/syst%c3%a8me_d%27exploitation#le_noyau Un très bon site qui explique en détail le fonctionnement d'un système d'exploitation : http://sos.enix.org L organisation et le fonctionnement de différents éléments du noyau : http://www.ibm.com/developerworks/linux/library/l-linux-kernel/ http://www.ibm.com/developerworks/linux/library/l-proc/index.html Une carte interactive : http://www.makelinux.net/kernel_map/ Pour aller plus loin avec le noyau linux : http://kernelnewbies.org/documents

Source des médias utilisés pour ce cours Sources des médias : http://en.wikipedia.org/wiki/linux_kernel http://royal.pingdom.com/2012/04/16/linux-kernel-development-numbers/ http://www.thefullwiki.org/virtual_memory http://en.wikipedia.org/wiki/cpu_time http://www.ibm.com/developerworks/linux/library/l-linux-kernel/ http://fr.scribd.com/doc/24111564/project-linux-scheduler-2-6-32 http://doc.opensuse.org/documentation/html/opensuse/opensuse-tuning/cha.tuning.cgroups.html