Τι είναι ένα αρχείο CSO;
Ένα αρχείο με την επέκταση .cso είναι ένα συμπιεσμένο αρχείο εικόνας ISO. Το CSO είναι μια εναλλακτική λύση στη μέθοδο συμπίεσης DAX. επίσης γνωστό ως CISO? ήταν η πρώτη μέθοδος συμπίεσης των αρχείων ISO και είναι συνήθως μια προτιμώμενη μέθοδος για την αρχειοθέτηση στοιχείων του PlayStation Portable. Αυτή η μορφή χρησιμοποιεί συμπίεση Deflate, η οποία μπορεί να περιλαμβάνει έως και εννέα επίπεδα συμπίεσης. Λογισμικό όπως το Prometheus και το YACC χρησιμοποιούνται για τη δημιουργία των εικόνων.
Μορφή αρχείου CSO
Η μορφή αρχείου CSO ήταν η πρώτη μέθοδος συμπίεσης για το ISO για εξοικονόμηση περισσότερου χώρου στη μνήμη. Οι βελτιώσεις γίνονταν κατά καιρούς για καλύτερη συμπίεση. Το CSO χρησιμοποιεί συμπίεση Deflate με εννέα επίπεδα προεπιλογών, συνήθως, κάθε επίπεδο μπορεί να χειριστεί 2 μπλοκ KiB ξεχωριστά. Ενώ τα υψηλότερα επίπεδα συμπίεσης μπορούν να επιβραδύνουν και να παρατείνουν τους χρόνους φόρτωσης στο λογισμικό που εξαρτάται σε μεγάλο βαθμό από τη ροή του δίσκου, επίσης τα χαμηλότερα επίπεδα μπορούν να εκτελέσουν σημαντική συμπίεση.
Δομή αρχείου CSO
Η μορφή αρχείου CSO περιέχει μια κεφαλίδα 24 byte, μπλοκ δεδομένων και έναν πίνακα ευρετηρίου. Το Little-endian θεωρείται για πεδία μεγαλύτερα από ένα byte. Η αρχιτεκτονική αρχιτεκτονική του PlayStation Portable δίνεται παρακάτω.
Κεφαλίδα
Μετατόπιση (bytes) | Όνομα | Μέγεθος (bytes) | Σκοπός |
---|---|---|---|
0x0 | Μαγεία | 4 | Πάντα CISO ή 0x4F534943 όταν διαβάζεται ως ακέραιος αριθμός 32 bit. Αυτό το πεδίο χρησιμοποιείται για την αναγνώριση ενός αρχείου CSO. Σημειώστε ότι αυτό το πεδίο μπορεί να είναι διαφορετικό για τα άλλα παράγωγα του CSO, για παράδειγμα, το ZSO χρησιμοποίησε τον μαγικό κωδικό ZISO. |
0x4 | Μέγεθος κεφαλίδας | 4 | Για την αρχική μορφή αρχείου CSO “v1”, αυτό το πεδίο αγνοείται και επομένως δεν απαιτείται να είναι ακριβές. Ωστόσο, η μορφή “v2” και ZSO απαιτούν αυτό το πεδίο να είναι πάντα 0x18 (24 byte). |
0x8 | Ασυμπίεστο μέγεθος | 8 | Το μέγεθος του αρχικού ασυμπίεστου ISO σε byte. |
0x10 | Μέγεθος μπλοκ | 4 | Το μέγεθος κάθε μπλοκ δεδομένων σε byte πριν από τη συμπίεση. Συνήθως 2048 byte, ίδιο με το μέγεθος κάθε τομέα ISO 9660. |
0x14 | Έκδοση | 1 | Η έκδοση της μορφής αρχείου που χρησιμοποιείται. Για τη μορφή “v1”, η τιμή μπορεί να είναι είτε 0 είτε 1. Για τη μορφή “v2”, αυτό πρέπει να είναι 2. Επιπλέον, η μορφή ZSO απαιτεί να είναι 1. |
0x15 | Στοίχιση ευρετηρίου | 1 | Η στοίχιση κάθε καταχώρησης ευρετηρίου, που καθορίζεται σε bit. |
0x16 | Με κράτηση | 2 | Αυτό το πεδίο δεν χρησιμοποιείται. Στη μορφή “v1”, αυτό το πεδίο αγνοείται και μπορεί να περιέχει αυθαίρετες τιμές. Στη μορφή “v2”, αυτό το πεδίο πρέπει να είναι μηδέν. |
Πίνακας ευρετηρίου
Ο πίνακας ευρετηρίου περιέχει πολλές εγγραφές 4 byte, οι οποίες υποδεικνύουν τη θέση κάθε μπλοκ δεδομένων, και μια πρόσθετη, τελευταία καταχώρηση που οδηγεί στο τέλος του αρχείου. Το περιεχόμενο κάθε καταχώρισης έχει ως εξής:
Bit | Μήκος | Μάσκα | Όνομα | Σκοπός |
---|---|---|---|---|
0 | 31 | 0x7FFFFFFFF | Θέση | Αυτό το πεδίο, όταν μετακινηθεί προς τα αριστερά από τη στοίχιση ευρετηρίου που δίνεται στην κεφαλίδα, δείχνει τη θέση από την οποία ξεκινά το μπλοκ δεδομένων. |
31 | 1 | 0x80000000 | Τύπος συμπίεσης | Η μορφή ZSO έχει παρόμοια σημασιολογία, μόνο που το 0 αντιπροσωπεύει το LZ4 αντί για το Deflate. Σε μορφή “v2”. Το μπλοκ θεωρείται σιωπηρά ότι δεν είναι συμπιεσμένο εάν το μέγεθος του μπλοκ είναι ίσο ή μεγαλύτερο από το μέγεθος του μπλοκ που καθορίζεται στην κεφαλίδα του αρχείου. |
Αποκλεισμοί δεδομένων
Τα μπλοκ δεδομένων αποτελούνται από ασυμπίεστα ή συμπιεσμένα δεδομένα. Το μέγεθος ενός μπλοκ υπολογίζεται παίρνοντας τη θέση του και στη συνέχεια αφαιρώντας το από τη θέση του επόμενου μπλοκ. Εάν η στοίχιση του ευρετηρίου είναι μεγαλύτερη από το μηδέν, είναι πιθανό το μέγεθος του μπλοκ να είναι μεγαλύτερο από τα δεδομένα που διατηρεί.
βιβλιογραφικές αναφορές
- N/A