Το λειτουργικό σύστημα επιτρέπει στον χρήστη να αλληλεπιδρά με το υλικό του υπολογιστή. Το σύστημα αποτελείται από εκατοντάδες χιλιάδες γραμμές κώδικα. Συνήθως το λειτουργικό σύστημα κατασκευάζεται χρησιμοποιώντας τις γλώσσες προγραμματισμού C#, C, C ++ και συναρμολόγησης. Το λειτουργικό σύστημα σας επιτρέπει να περιηγείστε στον υπολογιστή σας ενώ αποθηκεύετε και εκτελείτε εντολές. Μην νομίζετε ότι η δημιουργία ενός λειτουργικού συστήματος είναι εύκολη. Θέλει πολλές γνώσεις για να το φτιάξεις.
Βήμα
Βήμα 1. Πρώτα απ 'όλα, μάθετε για τον προγραμματισμό
Η γλώσσα συναρμολόγησης είναι πολύ σημαντική. συνιστάται ιδιαίτερα να μάθετε μια άλλη συμπληρωματική γλώσσα υψηλού επιπέδου, όπως η γλώσσα C.
Βήμα 2. Αποφασίστε ποια μέσα θέλετε να χρησιμοποιήσετε για τη φόρτωση του λειτουργικού συστήματος
Αυτό το μέσο μπορεί να είναι μονάδα CD, μονάδα DVD, μονάδα flash, σκληρός δίσκος, δισκέτα ή άλλος υπολογιστής.
Βήμα 3. Ορίστε την βασική ιδέα ενός SO
Για παράδειγμα, στα Windows, η βασική ιδέα είναι ένα εύχρηστο GUI και μεγάλη ασφάλεια.
Βήμα 4. Προσδιορίστε ποια πλατφόρμα επεξεργαστή θα υποστηρίζει το λειτουργικό σας σύστημα
Οι IA-32, ARM και x86_64 είναι οι πιο συνηθισμένες πλατφόρμες για προσωπικούς υπολογιστές. Όλα, λοιπόν, είναι η καλύτερη επιλογή σας.
Βήμα 5. Αποφασίστε αν προτιμάτε να κάνετε τα πάντα μόνοι σας από την αρχή ή υπάρχει ήδη διαθέσιμος πυρήνας στον οποίο θέλετε να βασιστείτε
Για παράδειγμα, το Linux από την αρχή είναι ένα έργο για άτομα που θέλουν να δημιουργήσουν τη δική τους διανομή Linux.
Βήμα 6. Αποφασίστε αν θα χρησιμοποιήσετε τον δικό σας φορτωτή εκκίνησης ή έναν προκατασκευασμένο, όπως το Grand Unified Bootloader (GRUB)
Η κωδικοποίηση του προγράμματος εκκίνησης μόνος σας θα απαιτήσει εκτεταμένη γνώση υλικού και BIOS. Ως αποτέλεσμα, αυτό το βήμα μπορεί να εμποδίσει το πραγματικό πρόγραμμα προγραμματισμού πυρήνα.
Βήμα 7. Αποφασίστε ποια γλώσσα προγραμματισμού θα χρησιμοποιήσετε
Είναι καλό να έχετε λειτουργικό σύστημα σε γλώσσα όπως το Pascal ή το BASIC, αλλά θα πρέπει να χρησιμοποιήσετε το C ή το Assembly. Η συναρμολόγηση είναι πολύ απαραίτητη, επειδή ορισμένα σημαντικά μέρη ενός λειτουργικού συστήματος το απαιτούν. Από την άλλη πλευρά, η γλώσσα C ++ περιέχει λέξεις -κλειδιά που απαιτούν άλλο πλήρες SO για να εκτελεστεί.
Για να μεταγλωττίσετε ένα λειτουργικό σύστημα από κώδικα C ή C ++, φυσικά θα χρησιμοποιήσετε τον έναν μεταγλωττιστή ή τον άλλο. Επομένως, είναι καλή ιδέα να συμβουλευτείτε το εγχειρίδιο χρήσης/εγχειρίδιο/τεκμηρίωση για τον μεταγλωττιστή C/C ++ της επιλογής σας, είτε περιλαμβάνεται στο λογισμικό είτε διατίθεται στον ιστότοπο του διανομέα. Πρέπει να γνωρίζετε πολλά περίπλοκα πράγματα σχετικά με τον μεταγλωττιστή και, για την ανάπτυξη C ++, πρέπει να γνωρίζετε για το σχέδιο διαχείρισης του μεταγλωττιστή και το ABI του. Αναμένεται να κατανοήσετε τις διάφορες εκτελέσιμες μορφές (ELF, PE, COFF, βασικό δυαδικό κ.λπ.) και να κατανοήσετε ότι η αποκλειστική μορφή των Windows, PE (.exe), προστατεύεται από πνευματικά δικαιώματα
Βήμα 8. Ορίστε τη διεπαφή προγραμματισμού εφαρμογών (API)
Ένα καλό API για να διαλέξετε είναι το POSIX καθώς είναι καλά τεκμηριωμένο. Όλα τα συστήματα Unix έχουν τουλάχιστον μερική υποστήριξη για το POSIX. Έτσι, η σύνδεση των προγραμμάτων Unix στο λειτουργικό σας σύστημα θα πρέπει να είναι εύκολη.
Βήμα 9. Αποφασίστε για το σχέδιό σας
Υπάρχει κάτι σαν μονολιθικός πυρήνας και μικροπυρήνας. Οι μονολιθικοί πυρήνες υλοποιούν όλες τις υπηρεσίες στον πυρήνα, ενώ οι μικροπυρήνες έχουν μικρούς πυρήνες που συνοδεύονται από υπηρεσίες ανάπτυξης δαιμόνων χρήστη. Γενικά, οι μονολιθικοί πυρήνες είναι ταχύτεροι, αλλά οι μικροπυρήνες έχουν καλύτερη απομόνωση σφαλμάτων και αξιοπιστία.
Βήμα 10. Εξετάστε το ενδεχόμενο ανάπτυξης και εργασίας σε μια ομάδα
Με αυτόν τον τρόπο, απαιτείται λιγότερος χρόνος για την επίλυση περισσότερων προβλημάτων, τα οποία πιθανότατα θα επιταχύνουν τη δημιουργία ενός καλύτερου λειτουργικού συστήματος.
Βήμα 11. Μην σκουπίζετε εντελώς τον σκληρό σας δίσκο
Θυμηθείτε, η διαγραφή μιας μονάδας δίσκου θα διαγράψει μη αναστρέψιμα όλα τα δεδομένα σε αυτήν! Χρησιμοποιήστε το GRUB ή άλλο διαχειριστή εκκίνησης για διπλή εκκίνηση του συστήματός σας με άλλο λειτουργικό σύστημα έως ότου το λειτουργικό σας σύστημα είναι πλήρως λειτουργικό.
Βήμα 12. Ξεκινήστε από μικρό
Ξεκινήστε με μικρά πράγματα όπως εμφάνιση κειμένου και παύση πριν προχωρήσετε σε πράγματα όπως η διαχείριση μνήμης και η σύνθετη εργασία. Επίσης, βεβαιωθείτε ότι έχετε κάνει τις εκδόσεις 32 bit και 64 bit.
Βήμα 13. Κρατήστε αντίγραφο ασφαλείας του τελευταίου πηγαίου κώδικα εργασίας
Αυτό το βήμα είναι χρήσιμο ως εγγύηση σε περίπτωση που κάτι πάει στραβά με την τρέχουσα έκδοση του SO ή της ανάπτυξης. Εάν ο υπολογιστής σας καταρρεύσει και δεν εκκινήσει, είναι καλή ιδέα να έχετε ένα δεύτερο αντίγραφο για να εργαστείτε, ώστε να διορθώσετε το πρόβλημα.
Βήμα 14. Εξετάστε το ενδεχόμενο να δοκιμάσετε το νέο λειτουργικό σας σύστημα με μια εικονική μηχανή
Αντί να κάνετε επανεκκίνηση του υπολογιστή σας κάθε φορά που κάνετε αλλαγές ή μετά την αποστολή αρχείων από τον υπολογιστή ανάπτυξης στον δοκιμαστικό σας υπολογιστή, μπορείτε να χρησιμοποιήσετε μια εφαρμογή εικονικής μηχανής για να εκτελέσετε το λειτουργικό σας σύστημα ενώ τρέχει το τρέχον λειτουργικό σας. Οι τρέχουσες εφαρμογές VM περιλαμβάνουν: VMWare (το οποίο διαθέτει επίσης ένα προϊόν διακομιστή δωρεάν), εναλλακτικές λύσεις ανοιχτού κώδικα, Bochs, Microsoft Virtual PC (μη συμβατό με Linux) και Oracle VirtualBox.
Βήμα 15. Εκκινήστε την "έκδοση υποψηφίου" ή την έκδοση Beta
Αυτό το βήμα θα επιτρέψει στον χρήστη να σας ειδοποιήσει για πιθανά προβλήματα με το λειτουργικό σας σύστημα.
Βήμα 16. Το λειτουργικό σύστημα πρέπει επίσης να είναι φιλικό προς το χρήστη
Βεβαιωθείτε ότι έχετε προσθέσει φιλικές προς το χρήστη λειτουργίες, καθιστώντας τις αυτές αναπόσπαστο μέρος του σχεδιασμού σας.
Συμβουλές
- Ελέγξτε για πιθανά αδιέξοδα και άλλα σφάλματα. Σφάλματα, αδιέξοδα και άλλα ζητήματα θα επηρεάσουν το έργο δημιουργίας του λειτουργικού σας συστήματος.
- Βεβαιωθείτε ότι εφαρμόζετε λειτουργίες ασφαλείας ως κορυφαία προτεραιότητα εάν θέλετε το σύστημα να λειτουργεί σωστά.
- Χρησιμοποιήστε ιστότοπους όπως το OSDev και το OSDever για να σας βοηθήσουν να αναπτύξετε το δικό σας λειτουργικό σύστημα. Παρακαλούμε σημειώστε ότι για τους περισσότερους σκοπούς, η κοινότητα του OSDev.org θα είναι περισσότερο από ευτυχισμένη εάν χρησιμοποιείτε το wiki και δεν συμμετέχετε στο φόρουμ. Εάν αποφασίσετε να συμμετάσχετε σε ένα φόρουμ, υπάρχει μια προϋπόθεση: πρέπει να γνωρίζετε πραγματικά για το C ή το C ++ και τη γλώσσα συναρμολόγησης x86. Θα πρέπει επίσης να κατανοήσετε γενικές και πολύπλοκες έννοιες προγραμματισμού όπως Συνδεδεμένες λίστες, Ουρές κ.λπ. Η κοινότητα OSDev, στους κανονισμούς της, δηλώνει ρητά ότι η κοινότητά της δεν έχει δημιουργηθεί για να καλλιεργήσει νέους προγραμματιστές.
- Μην συμμετέχετε με το φόρουμ OSDev.org και στη συνέχεια κάντε την προφανή ερώτηση. Θα σας ζητηθεί μόνο να διαβάσετε τον οδηγό. Διαβάστε τη Wikipedia και τις οδηγίες για όποιο εξοπλισμό θέλετε να χρησιμοποιήσετε.
- Αν προσπαθείτε να αναπτύξετε ένα λειτουργικό σύστημα, σίγουρα θεωρείτε τον «θεό» του προγραμματισμού.
- Θα πρέπει επίσης να έχετε διαβάσει το εγχειρίδιο επεξεργαστή για την αρχιτεκτονική επεξεργαστή που έχετε επιλέξει. είτε x86 (Intel), ARM, MIPS, PPC κ.λπ. Τα εγχειρίδια για τις αρχιτεκτονικές επεξεργαστών είναι εύκολο να βρεθούν χρησιμοποιώντας μια αναζήτηση Google ("Intel manual", "ARM manual", κ.λπ.).
- Μόλις ολοκληρωθούν όλες οι εργασίες ανάπτυξης, αποφασίστε αν θέλετε να απελευθερώσετε τον κωδικό ως ανοιχτό κώδικα ή με πνευματικά δικαιώματα.
- Μην ξεκινήσετε ένα έργο λειτουργικού συστήματος για την έναρξη εκμάθησης προγραμματισμού. Εάν δεν γνωρίζετε μέσα και έξω για C, C ++, Pascal ή κάποια άλλη κατάλληλη γλώσσα, όπως χειρισμό δείκτη, χειρισμό bit χαμηλού επιπέδου, μετατόπιση bit, ενσωματωμένες γλώσσες συναρμολόγησης κ.λπ., δεν είστε έτοιμοι για λειτουργικό σύστημα ανάπτυξη.
- Η δημιουργία ενός εντελώς νέου διαμερίσματος για την «επέκταση» του SO μπορεί να είναι μια καλή επιλογή.
- Αν θέλετε έναν εύκολο τρόπο, σκεφτείτε τις διανομές Linux όπως Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS Mk LiveCD ή SUSE Studio και SUSE KIWI. Ωστόσο, το λειτουργικό σύστημα που δημιουργείτε ανήκει στην εταιρεία που ξεκίνησε πρώτη την υπηρεσία (αν και έχετε το δικαίωμα να τη διανείμετε ελεύθερα, να την τροποποιήσετε και να την εκτελέσετε όπως επιθυμείτε στο πλαίσιο της GPL).
Προειδοποίηση
- Δεν θα λάβετε πλήρες λειτουργικό σύστημα εντός δύο εβδομάδων. Ξεκινήστε με ένα bootable SO και μετά προχωρήστε σε πιο δροσερά πράγματα.
- Η απρόσεκτη εγγραφή του λειτουργικού σας συστήματος σε έναν σκληρό δίσκο μπορεί να το καταστρέψει εντελώς. Πρόσεχε.
- Εάν κάνετε κάτι που δεν συνιστάται, όπως γράφετε τυχαία byte σε τυχαίες θύρες εισόδου/εξόδου, θα καταστρέψετε το λειτουργικό σας σύστημα και (θεωρητικά) θα μπορούσε να καεί το υλικό σας.
- Μην περιμένετε ότι το λειτουργικό σύστημα είναι εύκολο να χτιστεί. Υπάρχουν πολλές περίπλοκες αλληλεξαρτήσεις. Για παράδειγμα, για να δημιουργήσετε ένα λειτουργικό σύστημα ικανό να χειρίζεται πολλούς επεξεργαστές, ο Διαχειριστής μνήμης πρέπει να διαθέτει μηχανισμό "κλειδώματος" για να αποτρέψει την πρόσβαση πολλών επεξεργαστών στον ίδιο πόρο ταυτόχρονα. Η "κλειδαριά" που χρησιμοποιείται για αυτό θα απαιτούσε έναν προγραμματιστή να διασφαλίζει ότι μόνο ένας επεξεργαστής έχει πρόσβαση σε κρίσιμους πόρους ανά πάσα στιγμή και όλοι οι άλλοι πρέπει να περιμένουν. Στην πραγματικότητα, ο προγραμματιστής εξαρτάται από την παρουσία του Memory Manager. Αυτό είναι ένα παράδειγμα εξάρτησης από αδιέξοδο. Δεν υπάρχει τυπικός τρόπος επίλυσης αυτού του είδους του προβλήματος. κάθε προγραμματιστής λειτουργικού συστήματος αναμένεται να είναι αρκετά έμπειρος ώστε να γνωρίζει τον δικό του τρόπο αντιμετώπισης.
Επιπρόσθετοι πόροι
- Οδηγίες: Linux From Scratch
- Φορτωτής εκκίνησης: GRUB
- Εφαρμογές εικονικής μηχανής: Bochs, VM Ware, XM Virtual Box.
- Εγχειρίδιο επεξεργαστή: Εγχειρίδιο Intel
- SO ιστοσελίδες ανάπτυξης: OSDev, OSDever