coKernel Cpcdos ? C'est quoi ?

 

Wp 20141112 003Sé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

Info icon 1Le 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 )

 

12346 2Le 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 !

Java logo svg 2

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à)

 Source

Wp 001550

 

 

 



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

Source

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 :
Fenetre

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 :

  1. D'un lecteur/pilote de système de fichier FAT et FAT32.
  2. D'un lecteur d'entête MZ pour lire les exécutables NE et PE.
  3. Des interruptions utile du 21h.
  4. Du pilote clavier/souris et carte réseau NDIS2.0.
  5. Du boot.

Go next 5 1Seulement ceux-ci sont neccessaires au fonctionnement de Cpcdos. FreeDos, 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.

  1. L'interface graphique.
  2. Lecture des images JPG, BMP, PNG.
  3. Resizement vectoriel des bitmaps.
  4. Les polices d'écritures
  5. L'UTF-8
  6. Interprêtation/Exécutions de programmes CpcdosC+
  7. Client et serveur HTTP, FTP.
  8. Client et serveur TCP/UDP.
  9. Gestion/ordonnancement préemtif des processus et des threads. Seamphores et mutexes.
  10. Attributions PID, handler manipulables.
  11. ISR
  12. Lecture écriture fichier (Ou autres descripteurs comme les sockets réseaux)
  13. Futurement:
    1. Segmentation "protection mémoire. Alias ring0".
    2. Java / Python / HTML / CSS
    3. SMP. (Multi-core)


Go next 5 1C'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.

Info 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 !

 Wp 001524

< En cours de rédaction >

 

25 votes. Moyenne 4.48 sur 5.

Commentaires (5)

WaterFire
  • 1. WaterFire | 14/05/2017
Moi ça me met : " File not found " quand je veux le télécharger, de la première à la dernière ! C'EST UN SCANDALE ! REPAREZ VOS LIENS DE TELECHARGEMENT !!!!!!!!!!!!!!!!
Sébastien Favier
  • Sébastien Favier | 14/05/2017
Bonjour, je viens de contacter l'hébergeur, plus aucun fichiers et projets sont telechargeables, je suis très embêté. Les liens ont été modifiés vous pouvez désormais le télécharger.
Sylvain Maltais
  • 2. Sylvain Maltais (site web) | 11/10/2015
Bonjour Sébastien,

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
Sébastien Favier
  • Sébastien Favier | 18/11/2015
Merci à toi! :-)
Redstoke
Bientot j'arriverer a te depasser Sebastien ,je créer mon propre kernel ,bientot...

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