Avec les systèmes d'exploitation modernes, pratiquement aucun . Linus Torvalds aurait déclaré que sa tâche était de "simplement charger le système d'exploitation et foutre le camp de là".
Les systèmes d'exploitation plus anciens comme MS-DOS s'appuyaient sur le BIOS pour de nombreuses tâches (par exemple, l'accès au disque), en appelant des interruptions.
Avec les systèmes d'exploitation modernes, le chargeur de démarrage passe rapidement en mode 32 ou 64 bits et exécute le noyau du système d'exploitation. Le noyau peut enregistrer ses propres gestionnaires d'interruptions, qui peuvent être appelés par les applications de l'espace utilisateur. Les routines du noyau peuvent être plus portables (puisqu'elles ne dépendent pas du matériel spécifique), plus flexibles (les fournisseurs de systèmes d'exploitation peuvent les modifier à la demande plutôt que d'avoir à utiliser tout ce qui est fourni avec le matériel), plus sophistiquées (elles peuvent exécuter arbitrairement des plutôt que ce qui a été programmé dans le BIOS), et plus sécurisé (puisque le système d'exploitation peut contrôler l'accès aux ressources partagées et empêcher les programmes de s'écraser, implémentant ses propres schémas d'autorisations arbitraires).
Pour interagir avec un matériel spécifique, les systèmes d'exploitation peuvent charger et utiliser leurs propres pilotes de périphérique. Il n'est donc pas nécessaire que le système d'exploitation ou les applications appellent la plupart des routines du BIOS. En fait, pour des raisons de sécurité, les interruptions du BIOS sont même désactivées. Étant donné que le BIOS vit en mode réel 16 bits, il est plus difficile de faire appel à des systèmes d'exploitation modernes.
Bien que l'utilisation du BIOS soit très limitée pendant l'exécution du système d'exploitation, ses fonctions sont toujours utilisées de manière périphérique. Par exemple, lorsqu'un ordinateur est en veille, le système d'exploitation ne s'exécute pas et il incombe finalement au micrologiciel de régler le matériel dans l'état correct pour mettre en pause et reprendre le système d'exploitation. Ces utilisations sont généralement limitées aux appels ACPI plutôt qu'aux appels à l'interface BIOS complète. ACPI est une extension du BIOS qui "place la gestion de l'alimentation sous le contrôle du système d'exploitation (OSPM), par opposition au système BIOS central précédent, qui s'appuyait sur un micrologiciel spécifique à la plate-forme pour déterminer la gestion de l'alimentation et la politique de configuration".
Notez qu'officiellement "BIOS" fait référence à une interface de micrologiciel particulière, mais le terme est couramment utilisé pour désigner le micrologiciel de l'ordinateur en général. Certains ordinateurs récents (en particulier ceux d'Apple) ont remplacé le BIOS (sensu strictu) par UEFI, qui est bien sûr alors ce qu'on appelle pour implémenter ces fonctions.
Pour plus d'informations sur la façon dont le rôle du BIOS a diminué au fil du temps, consultez Wikipedia.
Le BIOS fournit un certain nombre de services aux systèmes d'exploitation, dont la plupart sont liés à la gestion de l'alimentation :
- modifier les horloges du processeur et du bus
- activer/désactiver les périphériques de la carte mère
- contrôle de l'alimentation du port d'extension
- suspension sur disque et suspension sur RAM
- reprendre les paramètres de l'événement
La suspension sur disque est implémentée dans le système d'exploitation la plupart du temps, car le système d'exploitation peut restaurer son état plus rapidement (seul l'état du noyau est rechargé et l'état du programme échangé si nécessaire, ce qui est nettement plus rapide que le rechargement de la RAM entière), mais la fonctionnalité reste dans la spécification.
La suspension en RAM ne peut pas être implémentée par le système d'exploitation, car elle repose sur le fait que le BIOS ignore l'initialisation et le test de la RAM. Le système d'exploitation a donc besoin d'une API pour indiquer au BIOS qu'il a l'intention de reprendre avec le contenu actuel de la RAM. Afin de fournir ce service, le BIOS demande au système d'exploitation de laisser intacte une certaine zone de RAM.
L'interface du système d'exploitation pour tous les services du BIOS est un morceau de code de machine virtuelle qui doit être exécuté sur un émulateur et qui génère les opérations d'E/S nécessaires dans le matériel. Pour la suspension, cela est généralement implémenté de sorte que l'exécution de l'une des écritures matérielles déclenche alors une interruption, qui transfère le contrôle au BIOS.
Il existe trois domaines principaux dans lesquels un système d'exploitation utilise le BIOS dans les systèmes modernes, tels que ceux utilisant la norme UEFI. Le premier est une série de services connus sous le nom de services d'exécution UEFI. Ces services permettent au système d'exploitation de récupérer des informations que seul le BIOS connaît, telles que l'heure d'utilisation du BIOS, l'ordre de démarrage, le profil de sécurité de l'utilisateur actuel, les informations sur la carte mère, les modules DIMM, etc.
Le second est le mode de gestion du système, qui est une section cachée de la mémoire (SMRAM) à laquelle on accède par une interruption de haute priorité (SMM). De nombreux BIOS l'utilisent pour implémenter des fonctionnalités OEM de haute sécurité ou pour implémenter des solutions matérielles.
Le troisième est ACPI. ACPI fournit la configuration, la gestion de l'alimentation et les données matérielles et le code utilisé par le système d'exploitation pour augmenter ce que les pilotes du système d'exploitation peuvent découvrir à l'aide d'une norme industrielle ou d'un pilote de périphérique. Par exemple, existe-t-il un signal spécial pour contrôler l'alimentation du disque dur ou existe-t-il une manière spéciale de communiquer avec la batterie qui n'est pas couverte par une norme ?
Tim