Τι είναι τα κομμένα τμήματα android. Εσωτερική συσκευή συστημάτων Android

  Έχετε αναρωτηθεί ποτέ πόσο fastboot ή ADB λειτουργεί; Ή γιατί ένα smartphone κάτω από με Android  σχεδόν αδύνατο να μετατραπεί σε τούβλο; Ή μήπως έχετε ήθελε πολύ καιρό να μάθετε πού βρίσκεται η μαγεία του Xposed framework και γιατί χρειάζεστε τα /system/etc/init.d scripts εκκίνησης; Τι γίνεται με την κονσόλα αποκατάστασης; Είναι αυτό το μέρος του Android ή το πράγμα από μόνο του και γιατί να το εγκαταστήσετε υλικολογισμικό τρίτου κατασκευαστή  η τακτική ανάκτηση δεν ταιριάζει; Απαντήσεις σε όλα αυτά και πολλές άλλες ερωτήσεις που θα βρείτε σε αυτό το άρθρο.

Πώς λειτουργεί το Android

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

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

Βήμα πρώτο. ABOOT και πίνακα κατατμήσεων

  Όλα αρχίζουν με τον κύριο φορτωτή. Μετά την ενεργοποίηση, το σύστημα εκτελεί τον κώδικα εκκίνησης που έχει καταγραφεί στη μόνιμη μνήμη της συσκευής. Στη συνέχεια μεταφέρει τον έλεγχο στον bootloader aboot με ενσωματωμένη υποστήριξη για το πρωτόκολλο fastboot, αλλά ο κατασκευαστής του κινητού τσιπ ή του smartphone / tablet έχει το δικαίωμα να επιλέξει οποιοδήποτε άλλο bootloader στη γεύση του. Για παράδειγμα, η εταιρεία Rockchip χρησιμοποιεί τη δική της, ασύμβατη με το bootloader fastboot, για τον επαναπρογραμματισμό και τον έλεγχο ποιος πρέπει να χρησιμοποιήσει ιδιόκτητα εργαλεία.

Το πρωτόκολλο γρήγορης εκκίνησης, με τη σειρά του, είναι ένα σύστημα διαχείρισης του φορτωτή εκκίνησης για υπολογιστή που σας επιτρέπει να εκτελέσετε τέτοιες ενέργειες όπως το ξεκλείδωμα του bootloader, το αναβοσβήσιμο του νέου πυρήνα και της ανάκτησης, την εγκατάσταση του υλικολογισμικού και πολλά άλλα. Το νόημα της ύπαρξης fastboot είναι να είναι σε θέση να αποκαταστήσει το smartphone στην αρχική του κατάσταση σε μια κατάσταση όπου όλα τα άλλα μέσα δεν λειτουργούν. Το Fastboot θα παραμείνει στη θέση του, ακόμα και αν, ως αποτέλεσμα πειραμάτων, θα διαγράψετε από το smartphone όλα τα τμήματα μνήμης NAND που περιέχουν Android και ανάκτηση.

Αφού λάβει τον έλεγχο, το aboot ελέγχει τον πίνακα διαμερισμάτων και μεταφέρει τον έλεγχο στον πυρήνα που είναι ραμμένο στο τμήμα που ονομάζεται εκκίνηση, μετά από το οποίο ο πυρήνας αποσπά μια μνήμη RAM από το ίδιο διαμέρισμα στη μνήμη και ξεκινά τη λήψη του Android ή της κονσόλας ανάκτησης. Η μνήμη NAND σε συσκευές Android χωρίζεται σε έξι υποχρεωτικά τμήματα:

  • boot - περιέχει έναν πυρήνα και έναν δίσκο RAM, συνήθως περίπου 16 MB σε μέγεθος.
  • recovery - recovery console, αποτελείται από έναν πυρήνα, ένα σύνολο εφαρμογών κονσόλας και ένα αρχείο ρυθμίσεων, μεγέθους 16 MB.
  • σύστημα - περιέχει Android, σε σύγχρονες συσκευές έχει μέγεθος τουλάχιστον 1 GB?
  • cache - έχει σχεδιαστεί για την αποθήκευση αποθηκευμένων δεδομένων, χρησιμοποιείται επίσης για την αποθήκευση του υλικολογισμικού κατά την ενημέρωση OTA και συνεπώς έχει μέγεθος παρόμοιο με το μέγεθος του διαμερίσματος του συστήματος.
  • userdata - περιέχει ρυθμίσεις, εφαρμογές και δεδομένα χρήστη, παρέχεται όλο το υπόλοιπο χώρο μνήμης NAND.
  • misc - περιέχει μια σημαία που καθορίζει με ποιον τρόπο θα πρέπει να εκκινήσει το σύστημα: Android ή ανάκτηση.
Εκτός από αυτά, μπορεί να υπάρχουν και άλλα τμήματα, αλλά η συνολική σήμανση καθορίζεται στο στάδιο σχεδιασμού του smartphone και, στην περίπτωση του aboot, είναι ραμμένη στον κώδικα του φορτωτή. Αυτό σημαίνει ότι: 1) ο πίνακας διαμερισμάτων δεν μπορεί να σκοτωθεί, δεδομένου ότι μπορεί πάντα να αποκατασταθεί χρησιμοποιώντας την εντολή "fastboot". 2) για να αλλάξετε τον πίνακα κατατμήσεων, θα πρέπει να ξεκλειδώσετε και να επαναφέρετε τον bootloader με τις νέες παραμέτρους. Από τον κανόνα αυτό, ωστόσο, υπάρχουν εξαιρέσεις. Για παράδειγμα, ο ίδιος φορτωτής εκκίνησης Rockchip αποθηκεύει πληροφορίες σχετικά με κατατμήσεις στο πρώτο μπλοκ της μνήμης NAND, οπότε δεν χρειάζεται να αναβοσβήνει ένας bootloader για να το αλλάξει.

Μέρος του κώδικα φορτωτή που ορίζει τον πίνακα διαμερισμάτων


Ιδιαίτερα ενδιαφέρον τμήμα misc. Υπάρχει μια υπόθεση ότι αρχικά δημιουργήθηκε για να αποθηκεύσει διάφορες ρυθμίσεις ανεξάρτητα από το κύριο σύστημα, αλλά αυτή τη στιγμή χρησιμοποιείται μόνο για ένα σκοπό: πείτε στον bootloader το partition για να φορτώσει το σύστημα από - εκκίνηση ή ανάκτηση. Αυτή η λειτουργία, ειδικότερα, χρησιμοποιεί την εφαρμογή ROM Manager για την αυτόματη επανεκκίνηση του συστήματος στην αποκατάσταση με την αυτόματη εγκατάσταση του υλικολογισμικού. Στη βάση του, δημιουργείται ένας διπλός μηχανισμός. boot ubuntu  Αγγίξτε αυτό που ξεπλένει Φορτωτής Ubuntu  στην ανάκτηση και σας επιτρέπει να ελέγξετε ποιο σύστημα θα φορτωθεί την επόμενη φορά. Stehr misc section - Το Android είναι φορτωμένο, γεμάτο με δεδομένα - η ανάκτηση γίνεται ... δηλαδή, το Ubuntu Touch.

Βήμα δεύτερο. Τμήμα εκκίνησης

  Εάν το τμήμα misc δεν έχει τη σημαία εκκίνησης στην ανάκτηση, το aboot μεταφέρει τον έλεγχο στον κώδικα που βρίσκεται στην ενότητα εκκίνησης. Δεν είναι τίποτα σαν τον πυρήνα του Linux. βρίσκεται στην αρχή του τμήματος και αμέσως ακολουθείται από μια εικόνα δίσκου RAM, γεμάτη με αρχεία cpio και gzip που περιέχουν τους απαραίτητους καταλόγους για το Android, το init init system και άλλα εργαλεία. Όχι σύστημα αρχείων  δεν υπάρχει διαμέρισμα εκκίνησης, ο πυρήνας και ο δίσκος RAM ακολουθούν απλά το ένα το άλλο. Τα περιεχόμενα του δίσκου RAM είναι:

  • Κατάλογος δεδομένων για την τοποθέτηση του τμήματος με το ίδιο όνομα.
  • dev - αρχεία συσκευών.
  • proc - procfs τοποθετείται εδώ.
  • res - ένα σύνολο εικόνων για φορτιστή (βλ. παρακάτω).
  • sbin - ένα σύνολο εργαλείων χρησιμότητας και δαίμονες (adbd, για παράδειγμα).
  • sys - sysfs τοποθετείται εδώ.
  • σύστημα - κατάλογος για την τοποθέτηση του διαμερίσματος του συστήματος?
  • φορτιστής - μια εφαρμογή για την εμφάνιση της διαδικασίας φόρτισης.
  • build.prop - ρυθμίσεις συστήματος
  • init - σύστημα προετοιμασίας.
  • init.rc - ρυθμίσεις συστήματος προετοιμασίας.
  • ueventd.rc - Ρυθμίσεις για τον νεκρό δαίμονα που είναι μέρος του init.
Αυτό, αν το λέω, είναι ο σκελετός του συστήματος: ένα σύνολο καταλόγων για τη σύνδεση συστημάτων αρχείων από κατατμήσεις μνήμης NAND και ένα σύστημα προετοιμασίας που θα κάνει το υπόλοιπο έργο για τη φόρτωση του συστήματος. Το κεντρικό στοιχείο εδώ είναι η εφαρμογή init και η config του init.rc, την οποία θα συζητήσω λεπτομερέστερα αργότερα. Εν τω μεταξύ, θέλω να επιστήσω την προσοχή στο φορτιστή αρχείων και στο ueventd.rc, καθώς και στους καταλόγους sbin, proc και sys.

Το αρχείο φορτιστή είναι μια μικρή εφαρμογή της οποίας μόνο η εργασία είναι να εμφανίσει το εικονίδιο της μπαταρίας. Δεν έχει καμία σχέση με το Android και χρησιμοποιείται όταν η συσκευή είναι συνδεδεμένη στο φορτιστή σε κατάσταση εκτός λειτουργίας. Σε αυτήν την περίπτωση, το Android δεν εκκινεί και το σύστημα φορτώνει απλά τον πυρήνα, συνδέει το δίσκο RAM και ξεκινά το φορτιστή. Το τελευταίο εμφανίζει το εικονίδιο μπαταρίας, η εικόνα του οποίου σε όλες τις πιθανές καταστάσεις αποθηκεύεται σε κανονικά αρχεία PNG μέσα στον κατάλογο res.

Το αρχείο ueventd.rc είναι ένα αρχείο ρυθμίσεων που καθορίζει ποια αρχεία συσκευών στον κατάλογο sys πρέπει να δημιουργηθούν κατά τη διάρκεια της φάσης εκκίνησης του συστήματος. Στο πυρήνα Συστήματα Linux  το υλικό είναι προσβάσιμο μέσω ειδικών αρχείων μέσα στον κατάλογο dev, και ο δαίμονας ueventd, ο οποίος είναι μέρος του init, είναι υπεύθυνος για τη δημιουργία τους στο Android. Σε μια κανονική κατάσταση, λειτουργεί αυτόματα, δεχόμενη εντολές για τη δημιουργία αρχείων από τον πυρήνα, αλλά ορισμένα αρχεία πρέπει να δημιουργηθούν ανεξάρτητα. Εμφανίζονται στο ueventd.rc.

Ο κατάλογος sbin στο απόθεμα Android δεν περιέχει συνήθως τίποτα άλλο από adbd, δηλαδή τον δαίμονα ADB, ο οποίος είναι υπεύθυνος για την αποσφαλμάτωση του συστήματος από έναν υπολογιστή. Ξεκινά σε ένα πρώιμο στάδιο φόρτωσης του λειτουργικού συστήματος και σας επιτρέπει να εντοπίσετε πιθανά προβλήματα  στο στάδιο της αρχικοποίησης του λειτουργικού συστήματος. Στο προσαρμοσμένο υλικολογισμικό αυτού του καταλόγου, μπορείτε να βρείτε μια δέσμη άλλων αρχείων, για παράδειγμα mke2fs, τα οποία μπορεί να απαιτούνται εάν τα διαμερίσματα πρέπει να επαναδιαμορφωθούν σε ext3 / 4. Επίσης, τα modery τοποθετούνται συχνά στο BusyBox, με τα οποία μπορείτε να καλείτε εκατοντάδες εντολές Linux.

Ο κατάλογος proc για το Linux είναι στάνταρ · στα επόμενα στάδια της φόρτωσης init, θα συνδεθεί με το procfs, ένα εικονικό σύστημα αρχείων που παρέχει πρόσβαση σε πληροφορίες σχετικά με όλες τις διαδικασίες στο σύστημα. Το σύστημα θα συνδεθεί με το sys directory sys, το οποίο ανοίγει πρόσβαση σε πληροφορίες σχετικά με το υλικό και τις ρυθμίσεις του. Χρησιμοποιώντας sysfs, μπορείτε, για παράδειγμα, να στείλετε μια συσκευή σε ύπνο ή να αλλάξετε τον αλγόριθμο εξοικονόμησης ενέργειας που χρησιμοποιείται.

Το αρχείο build.prop έχει σχεδιαστεί για να αποθηκεύει χαμηλό επίπεδο Ρυθμίσεις Android. Αργότερα, το σύστημα θα επαναφέρει αυτές τις ρυθμίσεις και θα τις αντικαταστήσει με τιμές από το μη διαθέσιμο αρχείο συστήματος / build.prop.

Το τμήμα ρίζας του αποκωδικοποιητή OUYA


Βήμα δεύτερο, εναλλακτική λύση. Τμήμα ανάκτησης

Σε αυτή την περίπτωση, εάν η σημαία εκκίνησης ανάκαμψη στην ενότητα Διάφορα εγκατασταθεί ή ο χρήστης έχει ενεργοποιήσει το smartphone ενώ κρατάτε πατημένο το πλήκτρο Volume Down, aboot θα περάσει κωδικό ελέγχου που βρίσκεται στην αρχή του διαμερίσματος ανάκτησης. Όπως η ενότητα εκκίνησης, περιέχει έναν πυρήνα και έναν δίσκο RAM, ο οποίος αποσυσκευάζεται στη μνήμη και γίνεται η ρίζα του συστήματος αρχείων. Ωστόσο, τα περιεχόμενα του δίσκου RAM είναι κάπως διαφορετικά εδώ.

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

Στην κανονική αποθεματοποίηση υπάρχουν συνήθως τρεις μόνο λειτουργίες: εγκατάσταση κλειδιού που έχει υπογραφεί από τον κατασκευαστή του smartphone, σβήσιμο και επανεκκίνηση. Η τροποποιημένη ανάκτηση τρίτου μέρους, όπως το ClockworkMod και το TWRP, διαθέτει πολύ περισσότερα. Ξέρουν πώς να διαμορφώσετε το σύστημα αρχείων, την εγκατάσταση του firmware, που υπογράφεται από κάθε κλειδί (διάβαζε: custom), τοποθετήστε το σύστημα αρχείων για τα άλλα τμήματα (για να εντοπίσετε το λειτουργικό σύστημα) και περιλαμβάνουν υποστήριξη για τα σενάρια που μπορεί να αυτοματοποιήσει τη διαδικασία της firmware και πολλά άλλα χαρακτηριστικά.

Για παράδειγμα, χρησιμοποιώντας δέσμες ενεργειών, μπορείτε να βεβαιωθείτε ότι μετά τη φόρτωση, η επαναφορά εντοπίζει αυτόματα στην κάρτα μνήμης απαιτείται υλικολογισμικό, να τα εγκαταστήσετε και να επανεκκινήσετε στο Android. Αυτή η λειτουργία χρησιμοποιείται από τα εργαλεία ROM Manager, auto-flasher, καθώς και από τον μηχανισμό αυτόματης ενημέρωσης του CyanogenMod και άλλου υλικολογισμικού.

Η προσαρμοσμένη ανάκτηση υποστηρίζει επίσης δέσμες ενεργειών δημιουργίας αντιγράφων ασφαλείας που βρίσκονται στον κατάλογο /system/addon.d/. Πριν ανάκτηση υλικολογισμικού  ελέγχει για την παρουσία σεναρίων και τις εκτελεί πριν κάνει το υλικολογισμικό. Χάρη σε αυτά τα scripts, οι gapps δεν εξαφανίζονται μετά την εγκατάσταση μιας νέας έκδοσης υλικολογισμικού.

Βήμα τρίτο. Αρχικοποίηση

  Έτσι, λαμβάνει διαχείρισης, πυρήνας συνδέει προετοιμασίας RAM-δίσκο και τον τερματισμό όλων των υποσυστημάτων και οδηγών ξεκινά η διαδικασία init, η οποία ξεκινά με την προετοιμασία του Android. Όπως είπα, έχει αρχίσει αρχείο ρυθμίσεων init.rc, από την οποία η διαδικασία μαθαίνει για το τι ακριβώς πρέπει να κάνει για να αυξήσει το σύστημα. Στα σύγχρονα smartphones, το config έχει ένα εντυπωσιακό μήκος αρκετών εκατοντάδων γραμμών και είναι επίσης εξοπλισμένο με ένα τρέιλερ με πολλές θυγατρικές θυγατρικές που συνδέονται με το κύριο με τη βοήθεια της οδηγίας εισαγωγής. Παρ 'όλα αυτά, η μορφή του είναι αρκετά απλή και στην πραγματικότητα είναι ένα σύνολο εντολών, χωρισμένο σε μπλοκ.

Κάθε μπλοκ καθορίζει το στάδιο φόρτωσης ή, στη γλώσσα των προγραμματιστών Android, μια ενέργεια. Τα μπλοκ διαχωρίζονται το ένα από το άλλο από την οδηγία, ακολουθούμενη από το όνομα της δράσης, για παράδειγμα, στην αρχή της πρώτης φάσης ή στο post-fs. Το μπλοκ εντολών θα εκτελεστεί μόνο αν πυροδοτηθεί η σκανδάλη του ίδιου ονόματος. Καθώς ξεκινάει η εκκίνηση, το init θα ενεργοποιήσει εκ νέου τα αρχικά init, init, early-fs, fs, post-fs, early boot και boot ενεργοποιώντας έτσι τα κατάλληλα μπλοκ εντολών.

Μέρος του config του init.rc από το CyanogenMod


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

Το πιο αξιοσημείωτο από τα πρόσθετα configs ονομάζεται initrc.name_device.rc, όπου το όνομα της συσκευής καθορίζεται αυτόματα με βάση το περιεχόμενο της μεταβλητής συστήματος ro.hardware. Πρόκειται για ένα αρχείο διαμόρφωσης συγκεκριμένης πλατφόρμας που περιέχει μπλοκ εντολών ειδικά για μια συγκεκριμένη συσκευή. Εκτός από τις εντολές που είναι υπεύθυνες για τον συντονισμό του πυρήνα, περιέχει επίσης την ακόλουθη εντολή:

mount_all ./fstab.device_name

Σημαίνει ότι τώρα το init θα πρέπει να τοποθετήσει όλα τα συστήματα αρχείων που αναφέρονται στην ./fstab.device_name, η οποία έχει την ακόλουθη δομή:

όνομα_συσκευής (από το τμήμα) mount_point file_system option_fs άλλες επιλογές

Συνήθως περιέχει οδηγίες για τη σύνδεση αρχείων αρχείων από εσωτερικές κατατμήσεις NAND στους καταλόγους / system (OS), / data (settings application) και / cache (cached data). Ωστόσο, αλλάζοντας ελαφρώς αυτό το αρχείο, μπορούμε να αναγκάσουμε το init να εκκινήσει το σύστημα από την κάρτα μνήμης. Αρκεί να χωρίσετε την κάρτα μνήμης σε τρία τμήματα: 1 Gb / ext4, 2 Gb / ext4, 1 Gb / ext4 και το υπόλοιπο διάστημα32. Στη συνέχεια, πρέπει να προσδιορίσετε τα ονόματα των τμημάτων της κάρτας μνήμης στον κατάλογο / dev (για διαφορετικές συσκευές  διαφέρουν) και να αντικαταστήσει τα αρχικά ονόματα συσκευών στο αρχείο fstab.

Τυπικά περιεχόμενα αρχείου fstab


  Στο τέλος του μπλοκ init εκκίνησης, πιθανότατα θα συναντήσετε την εντολή class_start default, η οποία θα σας ενημερώσει ότι στη συνέχεια πρέπει να ξεκινήσετε όλες τις υπηρεσίες που παρατίθενται στο config που σχετίζονται με την προεπιλεγμένη κλάση. Η περιγραφή των υπηρεσιών αρχίζει με την οδηγία υπηρεσίας, ακολουθούμενη από το όνομα της υπηρεσίας και την εντολή που πρέπει να εκτελεστεί για να την ξεκινήσει. Σε αντίθεση με τις εντολές που εμφανίζονται στα μπλοκ, οι υπηρεσίες θα πρέπει να λειτουργούν όλη την ώρα, οπότε καθ 'όλη τη διάρκεια ζωής του smartphone, το init θα κρεμάσει στο παρασκήνιο και θα το παρακολουθήσει.

Το σύγχρονο Android περιλαμβάνει δεκάδες υπηρεσίες, αλλά δύο από αυτές έχουν μια ειδική κατάσταση και ορίζουν ολόκληρο τον κύκλο ζωής του συστήματος.

Βήμα τέσσερα. Zygote και app_process

  Σε ένα ορισμένο στάδιο φόρτωσης, το init θα συναντήσει στο τέλος του config κάτι σαν αυτή τη μονάδα:

υπηρεσία zygote / system / bin / app_process -Xzygote / system / bin -yygote -start-system-server
   class default
   πρίζα zygote ρεύματος 660 ριζικό σύστημα
   onrestart εγγραφή / sys / android_power / request_state αφύπνιση
   onrestart εγγραφή / sys / power / κατάσταση on
   onrestartart
   onrestart επανεκκίνηση netd

Αυτή είναι μια περιγραφή της υπηρεσίας Zygote, βασικού στοιχείου οποιουδήποτε συστήματος Android που είναι υπεύθυνο για την αρχικοποίηση, την εκκίνηση των υπηρεσιών του συστήματος, την εκκίνηση και τη διακοπή των εφαρμογών των χρηστών και πολλές άλλες εργασίες. Το Zygote ξεκινάει χρησιμοποιώντας μια μικρή εφαρμογή / system / bin / app_process, η οποία μπορεί να δει πολύ καλά στο κομμάτι του παραπάνω config. Η εργασία app_proccess είναι να ξεκινήσει η εικονική μηχανή Dalvik, του οποίου ο κώδικας βρίσκεται στην κοινή βιβλιοθήκη /system/lib/libandroid_runtime.so και, στη συνέχεια, τρέξτε το Zygote πάνω από αυτό.

Όταν όλα αυτά γίνουν και ο Zygote παίρνει τον έλεγχο, αρχίζει να χτίζει το περιβάλλον εκτέλεσης των εφαρμογών Java φορτώνοντας όλες τις τάξεις Java του πλαισίου (τώρα υπάρχουν πάνω από 2000 από αυτές). Στη συνέχεια ξεκινά το system_server, το οποίο περιλαμβάνει τις περισσότερες από τις υπηρεσίες συστήματος υψηλού επιπέδου (γραμμένο σε Java), συμπεριλαμβανομένου του Window Manager, της Γραμμής κατάστασης, του Διαχειριστή Συσκευασιών και, κυρίως, του Διαχειριστή Δραστηριοτήτων, ο οποίος στο μέλλον θα είναι υπεύθυνος για τη λήψη σημάτων έναρξης και λήξης εφαρμογών.

Μετά από αυτό, ο Zygote ανοίγει την υποδοχή / dev / socket / zygote και πηγαίνει για ύπνο, περιμένοντας τα δεδομένα. Προς το παρόν, ο προωθούμενος υπεύθυνος διαχείρισης δραστηριότητας αποστέλλει την πρόθεση της εκπομπής intentionCATEGORY_HOME για να βρει την εφαρμογή που είναι υπεύθυνη για τη δημιουργία της επιφάνειας εργασίας και της δίνει το όνομα Zygote μέσω μιας υποδοχής. Ο τελευταίος, με τη σειρά του, πιέζει και τρέχει την εφαρμογή στην κορυφή της εικονικής μηχανής. Voila, έχουμε μια επιφάνεια εργασίας στην οθόνη, έναν εντοπισμένο Διαχειριστή δραστηριότητας και ένα τρέχον Zygote και μια γραμμή κατάστασης, που ξεκίνησε από το system_server μέσα στην υπηρεσία Status Bar. Αφού αγγίξετε το εικονίδιο, η επιφάνεια εργασίας θα στείλει μια πρόθεση με το όνομα αυτής της εφαρμογής, θα γίνει δεκτή από τον Διαχειριστή δραστηριότητας και θα στείλει μια εντολή για να ξεκινήσει η εφαρμογή στον δαίμονα Zygote

Όλα αυτά μπορεί να μοιάζουν κάπως ακατανόητα, αλλά το πιο σημαντικό είναι να θυμόμαστε τρία απλά πράγματα:

Υπηρεσίες συστημάτων και πυρήνα πυρήνα


Συμπεράσματα

  Με πολλούς τρόπους, το Android είναι πολύ διαφορετικό από άλλα λειτουργικά συστήματα, και είναι αδύνατο να το καταλάβω. Ωστόσο, αν καταλάβετε πώς όλα λειτουργούν, υπάρχουν απλώς ατελείωτες δυνατότητες. Σε αντίθεση με το iOS και το Windows τηλέφωνο, το λειτουργικό σύστημα της Google διαθέτει μια πολύ ευέλικτη αρχιτεκτονική που σας επιτρέπει να αλλάζετε σοβαρά τη συμπεριφορά της χωρίς να χρειάζεται να γράφετε κώδικα. Στις περισσότερες περιπτώσεις, αρκεί να διορθώσετε τις απαραίτητες ρυθμίσεις και σενάρια.
middleware, είναι ένα σύνολο βιβλιοθηκών (Βιβλιοθήκες), που έχουν σχεδιαστεί για την επίλυση κοινών προβλημάτων που απαιτούν υψηλή απόδοση. Δηλαδή, αυτό το επίπεδο είναι υπεύθυνο για την παροχή εφαρμοσμένων αλγορίθμων για υψηλότερα επίπεδα, υποστηρίζοντας μορφές αρχείων, πληροφορίες κωδικοποίησης και αποκωδικοποίησης (για παράδειγμα, κωδικοποιητές πολυμέσων), γραφικά σχεδίασης και πολλά άλλα. Οι βιβλιοθήκες υλοποιούνται στο C / C ++ και καταρτίζονται για συγκεκριμένα υλικού  συσκευές με τις οποίες παρέχονται από τον κατασκευαστή σε προκαθορισμένη μορφή.

Ακολουθούν ορισμένες βιβλιοθήκες χαμηλού επιπέδου:

  1. Surface Manager - Το Android χρησιμοποιεί ένα σύνθετο διαχειριστή παραθύρων, όπως το Compiz (Linux), αλλά πιο πρωτόγονο. Αντί να σχεδιάζει γραφικά απευθείας στο buffer της οθόνης, το σύστημα στέλνει εισερχόμενες εντολές σχεδίασης στο buffer-over, όπου συσσωρεύεται μαζί με άλλους, συνθέτει μια συγκεκριμένη σύνθεση και στη συνέχεια εμφανίζεται στον χρήστη στην οθόνη. Αυτό επιτρέπει στο σύστημα να δημιουργήσει ενδιαφέροντα απρόσκοπτα εφέ, να συνειδητοποιήσει τη διαφάνεια των παραθύρων και τις ομαλές μεταβάσεις.
  2. Media Framework - βιβλιοθήκες που υλοποιούνται με βάση το OpenCORE PacketVideo. Με τη βοήθειά τους, το σύστημα μπορεί να καταγράφει και να αναπαράγει δεδομένα ήχου και εικόνας, καθώς και να παράγει στατικές εικόνες. Υποστηρίζονται πολλές δημοφιλείς μορφές, όπως MPEG4, H.264, MP3, AAC, AMR, JPG και PNG. Στο μέλλον, το OpenCORE θα αντικατασταθεί από ένα απλούστερο πλαίσιο, το Stagefright.
  3. Το SQLite είναι ένας ελαφρύς και παραγωγικός μηχανισμός σχεσιακής βάσης δεδομένων που χρησιμοποιείται στο Android ως ο κύριος μηχανισμός βάσης δεδομένων.
  4. 3D βιβλιοθήκες - χρησιμοποιούνται για εξαιρετικά βελτιστοποιημένα 3D γραφικά, χρησιμοποιώντας επιτάχυνση υλικού όπου είναι δυνατόν. Οι υλοποιήσεις τους βασίζονται στο OpenGL ES 1.0 API.
  5. Το FreeType είναι μια βιβλιοθήκη για εργασία με bitmaps, καθώς και για rasterizing γραμματοσειρές και εκτέλεση λειτουργιών σε αυτά. Πρόκειται για μια μηχανή υψηλής ποιότητας για γραμματοσειρές και εμφάνιση κειμένου.
  6. LibWebCore - Βιβλιοθήκες του γνωστού μηχανισμού περιήγησης WebKit, που χρησιμοποιείται επίσης σε προγράμματα περιήγησης για επιφάνεια εργασίας Google Chrome  και το Safari της Apple.
  7. SGL (Skia Graphics Engine) - ανοικτός κινητήρας για εργασία με γραφικά 2D. Η βιβλιοθήκη γραφικών είναι προϊόν της Google και χρησιμοποιείται συχνά σε άλλα προγράμματα.
  8. Οι βιβλιοθήκες SSL υποστηρίζουν το ίδιο κρυπτογραφικό πρωτόκολλο με βάση το OpenSSL.
  9. libc είναι μια βιβλιοθήκη τυπικών κλήσεων γλώσσας C, ένα ανάλογο του glibc (GNU libc από το Linux) για μικρές συσκευές. Ονομάζεται Bionic.


Το Σχ. 1.5.

Στο ίδιο επίπεδο βρίσκεται το περιβάλλον χρόνου εκτέλεσης εφαρμογών Android Runtime. Τα βασικά συστατικά του είναι ένα σύνολο τυποποιημένων βιβλιοθηκών και εικονική μηχανή Dalvik. Κάθε εφαρμογή στο Android OS τρέχει στο δικό της αντίγραφο της εικονικής μηχανής Dalvik. Έτσι, όλες οι διεργασίες που εκτελούνται απομονώνονται από το λειτουργικό σύστημα και το ένα από το άλλο. Η αρχιτεκτονική του Android Runtime είναι τέτοια ώστε η εργασία των προγραμμάτων πραγματοποιείται αυστηρά στο πλαίσιο του περιβάλλοντος εικονικής μηχανής. Εξαιτίας αυτού, ο πυρήνας του λειτουργικού συστήματος προστατεύεται από πιθανές βλάβες από τα άλλα στοιχεία του. Ως εκ τούτου, ο κώδικας με σφάλματα ή κακόβουλο λογισμικό δεν θα είναι σε θέση να χαλάσει το λειτουργικό σύστημα Android και τη συσκευή με βάση αυτό. Μια τέτοια προστατευτική λειτουργία, μαζί με την εκτέλεση του κώδικα, είναι ένα από τα κλειδιά για το Android Runtime.

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

  1. Ένα πλούσιο και επεκτάσιμο σύνολο προβολών (προβολών) που μπορούν να χρησιμοποιηθούν για τη δημιουργία οπτικών στοιχείων εφαρμογών, όπως λίστες, πεδία κειμένου, πίνακες, κουμπιά ή ακόμα και ενσωματωμένο πρόγραμμα περιήγησης ιστού.
  2. Παροχείς περιεχομένου που διαχειρίζονται δεδομένα που ορισμένες εφαρμογές ανοίγουν σε άλλους ώστε να μπορούν να τα χρησιμοποιήσουν για την εργασία τους.
  3. Ένας διαχειριστής πόρων (Resource Manager) που παρέχει πρόσβαση σε πόρους που δεν φέρουν κώδικα, όπως δεδομένα στοιχειοσειράς, γραφικά, αρχεία και άλλα.
  4. Διαχειριστής ειδοποιήσεων, μέσω του οποίου όλες οι εφαρμογές μπορούν να εμφανίζουν τις δικές τους ειδοποιήσεις για το χρήστη στη γραμμή κατάστασης.
  5. Ο Διαχειριστής Δραστηριοτήτων, ο οποίος διαχειρίζεται τους κύκλους ζωής των εφαρμογών, αποθηκεύει δεδομένα σχετικά με το ιστορικό της εργασίας με δραστηριότητες και παρέχει επίσης ένα σύστημα πλοήγησης για αυτούς.
  6. Διαχειριστής τοποθεσίας (διαχειριστής τοποθεσίας), επιτρέποντας στις εφαρμογές να λαμβάνουν περιοδικά ενημερωμένα δεδομένα σχετικά με την τρέχουσα γεωγραφική θέση της συσκευής.

Στην κορυφή της στοίβας λογισμικού Android βρίσκεται το επίπεδο εφαρμογών (εφαρμογές). Αυτό περιλαμβάνει ένα σύνολο βασικών εφαρμογών που είναι προεγκατεστημένες στο λειτουργικό σύστημα Android. Για παράδειγμα, περιλαμβάνει ένα πρόγραμμα περιήγησης, mail πελάτη , πρόγραμμα αποστολής SMS, χάρτες, ημερολόγιο, υπεύθυνος επικοινωνίας και πολλά άλλα. Ο κατάλογος των ολοκληρωμένων εφαρμογών ενδέχεται να διαφέρει ανάλογα με το μοντέλο συσκευής και το Έκδοση Android  . Και εκτός από αυτό το βασικό σύνολο, το επίπεδο των εφαρμογών περιλαμβάνει όλες τις εφαρμογές για την πλατφόρμα Android, συμπεριλαμβανομένων εκείνων που έχουν εγκατασταθεί από το χρήστη.

Κατά κανόνα, οι εφαρμογές Android γράφονται σε Java, αλλά υπάρχει η δυνατότητα ανάπτυξης προγραμμάτων σε C / C ++ (χρησιμοποιώντας το Native Development Kit). Οι εξωτικές μπορούν να κληθούν χρησιμοποιώντας το Basic (χρησιμοποιώντας απλά) και άλλες γλώσσες. Μπορείτε επίσης να δημιουργήσετε τα δικά σας προγράμματα χρησιμοποιώντας σχεδιαστές εφαρμογών, όπως το App Inventor.

1.6. Χαρακτηριστικά του πυρήνα

Ο πυρήνας είναι το πιο σημαντικό μέρος του λειτουργικού συστήματος Linux, και σε αντίθεση με τα άλλα μέρη του, μεταφέρθηκε σχεδόν εντελώς στο Android OS. Ωστόσο, κατά τη διαδικασία μεταφοράς περίπου 250 μπαλώματα εφαρμόστηκαν στον πυρήνα.

Στον πυρήνα Android OS, αποφασίστηκε η εγκατάλειψη των μέσων επικοινωνίας μεταξύ των λειτουργικών συστημάτων Linux και η δημιουργία ενός μοναδικού μηχανισμού που ονομάζεται Binder. Ο Binder σας επιτρέπει να καλέσετε τις μεθόδους μιας διαδικασίας από μια άλλη διαδικασία, περάνοντας τα επιχειρήματά τους και να πάρει το αποτέλεσμα, ακριβώς όπως οι μέθοδοι καλούνται μέσα στην ίδια διαδικασία. Ο Binder κάνει αυτή τη δουλειά με ελάχιστη χρήση μνήμης.

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

Οι μεγάλες αλλαγές άγγιξαν την εργασία με τη μνήμη. Η παραδοσιακή μνήμη Shmem κοινής μνήμης Linux έχει αντικατασταθεί από ashmem. Το ίδιο πρόβλημα, αλλά στο επίπεδο της φυσικής μνήμης, επιλύεται χρησιμοποιώντας τον οδηγό pmem. Έχει προστεθεί ένας ειδικός χειριστής μνήμης, ονομάζεται Viking Killer, στην απλούστερη περίπτωση που απλώς σκοτώνει τη διαδικασία, αλλά μπορούν να οριστούν πιο σύνθετοι κανόνες.

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

1.7. Java μηχανή Dalvik

Το Dalvik Virtual Machine είναι μέρος της κινητής πλατφόρμας Android. Είναι εικονική μηχανήμε τη χορηγία του Dan Bronstein. Απλώνεται όπως ελεύθερο λογισμικό υπό την άδεια Apache 2.0 συμβατή με BSD. Από πολλές απόψεις, το γεγονός αυτό διαδραμάτισε ρόλο στην απόφαση της Google να εγκαταλείψει το JME (Java Micro Edition), για το οποίο θα χρειαζόταν άδεια από την Sun. Ως εκ τούτου, η εταιρεία, ο στόχος της οποίας ήταν να δημιουργήσει ένα ανοικτό λειτουργικό σύστημα, ανέπτυξε τη δική της εικονική μηχανή.

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

Ο Dalvik σχεδιάστηκε ειδικά για την πλατφόρμα Android. Το γεγονός ότι η πλατφόρμα κατασκευάζει όλες τις διαδικασίες ως απομονωμένες, εκάστη που τρέχει στο δικό της χώρο διεύθυνσης, ελήφθη υπόψη. Εικονική μηχανή   βελτιστοποιημένη για χαμηλή κατανάλωση μνήμης και εργασία σε κινητό υλικό. Ξεκινώντας από το Android 2.2., Ο Dalvik χρησιμοποιεί τη σύνταξη JIT (Just-in-Time). Ως αποτέλεσμα αυτών των χαρακτηριστικών, γρήγορη και παραγωγική εικονική μηχανήπου δεν μπορεί να επηρεάσει τη λειτουργία της εφαρμογής ως συνόλου.

Ο Dalvik χρησιμοποιεί το δικό του bytecode. Κατά την ανάπτυξη μιας εφαρμογής Android, μεταφράζονται από τον μεταγλωττιστή σε ειδικό μηχανοκίνητο κώδικα χαμηλού επιπέδου. Όταν εκτελείται σε μια πλατφόρμα, ο Dalvik ερμηνεύει και εκτελεί ένα τέτοιο πρόγραμμα.

Επιπλέον, ο Dalvik είναι σε θέση να μεταφράσει τα Java bytecodes σε κώδικες εγγενούς μορφής και επίσης να τις εκτελέσει στο εικονικό περιβάλλον. Ο κώδικας του προγράμματος είναι γραμμένος σε Java, και μετά από όλα τα compilations. τα αρχεία κατηγορίας μετατρέπονται σε μορφή .dex (κατάλληλα για ερμηνεία στο Dalvik) χρησιμοποιώντας το ειδικό βοηθητικό πρόγραμμα dx, το οποίο περιλαμβάνεται στο Android SDK.

1.8. Bionic

Η Bionic είναι μια τυπική βιβλιοθήκη γλωσσών C που διανέμεται με την άδεια BSD (σύστημα διανομής Berkeley Software Distribution; λογισμικού  στον πηγαίο κώδικα, που δημιουργήθηκε για την ανταλλαγή εμπειριών μεταξύ εκπαιδευτικών ιδρυμάτων) και αναπτύχθηκε από την Google για το Android. Στο bionic, υπάρχουν ορισμένες μη λειτουργίες Android POSIX που είναι διαθέσιμες στην πλήρη υλοποίηση του glibc.

Οι κύριες διαφορές bionic:

  1. Άδεια BSD: Το Android χρησιμοποιεί τον πυρήνα του Linux, ο οποίος υπάγεται στη Γενική Άδεια Δημόσιας Χρήσης GNU (GPL), αλλά η Google ήθελε να απομονώσει εφαρμογές Android από τις επιπτώσεις της GPL. Το GNU libc, το οποίο χρησιμοποιείται συνήθως με τον πυρήνα του Linux, είναι υπό την άδεια GNU LGPL, ως εναλλακτική λύση για το uClibc.
  2. μικρό μέγεθος: ο κώδικας Bionic αντικειμένου είναι πολύ μικρότερος (περίπου 2 φορές) από τον glibc και ελαφρώς μικρότερος από τον uclibc.
  3. Το bionic είναι σχεδιασμένο για επεξεργαστές με σχετικά χαμηλές ταχύτητες ρολογιού.
  4. μια κολοβωμένη αλλά αποτελεσματική υλοποίηση των νημάτων POSIX.

1.9. Επισκόπηση των διεπαφών προγραμματισμού εφαρμογών Java

Για προγραμματιστή εφαρμογών Android - ένα σύνολο διεπαφών στη γλώσσα Java. Εξετάστε πώς είναι οργανωμένη. Στον πυρήνα της σουίτας υπάρχουν πακέτα που αποτελούν μέρος της τυπικής γλώσσας Java, όπως java.util, java.lang, java.io. Βρίσκονται σε οποιαδήποτε πλατφόρμα όπου μπορούν να εκτελεστούν οι εφαρμογές java και δεν είναι συγκεκριμένες για το Android. Οι επεκτάσεις παραπέμπουν σε αυτές, οι οποίες δεν περιλαμβάνονται στο πρότυπο της γλώσσας, αλλά de facto έχουν από καιρό τυπικά - τα πακέτα javax.net, javax.xml.

Το Android περιλαμβάνει επίσης λιγότερο κοινές επεκτάσεις Java - το πακέτο org.apache.http, την πιο σταθερή εφαρμογή Πρωτόκολλο HTTP  . Το πακέτο org.json είναι υπεύθυνο για τη σειριοποίηση αντικειμένων JavaScript και την υποστήριξη της τεχνολογίας AJAX. Το πακέτο org.w3c.dom παρέχει το μοντέλο αντικειμένου εγγράφου

    Σε ορισμένα μοντέλα tablet που βασίζονται στην πλατφόρμα Android, ενδέχεται να λείπουν ορισμένα στοιχεία από την παραπάνω λίστα.

    Όλα τα tablet "android" ελέγχονται από μία από τις εκδόσεις του λειτουργικού συστήματος για κινητά από την Google. Ωστόσο, οι παλαιότερες εκδόσεις ενδέχεται να μην υποστηρίζουν ορισμένες από τις σύγχρονες εφαρμογές.

    Όλες οι εκδόσεις του πιο δημοφιλούς λειτουργικού συστήματος κινητής τηλεφωνίας έχουν κοινή βάση. Μπορούμε να φανταστούμε το λειτουργικό σύστημα Android ως μια πολυεπίπεδη δομή. Οι μηχανικοί υπολογιστών ονομάζουν αυτή τη στοίβα λογισμικού. Τα στοιχεία που βρίσκονται στην κορυφή της στοίβας είναι αυτά που βλέπει ο χρήστης κατά την αλληλεπίδραση του με το λειτουργικό σύστημα. Στο κάτω μέρος της στοίβας βρίσκονται εκείνα τα μέρη του λειτουργικού συστήματος που αλληλεπιδρούν άμεσα με το υλικό της συσκευής.

    Έτσι, στο χαμηλότερο επίπεδο είναι τα ίδια τα εξαρτήματα υλικού: επεξεργαστές, αισθητήρες, καλώδια και τυπωμένα κυκλώματα. Το επόμενο επίπεδο είναι ο πυρήνας του λειτουργικού συστήματος. Ο πυρήνας μερικές φορές αποκαλείται επίσης ενσωματωμένο (ή ιδιόκτητο) λογισμικό. Ο αγγλικός ορισμός του "υλικολογισμικού" είναι πιο γνωστός. Αυτό το λογισμικό ελέγχει τους πόρους υλικού της συσκευής, τις ελέγχει και τη διανομή τους.

    Αυτό το τμήμα του λειτουργικού συστήματος "μεταφράζεται" στη γλώσσα των εξαρτημάτων υλικού εκείνων των εντολών που δίνει ο χρήστης μέσω μιας κατάλληλης γραφικής διεπαφής. Ο πυρήνας του δείγματος για το Android έχει γίνει λειτουργικό σύστημα  με ανοικτή πηγή  Linux 2.6.

    Οι βιβλιοθήκες Android βρίσκονται πάνω από τον πυρήνα του λειτουργικού συστήματος. Πρόκειται για σύνολα οδηγιών που ακολουθεί η συσκευή κατά τη διάρκεια της επεξεργασίας. διαφορετικούς τύπους  δεδομένων. Ένα παράδειγμα είναι η βιβλιοθήκη προσανατολισμού στον τρισδιάστατο χώρο. Περιέχει όλες τις οδηγίες που χρειάζεται η συσκευή Android για να αναγνωρίσει τις αλλαγές στη θέση της στο διάστημα και να απαντήσει σε αυτές.

    Στο ίδιο επίπεδο της στοίβας λογισμικού υπάρχουν οι βιβλιοθήκες ρίζας που απαιτούνται για την υποστήριξη εφαρμογών γραμμένων στη γλώσσα Java. Η Java είναι μια γλώσσα προγραμματισμού από την Sun Microsystems. Πιο πρόσφατα, τα τηλέφωνα με δυνατότητα Java ήταν πολύ συνηθισμένα. Επί του παρόντος, όλο και περισσότερο αντικαθίστανται από smartphones.

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

    Το επόμενο επίπεδο είναι το πλαίσιο εφαρμογής. Είναι η βάση για όλες τις εφαρμογές "Android" συσκευή. Η υποδομή εφαρμογής είναι η σύνδεση μεταξύ των εφαρμογών και του υπόλοιπου λειτουργικού συστήματος.

    Η Google συνιστά στους προγραμματιστές να δημιουργούν εφαρμογές που αλληλεπιδρούν με αυτό το επίπεδο, ως μέρος της διασύνδεσης προγραμματισμού εφαρμογών () που αναπτύχθηκε από το λειτουργικό σύστημα αναζήτησης. Οι προγραμματιστές πρέπει μόνο να εξοικειωθούν με αυτούς τους κανόνες API. Δεν χρειάζεται να σκεφτούν τα τεχνικά χαρακτηριστικά κάθε tablet "Android".

    Το κορυφαίο επίπεδο της στοίβας λογισμικού περιέχει το περιβάλλον χρήστη και όλες τις εφαρμογές του tablet Android. Αυτό το τμήμα του λειτουργικού συστήματος βλέπει συνεχώς ο χρήστης. Αλλά πίσω από αυτό το ελκυστικό και πολύχρωμο στρώμα είναι πολύ βαρετό και ενδιαφέρον μόνο για τους ειδικούς του κώδικα.

    Όπως κάθε άλλο λειτουργικό σύστημα και άλλοι πόροι υλικού του tablet.

    Βασισμένο στο computer.howstuffworks.com

# γεγονότα | Πώς λειτουργεί το Android;   Oleg Dovbnya

Συνέχιση του θέματος:
Λύσεις

Δεν είναι μυστικό ότι δαπανούμε όλο και περισσότερο χρόνο στον υπολογιστή, με gadgets: στην εργασία, στο σπίτι, στις δημόσιες συγκοινωνίες. Από την άποψη αυτή, το οξύ ζήτημα του φορτίου στις ...