coKernel Cpcdos ? C'est quoi ?
Sébastien FAVIER et Timothée LUSSIAUD entrain de bosser la surbriance des menus de CraftyOS.
I. But du projet
Débuté le 15 Juillet 2011
Le but de ce projet, est de permettre à n'importe qui de créer son propre système exploitation en toute simplicité sans utiliser de langage de programmation complexe comme l’Assembleur , le C. Mais seulement le CpcdosC+ qui se veut simple d'utilisation ET en français ( Langue & syntaxes anglaise pour la prochaine version ) qui permet par extension, une meilleure compréhension du code par une communauté francophone OU le Java. Tout cela grâce à un système 32Bit tout prêt, la séquence de démarrage, les pilotes, le réseau et les paramètres déjà prédéfinis, possibilité de créer une interface utilisateur & graphique très personnalisable, avancée et très simple qui peux aller jusqu’à 32Bits de couleurs et une résolution qui peux aller jusqu’au maximum de votre carte graphique. Tout en se séparant de la limitation du DOS (mémoire, petit écran, shell monotâche, performances...) en passant par un système beaucoup plus puissant qui est capable de gérer 4Go de RAM, résolutions HD, souris, réseaux etc...
( Acronyme CPCDOS : Créé Pour Concevoir Des OS / Conçu Pour Créer Des OS )
Le CpcdosC+ est un langage de programmation basique et non typé, de type batch ou binaire. Il peut s'exécuter tant que non compilé (batch -> format CNB) ou compilé (binaire -> CCB). Le format binaire est théoriquement beaucoup plus rapide. Les commandes se dinstinctes par des / et peut avoir un ou plusieurs paramètres. Grâce à ce langage, vous pouvez créer votre OS type Console ou graphique. Le CpcdosC+ est très simple en compréhension, en effet, les syntaxes et les messages sont entièrement en Français. Vous pouvez créer des fenêtres graphiques, des boutons, des imagesbox, la transparence, des animations, de compteurs, des calculs, manipulation binaire, hexa, créer, bloquer, tuer les processus, communiquer sur le réseau...
Bref! A vous de découvrir !
L'intégration du Java pourra satisfaire vos programmes, en effet, cpcdos sera capable de gérer nativement du Java Andoid, Linux, Windows.
Pourquoi du Java ??
J'ai personnellement choisis le Java pour sa compatibilité entre plateformes, le code pour faire un calcul sur Android sera le même pour Windows, le code pour créer une fenêtre sous Linux sera le même pour Windows et vis versa. Une fois l'intégration au point, vos applications Java Andoid, Linux et windows pourront fonctionner avec un simple copier/coller de votre fichier .JAR ou .JAD(projet) et exécuter simplement avec la commande CpcdosC+ JAVA/ monprogramme.jar
Vidéo présentation du projet (ancienne version Alpha 1.1 - 24 mai 2013 ) (non a jour) :
Info: Le boot et les pilotes sont de base FreeDos
Rien ne viens de Linux, aucun rapport et ce n'est pas le même système du tout.
- - - - - - - - -
CpcdosC+
CpcdosCommande+
Initiales : CC+ / CCP
Utilisable en Console & en fichier Scripts (Batch) & Exécutable
- - - - - - - - -
Tutoriel exemple de la création d'un OS sur : http://www.youtube.com/watch?v=l-SlP5-ukIY (non à jour)
II. Finalisation du projet
Dans le futur, Cpcdos sera un véritable noyau monolithique modulaire multitâche preemtif indépendant total de FreeDos, Dr-Dos, MS-DOS et autres.
Il intègrera les fonctions émulé des interruptions 21h (DOS) et un lecteur d'entête MZ pour lire les exécutable .EXE et puis .COM
Puis il sera capable d'exécuter une interface OpenGL et SDL, exécuter du Java et des applications Win32 et Linux. (Déjà en cours de développement).
Révolution du langage CpcdosC+ dans le futur
1 : Programmation Orienté Objet (POO)
2 : Compilation binaire de votre code CpcdosC+ (CCB)
3 : Appel d'interruptions (Assembleur) x86
4 : Intégration du Java
5 : CpcdosC+ Hybride (Français / Anglais)
Plus d'informations sur cette révolution ICI
III. Kernel ?
Kernel ( Noyau de système d'exploitation ) est une partie fondamentale dans un système d'exploitation (certains). Il gère les ressources de l'ordinateur, et permet de faire communiquer les composants matériels & logiciels entre eux. Il regroupe des caractéristiques et traitements communs ce qui fait le mécanisme d'abstraction des communication entre le matériel
( Périphériques , processeur(s) , mémoires .. )
Un Kernel doit assurer
- la communication entre les logiciels et le matériel (DOS le fait déjà)
- la gestion des diverses tâches d’une machine
- la gestion du matériel (mémoire, processeur, périphérique, stockage…) (DOS le fait déjà)
Sébastien à l'internat entrain de bosser sur le noyau et les pc i7
IV. Et Cpcdos ?
> Cpcdos est un Co-Kernel Monolithique modulaire Multitâche Coopératif
Co-Kernel : C'est un "sous-kernel", qui lance l'interface homme-machine principale en se faisant passer pour le noyau principal. Il est exécuté de manière à remplacer le noyau principal Main Kernel (Dos) par celui-ci (Cpcdos) tout en rendant possible l'utilisation des API du noyau principal.
Monolithique modulaire : Les parties fondamentales du système est regroupé en un bloc dans le code source
Multitâche Coopératif : Simple multitâche gestions de plusieurs processus en même temps , d'où les processus doivent permettre à une autre tâche de s'exécuter , son inconvénient c'est que si un des processus plante , le système entier peux bloquer , voir Section critique
MAIS
Ce noyau a une sorte de multitâche coopératif/preemptif avancé, en effet, les processus sont gérés autrement que ceux des systèmes preemptif actuels.
C'est grâce au moteur CpcdosC+, le moteur de traitement de commandes et d'événements et des services qui est multi-tâche et multi-threads.
Si un processus Cpcdos plante, ou dans une boucle infinie, le système peut toujours fonctionner! avec risque d'augmentation de l'utilisation % du CPU mais il est possible de débloquer un processus Cpcdos simplement avec ALT+D. Un exemple en vidéo
Son principe c'est d'exécuter du code CpcdosC+ en lignes de commandes (en Console) ou via des fichiers (Script) de format
- CCB (Code Compilé Binaire Non modifiable) en utilisant le principe du ByteCode (au projet)
- CNB (Code Non Binaire Modifiable|Type texte) (Actuel)
Le principe de ces avantages sera pour le futur développeur désirant de protéger son code source en utilisant le format CCB comme un exécutable binaire.
Ou même laisser son code « OpenSource » en utilisant par défaut le format CNB comme pour système d'exploitation CraftyOS.
Le Kernel en question est grossièrement un « générateur d'interface utilisateur » . Son utilisation est interprété selon le développeur, il intègre le langage de programmation de haut niveau entièrement simple.
En seulement 10 lignes vous avez crée une fenêtre graphique personnalisée. En voici un exemple :
Pourquoi 10 lignes ? Mais c'est trop bien !
- Le nom de la fenêtre (nom du processus)
- Le titre (elle s'affiche dans la barre de titre)
- Le type & paramètres (Avec ou sans contours ou transparente. Fermable? réductable? déplaçable?)
- Couleur de fond (Jusqu'a 4 milliards de couleurs indiqué en Rouge Vert Bleu)
- Position horizontale
- Position verticale
- Taille horizontale
- Taille verticale
- Et on finit par une commande qui crée le tout : CREER/
Dans les paramètres de la fenêtre vous pouvez indiquer si la fenêtre est :
Movable? (Déplaçable?) - Ative? (Interaction possible?) - Visible - Reductable? - Fermable? - Affiché dans la barre des Tâches? - FenetrePrioritaire? (1 Fenêtre affiché + entourée d'un fond gris) - Couleur généralisé + translucidité ? - Ombre ? (Affichage de l'ombre sous la fenêtre ou pas).
Dans cette fenêtre, vous pouvez ajouter en peu de lignes des
- Boutons cliquables
- Labels (Zone de texte)
- TexteBoxs (Zone de saisie de texte au clavier)
- ImageBox (JPG & BMP 8, 6, 24 et 32Bits) (PNG et GIF au projet)
- Explorateurs de fichiers en liste ou en grandes icônes (Non finalisé)
- Barres de progression
- Timers (Compteur multitâche. Exemple: Exécuter t-elle action toutes les 5 secondes...)
- Heures, dates, utilisation CPU & mémoire, FPS. Le tout syncronisé dans un Label
- Réduction dans une barre des tâches crée par vous même
- Et encore !!! Voir Les fonctionnalitées
Vous pourrez reproduire la même chose avec la programmation Java (Jframe, Jbouton, variables, caluls, etc.. etc... )
Grâce à l'interprétation le développeur peux créer une interface graphique d'une qualité de 16, 24, 32 Bits et d'une résolution optimale selons la performance de votre carte graphique et de votre moniteur. Le plus courant et le plus compatible est la résolution de 800x600 et 1024x768, la plus grande testé et fonctionnelle est 1920x1080, screenshot ICI
Vous pouvez connaître la liste des résolution supporté par la carte graphique grâce à la commande CpcdosC+
SYS/ /TESTECR {Bit}
Remplacer {Bit} par 8, 16, 24 ou 32 (bit per pixel)
Une vidéo présentant un démarrage en USB d'un système d'exploitation basé Cpcdos (CraftyOS) YOUTUBE
Timothée LUSSIAUD et Sebasien FAVIER
V. Pourquoi utilise-t-il la base DOS ?
C'est cette question auquel Cpcdos est pointé de toutes critiques, en terme d'une base "ancienne" ou "dos est déjà un kernel". Je vais vous y répondre clairement l'interêt du DOS.
Pour commencer, mettons les termes exacts à 2 générations de Cpcdos actuels :
- Concernant Cpcdos OS2.0.5 Alpha 3.9 datant de février 2015 et antérieur, il ne s'agit pas d'un kernel pur et dur, il ne gère pas sa mémoire tout seul, il s'agit un simple programme .EXE écrit en FreeBasic imitant un kernel sous DOS, exécuté en mode protégé et en DPMI avec une base très riche de fonctionnalités, et verbalement proche du terme d'un "Kernel". C'est ce qui donne un "pseudo nom", un semblant d'un "co-kernel".
- Concernant Cpcdos OS2.0.5 Alpha 4.0 (2016 - future version) et supérieur, il ne s'agit toujours pas d'un kernel pur et dur, il s'agit beaucoup plus qu'un "simple programme FreeBasic", mais d'un véritable co-noyau monolithique multitâche à ordonnancement préemptif, imitant/wrappant un noyau sous DOS, toujours exécuté en mode protégé et en DPMI, désormais très proche du matériel, accès total à la mémoire RAM et aux périphériques, gestion de ses propres thread et de ses processus. Il inclu une base très riche de fonctionnalités, verbalement très proche du terme d'un "Kernel". Dont le terme mieux adapté d'un "Co-Kernel". Et donc capable/futurement capable de remplacer DOS.
Conclusion des deux versions:
L'ancienne version de Cpcdos était un semblant d'un co-noyau monolitique multitâche coopératif. Et la nouvelle version de Cpcdos est un véritable co-noyau monolithique mulitâche à ordonnancement préemtif.
Rappel Co-Kernel : C'est un "sous-kernel", qui lance l'interface homme-machine principale en se faisant passer pour le noyau principal. Il est exécuté/codé de manière à remplacer le noyau principal «Main Kernel» (Dos) par celui-ci (Cpcdos) tout en rendant possible l'utilisation des API et autres interruptions du noyau principal.
Ensuite, pourquoi DOS ?
Pour le moment, le projet de Cpcdos à seulement besoin :
- D'un lecteur/pilote de système de fichier FAT et FAT32.
- D'un lecteur d'entête MZ pour lire les exécutables NE et PE.
- Des interruptions utile du 21h.
- Du pilote clavier/souris et carte réseau NDIS2.0.
- Du boot.
Seule. ment ceux-ci sont neccessaires au fonctionnement de CpcdosFreeDos, Dr-Dos, MS-DOS, équivalents ou émulateurs feront l'affaire.
Que-fait Cpcdos ? (Au sujet du futur Cpcdos 2016)
Il fait tout ce que DOS ne peut gérer. Ou il re-interprête les fonctions existantes pour en être indépendant.
- L'interface graphique.
- Lecture des images JPG, BMP, PNG.
- Resizement vectoriel des bitmaps.
- Les polices d'écritures
- L'UTF-8
- Interprêtation/Exécutions de programmes CpcdosC+
- Client et serveur HTTP, FTP.
- Client et serveur TCP/UDP.
- Gestion/ordonnancement préemtif des processus et des threads. Seamphores et mutexes.
- Attributions PID, handler manipulables.
- ISR
- Lecture écriture fichier (Ou autres descripteurs comme les sockets réseaux)
- Futurement:
- Segmentation "protection mémoire. Alias ring0".
- Java / Python / HTML / CSS
- SMP. (Multi-core)
C'est le travail de Cpcdos et CPinti Core, nul besoin de DOS.
Alors est-ce que Cpcdos est un vrais "Kernel" ?
Non Cpcdos n'est pour le moment, pas un vrais noyau. J'insiste le fait que l'utilisation du DOS est temporaire.
Quand Cpcdos va être un véritable kernel et non un co-kernel ?
Cpcdos sera un véritable kernel quand il sera capable d'être exécuté sans l'aide du DOS
Plus le projet avance, plus l'indépendant totale se rapproche, mais il faut du temps c'est prévu au projet.
La séparation du DOS et Cpcdos ne va rien changer aux performances, ni à la qualité du système, mais seulement pour adapter le terme du "kernel".
Il faudra seulement patienter.
Remarque : les premières versions du projet ReactOS ont commencé exactement pareil. Cet à dire une base DOS pour commencer.
VI. Je veux créer mon système d'exploitation
Si vous voulez commencer à créer votre OS, il suffit d'accéder à la page de téléchargement de télécharger la dernière version et suivre le contenu du manuel qui se trouve dans l'archive téléchargée.
DosBox sera votre support de développement uniquement, pour cause de sa lenteur de l'émulation.
Vous n'aurez plus qu'a créer votre clé usb bootable (256Mo minimum), puis copier tout votre système sur votre clé usb et ouvrir les yeux !
< En cours de rédaction >
Commentaires (5)
- 1. | 14/05/2017
- | 14/05/2017
- 2. | 11/10/2015
Je trouve que tu t'attaques à un projet très intéressant. On sent en toi la créativité ! Toutefois, la plupart des personnes n'ont pas conscience des difficultés que l'on rencontre lorsqu'on démarre un système d'exploitation à partir de zéro. Peu importe ce que tu feras, l'important c'est que tu l'as fait !
Bon travail ! Continue
:)
Sylvain Maltais
- | 18/11/2015
- 3. | 31/05/2015
Mais comme meme ta bien fait ton kernel ,Bravo!
Par le mysterieux Redstoke..
Ajouter un commentaire
Date de dernière mise à jour : 28/01/2016