Ο πόλεμος χαρακτηριστικών μεταξύ των εταιρειών είναι αναπόφευκτος. Οι εταιρείες προσπαθούν να προσφέρουν όλο και περισσότερα και καλύτερα χαρακτηριστικά για να διαφοροποιηθούν σε σχέση με τον ανταγωνισμό. Τα περισσότερα από αυτά τα πρόσθετα χαρακτηριστικά, είναι απαραίτητα, ωστόσο το θέμα της RAM σηκώνει περαιτέρω συζήτηση.
Πίσω στις πρώτες ημέρες των Android smartphones, οι συσκευές είχαν 512MB RAM ή ίσως 1GB. Ήταν οι απαρχές της επανάστασης στα smartphones. Με την πάροδο του χρόνου, προστέθηκε όλο και περισσότερη RAM. Μέχρι το 2014, τα περισσότερα high end smartphones είχαν 3GB RAM και κατά τη διάρκεια του 2016-2017, τα 4GB έγιναν η defacto επιλογή. Στη συνέχεια ξεκίνησε ο πόλεμος που αναφέραμε. Πρώτα ήρθαν συσκευές με 6GB, 8GB, 10GB και έπειτα με 12GB. Πότε όμως θα τελειώσει αυτό και ως μέχρι που θα φτάσουμε;
Με την RAM να αυξάνεται κάθε τρίμηνο, θα πρέπει να αρχίσουμε να αναρωτιόμαστε πόση RAM χρειαζόμαστε στη πράξη. Αυτό που χρειαζόμαστε είναι μια όσο κατά το δυνατόν πιο αντικειμενική προσέγγιση στο πόση RAM είναι απαραίτητη σήμερα. Για να απαντήσουμε όμως στο ερώτημα αυτό θα πρέπει να δούμε πως το Android διαχειρίζεται τη RAM.
Η διαχείρισης της RAM από το Android
Όταν εκκινείς μια νέα εφαρμογή στο Android, το Linux Kernel δημιουργεί ένα νέο process – διεργασία. Αν η διεργασία απαιτεί περισσότερο χρόνο στο CPU και και το CPU είναι idle, τότε το kernel δίνει στη διεργασία περισσότερο “execution time”, περισσότερο χρόνο εκτέλεσης. Αν χρειάζεται περισσότερη RAM και είναι διαθέσιμη, το kernel απλά χρειάζεται να βρει ποια διεργασία χρησιμοποιεί ποια bits της μνήμης. Ωστόσο, όταν οι πόροι είναι λίγοι, τότε τα πράγματα γίνονται πιο περίπλοκα. Αν το CPU είναι απασχολημένο, η δουλειά θα συνεχίσει να γίνεται, όχι όμως τόσο γρήγορα. Στη RAM όμως, τα πράγματα είναι διαφορετικά. Το Kernel εδώ θα πρέπει να έχει μεριμνήσει να πάρει πίσω λίγη RAM.
Τόσο το Linux όσο και το Android, το διαχειρίζονται αυτό με δυο τρόπους. Πρώτον υπάρχει ο όρος του swapping με τη χρήση της zRAM. Το Android μπορεί να διαθέσει τμήματα της φυσικής μνήμης για το swapping. Το swapping είναι μια ιδέα που το Linux χρησιμοποιεί σε servers και σε PCs. Όταν δεν υπάρχει διαθέσιμη πολύ μνήμη, τα παλαιότερα pages και αυτά που δεν χρησιμοποιούνται πολύ μεταφέρονται στο δίσκο και η μνήμη που καταλάμβαναν γίνεται διαθέσιμη για άλλους σκοπούς. Αν τα δεδομένα αυτά χρειαστούν αργότερα, τα αποθηκευμένα δεδομένα διαβάζονται από το δίσκο και μεταφέρονται στη μνήμη για να χρησιμοποιηθούν.
Όταν ένα process απαιτεί περισσότερη RAM και η RAM δεν είναι διαθέσιμη, το kernel θα προσπαθήσει να απελευθερώσει RAM μέσω της διαδικασίας του swapping. Αν δεν μπορεί να βρεθεί ικανοποιητικό μέγεθος RAM, το Kernel χρειάζεται να ακολουθήσει μια πιο επιθετική πολιτική και να ξεκινήσει τις διαδικασίες killing των processes. Πρέπει να σκοτώσει μια υπάρχουσα διαδικασία, για να κάνει χώρο για άλλη. Το κλειδί εδώ, είναι ότι το τρέχον memory request προέρχεται από το app, που βρίσκεται σε χρήση αυτή τη στιγμή. Με άλλα λόγια το kernel διενεργεί διάφορους ελέγχους και αποφασίζει ποιο process να σκοτώσει για να απελευθερώσει μνήμη. Αν για παράδειγμα, άνοιξες το Cancdy Crush τρεις ημέρες πριν, αλλά δεν επέστρεψες, τότε το Kernel υποθέτει ότι δεν θα μεταβείς σε αυτό, οπότε το σκοτώνει. Αυτό απελευθερώνει μνήμη και επιτρέπει στο τρέχον app να συνεχίζει να τρέχει. Όλα αυτά τα διαχειρίζεται ο Low Memory Killer driver. Ενδιαφέρον παρουσιάζει το γεγονός, ότι οι μελλοντικές εκδόσεις του Android, θα το διαχειρίζονται διαφορετικά.
Αυτό σημαίνει, ότι όταν ξεκινάς μια νέα εφαρμογή, οι εφαρμογές που βρίσκονται προηγουμένως στη μνήμη θα αφαιρούνται για να δημιουργηθεί χώρος. Αν μεταβείς σε αυτά τα apps, με τη χρήση του recent apps, τότε τα apps θα ξαναφορτωθούν, παρόμοια με μια αρχική εκκίνηση. Αν και το σύστημα φαντάζει κάπως επιθετικό, είναι ο τρόπος που το Android έχει σχεδιαστεί. Όλες οι εφαρμογές ειδοποιούνται ότι θα “σκοτωθούν” και θα μετακινηθούν σε διαφορετικές καταστάσεις, επιτρέποντάς τους να αποθηκεύσουν την τρέχουσα κατάστασή τους. Όταν φορτωθούν ξανά, οι εφαρμογές απλά θα διαβάζουν την τελευταία τους κατάσταση και θα συνεχίσουν από εκεί που είχαν μείνει.
0 Post a Comment:
إرسال تعليق