Πώς να δημιουργήσετε ένα λειτουργικό σύστημα υπολογιστή

Συγγραφέας: Gregory Harris
Ημερομηνία Δημιουργίας: 11 Απρίλιος 2021
Ημερομηνία Ενημέρωσης: 25 Ενδέχεται 2024
Anonim
Πώς να δημιουργήσετε ένα USB stick με πολλά λειτουργικά συστήματα.
Βίντεο: Πώς να δημιουργήσετε ένα USB stick με πολλά λειτουργικά συστήματα.

Περιεχόμενο

Άλλες ενότητες

Αυτό το wikiHow σάς διδάσκει πώς να σχεδιάζετε και να αναπτύσσετε ένα λειτουργικό σύστημα εάν δεν ξέρετε πώς να κωδικοποιήσετε σε C ή C ++. Τα λειτουργικά συστήματα διαχειρίζονται το υλικό του υπολογιστή και παρέχουν τους πόρους που πρέπει να εκτελούνται οι εφαρμογές. Η σύνταξη ενός λειτουργικού συστήματος από το μηδέν απαιτεί ισχυρή γνώση της επιστήμης των υπολογιστών, μιας γλώσσας προγραμματισμού όπως C ή C ++, συναρμολόγησης και πρακτικών διαχείρισης κώδικα.

Βήματα

Μέρος 1 από 2: Εκμάθηση των βασικών

  1. Παρακολουθήστε ορισμένα βασικά μαθήματα Πληροφορικής. Σε αντίθεση με την ανάπτυξη για τον Ιστό, η δημιουργία ενός λειτουργικού συστήματος απαιτεί ισχυρή κατανόηση αλγορίθμων, δομών δεδομένων, υλικού υπολογιστών και διαχείρισης πόρων. Οι άνθρωποι αποκτούν πτυχία σε αυτά τα πράγματα, οπότε μην περιμένετε να γράψουν ένα ολόκληρο λειτουργικό σύστημα αφού διαβάσουν ένα διαδικτυακό σεμινάριο! Το μάθημα Εισαγωγής στην Πληροφορική του Χάρβαρντ διατίθεται στο Διαδίκτυο μέσω EDX χωρίς κόστος.

  2. Μάθετε μια γλώσσα προγραμματισμού υψηλού επιπέδου όπως το C. Μόλις αποκτήσετε μια σταθερή θεμελιώδη κατανόηση της επιστήμης των υπολογιστών, το επόμενο βήμα είναι να αποκτήσετε το C και / ή το C ++. Όπως η εκμάθηση της επιστήμης των υπολογιστών, η εξάσκηση μιας γλώσσας δεν είναι προαιρετική - δεν θα μπορείτε να κωδικοποιήσετε ένα λειτουργικό σύστημα εάν δεν μπορείτε να γράψετε στερεές εφαρμογές.
    • Αν είστε ολοκαίνουργιος στο C, ρίξτε μια ματιά στο πρόγραμμα Dartmouth’s C Programming: Getting Started, το οποίο είναι δωρεάν μέσω του EDX. Μόλις ολοκληρώσετε αυτό το μάθημα, μπορείτε να παρακολουθήσετε το επόμενο μάθημα της σειράς: C Προγραμματισμός: Γλώσσες. Στη συνέχεια, προχωρήστε σε επόμενα μαθήματα όπως Modular Programming and Memory Management και Pointers and Memory Management.

  3. Μάθετε μια γλώσσα συναρμολόγησης. Οι γλώσσες συναρμολόγησης είναι γλώσσες χαμηλού επιπέδου σχεδιασμένες να επικοινωνούν με διαφορετικούς επεξεργαστές. Δεδομένου ότι η συναρμολόγηση είναι διαφορετική για διαφορετικούς τύπους επεξεργαστών (π.χ. x86 Assembly Language για Intel, AMD, VIA και άλλους επεξεργαστές), θα πρέπει να μάθετε την έκδοση για τον τύπο επεξεργαστή για τον οποίο κωδικοποιείτε.
    • Αυτό το βιβλίο ανοιχτού κώδικα, εάν διαβαστεί στο σύνολό του, μπορεί να σας δώσει μια αρκετά σταθερή κατανόηση για τη δημιουργία ενός λειτουργικού συστήματος.
    • Το Art of Assembly Language είναι ένα βιβλίο που συνιστάται ιδιαίτερα για τη συναρμολόγηση που διατίθεται τόσο εντός όσο και εκτός σύνδεσης.
    • Θα πρέπει επίσης να κάνετε πολλή έρευνα σχετικά με τον τύπο των επεξεργαστών στους οποίους πρέπει να λειτουργεί το λειτουργικό σας σύστημα. Τα εγχειρίδια για την αρχιτεκτονική του επεξεργαστή μπορούν εύκολα να βρεθούν χρησιμοποιώντας μια αναζήτηση Google ("Εγχειρίδια Intel", "Εγχειρίδια ARM" κ.λπ.).

  4. Ολοκληρώστε ένα σεμινάριο λειτουργικού συστήματος. Τα σεμινάρια OS θα σας καθοδηγήσουν στη διαδικασία δημιουργίας ενός βασικού λειτουργικού συστήματος. Αυτό σας συνηθίζει στη διαδικασία και σας βοηθά να καταλάβετε εάν υπάρχουν κομμάτια που λείπουν. Μόλις ολοκληρώσετε ένα σεμινάριο ή δύο, θα είστε έτοιμοι να δημιουργήσετε το δικό σας λειτουργικό σύστημα.
    • Το Bare Bones είναι ένα σεμινάριο που σας βοηθά να γράψετε τον πρώτο σας απλό πυρήνα 32-bit. Αφού ολοκληρώσετε το σεμινάριο, το επόμενο βήμα είναι να χρησιμοποιήσετε το Meaty Skeleton για να δημιουργήσετε το δικό σας λειτουργικό σύστημα.
    • Το Linux from Scratch είναι ένα διαδικτυακό βιβλίο που σας καθοδηγεί στη δημιουργία του δικού σας λειτουργικού συστήματος Linux.
    • Τα λειτουργικά συστήματα από 0 έως 1 είναι ένα δωρεάν βιβλίο για τη δημιουργία διαφόρων λειτουργικών συστημάτων από την αρχή έως το τέλος.
  5. Βρείτε τους στόχους του λειτουργικού σας συστήματος. Τι θέλετε να κάνει το λειτουργικό σας σύστημα; Πώς πρέπει να φαίνεται; Χρειάζεστε πραγματικά να γράψετε ένα ολόκληρο λειτουργικό σύστημα ή θέλετε απλώς να δημιουργήσετε μια συγκεκριμένη εμφάνιση για την επιφάνεια εργασίας σας; Αυτά είναι όλα τα πράγματα που πρέπει να λάβετε υπόψη πριν αρχίσετε να κωδικοποιείτε.
    • Εξετάστε το ενδεχόμενο ανάπτυξης με μια ομάδα άλλων προγραμματιστών. Έχοντας μια ομάδα προγραμματιστών που εργάζονται στο έργο θα μειώσει σημαντικά το χρόνο ανάπτυξης.
    • Προσθέστε τους στόχους, τα σχέδια και τις ερωτήσεις του έργου σας στο δημόσιο αποθετήριό σας, ώστε να είναι εύκολο να σας βοηθήσουν άλλοι.

Μέρος 2 από 2: Δημιουργία του λειτουργικού σας συστήματος

  1. Επιλέξτε ένα περιβάλλον ανάπτυξης. Αυτή είναι η πλατφόρμα που θα χρησιμοποιείτε για να κωδικοποιήσετε το νέο λειτουργικό σας σύστημα. Είναι θέμα προσωπικής προτίμησης, αλλά οι περισσότεροι άνθρωποι χρησιμοποιούν Windows ή μια γεύση του UNIX. Εάν χρησιμοποιείτε Windows, είναι καλή ιδέα να εγκαταστήσετε ένα περιβάλλον UNIX όπως το Cygwin ή το MinGW. Γενικά, θα θέλατε να βεβαιωθείτε ότι οποιοδήποτε περιβάλλον χρησιμοποιείτε χρησιμοποιείτε τα εξής:
    • GCC (ο μεταγλωττιστής Gnu). Εάν χρησιμοποιείτε Windows, μπορείτε να τα εγκαταστήσετε στο Cygwin ή στο MinGW.
    • Το Binutils είναι μια συλλογή εργαλείων που χρησιμοποιούνται για το χειρισμό αρχείων αντικειμένων. Και πάλι, εάν χρησιμοποιείτε Windows, μπορείτε να τα εγκαταστήσετε στο Cygwin.
    • Ένας καλός συντάκτης κειμένου. Τα Vim και emacs χρησιμοποιούνται συνήθως σε περιβάλλοντα UNIX. Οι χρήστες των Windows μπορούν να χρησιμοποιήσουν το Σημειωματάριο ή να ελέγξουν το Σημειωματάριο ++ για αναβάθμιση πολλαπλών καρτελών.
    • Perl και / ή Python. Συνιστάται ένα ή και τα δύο για χειρισμό συμβολοσειρών.
  2. Ρυθμίστε το σύστημα ελέγχου έκδοσης. Η σύνταξη ενός λειτουργικού συστήματος σημαίνει ότι πιθανότατα δημιουργείτε εκατοντάδες (ή χιλιάδες!) Γραμμές κώδικα. Όταν εργάζεστε σε αναθεωρήσεις, αυτό μπορεί να προκαλέσει σύγχυση. Ορισμένες επιλογές για να δείτε είναι CVS, Mercurial και Subversion.
  3. Αποφασίστε για ένα bootloader. Εάν δεν θέλετε να δημιουργήσετε το δικό σας, μπορείτε να χρησιμοποιήσετε ένα υπάρχον όπως το Grand Unified Bootloader (GRUB). Εάν αισθάνεστε τολμηροί να κωδικοποιήσετε ένα bootloader, ρίξτε μια ματιά στο Rolling Your Own Bootloader στο OSDev.org.
  4. Επιλέξτε ένα σχέδιο πυρήνα. Ο πυρήνας είναι ο πυρήνας του λειτουργικού σας συστήματος, παρέχοντας μια διεπαφή μεταξύ του χρήστη και του υλικού του υπολογιστή. Υπάρχουν μονολιθικοί πυρήνες και μικροπυρήνες. Οι μονολιθικοί πυρήνες υλοποιούν όλες τις υπηρεσίες στον πυρήνα, ενώ οι μικροπυρήνες έχουν έναν μικρό πυρήνα σε συνδυασμό με υπηρεσίες εφαρμογής δαίμονες χρήστη. Γενικά, οι μονολιθικοί πυρήνες είναι γρηγορότεροι, αλλά οι μικροπυρήνες έχουν καλύτερη απομόνωση και αξιοπιστία σφαλμάτων
  5. Ξεκινήστε το μικρό. Ξεκινήστε με μικρά πράγματα, όπως εμφάνιση κειμένου και διακοπές πριν προχωρήσετε σε πράγματα όπως διαχείριση μνήμης και πολλαπλές εργασίες. Μπορείτε επίσης να δοκιμάσετε να δημιουργήσετε ένα απλό λειτουργικό σύστημα 16-bit, αντί να κάνετε ένα μεγάλο άλμα.
    • Δεν θα έχετε ένα πλήρες σύστημα σε δύο εβδομάδες. Ξεκινήστε με ένα λειτουργικό σύστημα που ξεκινά και, στη συνέχεια, προχωρήστε στα δροσερά πράγματα.
  6. Δοκιμάστε το νέο λειτουργικό σας σύστημα με μια εικονική μηχανή. Αντί να κάνετε επανεκκίνηση του υπολογιστή σας κάθε φορά που κάνετε αλλαγές ή πρέπει να μεταφέρετε τα αρχεία από τον υπολογιστή ανάπτυξης στον δοκιμαστικό σας υπολογιστή, χρησιμοποιήστε μια εφαρμογή εικονικής μηχανής. Το VMWare είναι μια κοινή επιλογή που λειτουργεί τόσο με Windows όσο και με Linux, και το ίδιο ισχύει και για τους Bochs. Ελέγξτε για πιθανά αδιέξοδα και άλλα σφάλματα και επιδιορθώστε τα όπως απαιτείται.
  7. Απελευθερώστε έναν "υποψήφιο απελευθέρωσης."Μπορείτε να το κάνετε αυτό ανεβάζοντας τον δοκιμασμένο κωδικό σας στο δημόσιο αποθετήριο σας. Αυτό θα επιτρέψει στους χρήστες να δοκιμάσουν το λειτουργικό σας σύστημα και να αναφέρουν τυχόν προβλήματα που αντιμετωπίζουν.
  8. Δίκτυο με άλλους προγραμματιστές λειτουργικού συστήματος. Υπάρχει μια ολόκληρη κοινότητα προγραμματιστών λειτουργικών συστημάτων που συγκεντρώνονται σε διάφορα φόρουμ, όπως το / r / osdev στο Reddit και το Software Engineering Stack Exchange. Καταλάβετε την ανάπτυξη ενός βασικού λειτουργικού συστήματος, διαβάστε τις υπάρχουσες αναρτήσεις για να δείτε τι είδους πράγματα εμφανίζονται κατά τη διαδικασία ανάπτυξης.

Ερωτήσεις και απαντήσεις κοινότητας



Μπορώ να το κάνω αυτό εάν δεν έχω εμπειρία προγραμματισμού;

Μόνο αν είστε πρόθυμοι να μάθετε πολλά. Θα χρειαστείτε πλήρη κατανόηση τουλάχιστον του κωδικού συναρμολόγησης και του κινήτρου για να μάθετε περισσότερα. Η δημιουργία του δικού σας λειτουργικού συστήματος δεν είναι μια μικρή εργασία.


  • Ποιο πρέπει να είναι το πρώτο μου βήμα;

    Μάθετε γλώσσες προγραμματισμού και έννοιες και εξασκηθείτε για να γίνετε ένας πολύ δυνατός προγραμματιστής.


  • Ποιες εφαρμογές μπορώ να χρησιμοποιήσω για τον προγραμματισμό του λειτουργικού μου συστήματος;

    Αυτό εξαρτάται από τη γλώσσα προγραμματισμού που χρησιμοποιείτε. Συνιστάται, ωστόσο, να χρησιμοποιήσετε ένα IDE ή ένα ολοκληρωμένο περιβάλλον ανάπτυξης, για να προγραμματίσετε το λειτουργικό σας σύστημα, καθώς τα IDE διαθέτουν ενσωματωμένα εργαλεία και δυνατότητες για να διευκολύνουν την ανάπτυξη. Ωστόσο, δεν υποστηρίζουν όλα τα IDE κάθε γλώσσα, επομένως θα θέλετε να αναζητήσετε συγκεκριμένα IDE που υποστηρίζουν τη γλώσσα (ή τις γλώσσες) που χρησιμοποιείτε.


  • Είναι η κωδικοποίηση του δικού μου πυρήνα καλύτερη από τη χρήση ενός υπάρχοντος πυρήνα;

    Η απόκτηση ενός πυρήνα ανοιχτού κώδικα είναι καλύτερη από την κωδικοποίηση ενός αν βρίσκεστε σε uni ή κάτι τέτοιο, επειδή δεν χρειάζεται να ξεκινήσετε από το μηδέν ή να το πληρώσετε, επειδή είναι ανοιχτού κώδικα. Ωστόσο, η κωδικοποίηση αποδεικνύει μια υψηλότερη γνώση στον προγραμματισμό, την οποία ίσως προτιμάτε.


  • Μπορώ να συγχωνεύσω τα λειτουργικά συστήματα Windows και Android;

    Μπορείτε, αλλά είναι και τα δύο διαφορετικά λειτουργικά συστήματα και θα απαιτούν μεγάλη εμπειρία προγραμματισμού και δουλειά. Επομένως, αν δεν μπορείτε να κάνετε τον προγραμματισμό, μην το δοκιμάσετε.


  • Πώς μπορώ να συγχωνεύσω λειτουργικά συστήματα Windows και Android;

    Τα Windows είναι ένα μη δομημένο λειτουργικό σύστημα, για να μην αναφέρουμε ότι δεν είναι ανοιχτού κώδικα, η προσθήκη λειτουργικότητας στα Windows είναι πολύ δύσκολη εργασία. Ενώ το Android μπορεί να θεωρηθεί ως παραλλαγή του Linux, ένα δομημένο και ανοιχτού κώδικα λειτουργικό σύστημα, η προσθήκη λειτουργικών επιπέδων είναι εύκολη, αλλά πάρα πολλά επίπεδα έχουν ως αποτέλεσμα κακή εμπειρία χρήστη. Επιστροφή στην ερώτηση, σίγουρα θα απαιτούσατε να έχετε εκτεταμένες γνώσεις για το Android (μπορείτε να δοκιμάσετε να μαγειρέψετε ένα Android ROM) και εσωτερική γνώση του πώς λειτουργούν ορισμένα βασικά στοιχεία των Windows, οπότε τι θα λάβετε μετά τη συγχώνευση αυτών των δύο λειτουργικών συστημάτων, θα το κάνει; να είστε δομημένοι ή μη δομημένοι, για να ξεκινήσετε; Υπάρχει υπερβολική ασάφεια!


  • Πόσος χρόνος θα χρειαζόταν για τη δημιουργία ενός νέου λειτουργικού συστήματος;

    Θα χρειαστούν μήνες, αν όχι χρόνια, για να φτιάξετε ένα λειτουργικό σύστημα που λειτουργεί σωστά με πολλές λειτουργίες. Δεν υπάρχει πιθανός τρόπος να μαγειρέψετε ένα λειτουργικό σύστημα σε λίγες εβδομάδες ή ημέρες.


  • Μπορώ να δημιουργήσω ένα λειτουργικό σύστημα χρησιμοποιώντας μόνο java;

    Ναι, κάποιος το έχει κάνει πριν. Ωστόσο, εάν θέλετε οι χρήστες να χρησιμοποιούν πραγματικά το λειτουργικό σας σύστημα, μην χρησιμοποιείτε Java. Όχι μόνο θα διαρκέσει πολύ, πολύ περισσότερο, αλλά επίσης δεν θα είναι τόσο καλό όσο ένα λειτουργικό σύστημα κατασκευασμένο από άλλη γλώσσα κωδικοποίησης. Μπορείτε, ναι, αλλά θα πρέπει; Πιθανώς όχι.


  • Ποιες είναι μερικές βασικές δεξιότητες για την ανάπτυξη ενός λειτουργικού συστήματος;

    Χρειάζεστε πολλές γνώσεις σχετικά με τη συναρμολόγηση και μια γλώσσα χαμηλού επιπέδου, όπως η C. Θα χρειαστείτε επίσης εκτεταμένες γνώσεις σχετικά με το χειρισμό μνήμης και θα πρέπει να είστε σε θέση να χειρίζεστε συνδέσεις με συσκευές και περιφερειακά.


  • Μπορείτε να μου δώσετε περισσότερες πληροφορίες σχετικά με τα γραφικά και από πού να ξεκινήσω;

    Μπορείτε να φτιάξετε μόνοι σας τα γραφικά και μπορείτε να ξεκινήσετε οποιαδήποτε στιγμή και σε οποιοδήποτε μέρος θέλετε. Το μόνο που χρειάζεστε είναι κάποια γνώση προγραμματισμού και κάποιο λογισμικό για να το προγραμματίσετε. Εάν δεν είστε σίγουροι τι να κάνετε, μπορεί να σας βοηθήσει να κάνετε ένα διαδικτυακό σεμινάριο με μέρη όπως το Code Academy ή το Khan Academy.

  • Συμβουλές

    • Φροντίστε να εφαρμόσετε τις λειτουργίες ασφαλείας ως κορυφαία προτεραιότητά σας εάν θέλετε ποτέ το σύστημά σας να είναι βιώσιμο.
    • Αφού ολοκληρωθεί η ανάπτυξη, αποφασίστε εάν θέλετε να αποδεσμεύσετε τον κώδικα ως ανοιχτού κώδικα ή ιδιόκτητο.
    • Για να μπορέσει ένα λειτουργικό σύστημα να χειριστεί πολλούς επεξεργαστές, ο Διαχειριστής Μνήμης πρέπει να διαθέτει μηχανισμούς "κλειδώματος" για να αποτρέψει την πρόσβαση πολλών επεξεργαστών στον ίδιο πόρο ταυτόχρονα. Οι "κλειδαριές" που χρησιμοποιούνται για αυτό θα απαιτήσουν την παρουσία ενός χρονοπρογραμματιστή για να βεβαιωθείτε ότι μόνο ένας επεξεργαστής έχει πρόσβαση σε έναν κρίσιμο πόρο ανά πάσα στιγμή και ότι όλοι οι άλλοι είναι έτοιμοι να περιμένουν. Ωστόσο, ο προγραμματιστής εξαρτάται από την παρουσία ενός Διαχειριστή Μνήμης. Πρόκειται για περίπτωση εξάρτησης από αδιέξοδο. Δεν υπάρχει τυπικός τρόπος για την επίλυση προβλημάτων όπως αυτό. ως προγραμματιστής, θα πρέπει να είστε αρκετά ειδικευμένοι ώστε να καταλάβετε τον δικό του τρόπο αντιμετώπισης.
    • Ένα λειτουργικό σύστημα μπορεί επίσης να είναι φιλικό προς τον χρήστη. Φροντίστε να προσθέσετε φιλικές προς το χρήστη δυνατότητες, καθιστώντας αυτές αναπόσπαστο μέρος του σχεδιασμού σας.
    • Μην συμμετέχετε τα φόρουμ OSDev.org και αρχίστε να κάνετε προφανείς ερωτήσεις. Θα καταλήξει απλά "Διαβάστε το εγχειρίδιο" απαντήσεις. Θα πρέπει να δοκιμάσετε να διαβάσετε τη Wikipedia και τα εγχειρίδια για τα διάφορα εργαλεία που θέλετε να χρησιμοποιήσετε.
    • Μην ξεκινάς ένα έργο λειτουργικού συστήματος για να ξεκινήσει η εκμάθηση του προγραμματισμού. Εάν δεν γνωρίζετε ήδη C, C ++, Pascal ή κάποια άλλη κατάλληλη γλώσσα από έξω, όπως χειρισμός δείκτη, χειρισμός bit χαμηλού επιπέδου, αλλαγή bit, γλώσσα ενσωματωμένης συναρμολόγησης κ.λπ., δεν είστε έτοιμοι για ανάπτυξη λειτουργικού συστήματος .
    • Εάν κάνετε κάτι ανεπιθύμητο, όπως γράψτε τυχαία byte σε τυχαίες θύρες εισόδου / εξόδου, θα διακόψετε το λειτουργικό σας σύστημα και μπορείτε (θεωρητικά) να τηγανίσετε το υλικό σας.

    Ο συντάκτης αυτού του άρθρου είναι ο Nate avage. Ο Nate avage είναι επαγγελματίας κιθαρίστας με περισσότερα από 16 χρόνια εμπειρίας στη διδασκαλία κιθάρας σε μαθητές σε όλο τον κόσμο. Το κανάλι του στ...

    Αυτό το άρθρο γράφτηκε με τη συνεργασία των εκδοτών μας και ειδικευμένων ερευνητών για να εγγυηθεί την ακρίβεια και την πληρότητα του περιεχομένου. Η ομάδα διαχείρισης περιεχομένου της εξετάζει προσεκ...

    Η Μεγαλύτερη Ανάγνωση