1- ROM là gì?
Một ảnh ROM là 1 file dữ liệu mà chứa các thông tin được
sử dụng trên 1 chip Read Only Memory (bộ nhớ chỉ đọc). Đối với mục đích của chúng ta, đó có nghĩa là ảnh của toàn bộ
hệ thống của 1 thiết bị. Mỗi một thiết bị Android có ảnh ROM của chính nó chứa
các file và mã cần thiết để boot (khởi động hoặc thiết lập lại) thành công thiết bị và chạy Android trên nó [thiết bị].
Nhưng đấy chỉ là 1 phần [thành phần/chức năng] của 1 ROM. Một ROM cũng bao gồm
1 GUI (Graphical User Interface - giao diện đồ họa người dùng), các ứng dụng hữu dụng và
cần phải có, hỗ trợ các file [dùng] cho các ứng dụng đó và kernel. Nào hãy xem
các thành phần cấu thành 1 ROM.
2- Các thành phần của 1 ROM
2.1- Kernel
Android (giống nhiều hệ điều hành Smartphone khác) chạy
trên kernel Linux. Kernel Linux đã được viết ra vào đầu năm 1990 do 1 quí ông
tên là Linus Torvalds ở Helsinki, Finland. Nó ổn định 1 cách khó tin,
thân thiện 1 cách khó tin, và khó khăn 1 cách khó tin để các tay ngang hiểu và
sửa đổi. May thay, nó cũng rất phổ biến nên nó đã được mang vào vô số phần
cứng, bao gồm cả các thiết bị Android của chúng ta.
Hãy xem kernel như 1 lớp chuyển tiếp giữa phần cứng và
phần mềm trên thiết bị của bạn. Kernel quyết định khi nào [và] điều gì xảy ra,
thí dụ như đèn chỉ thị LED (Light-Emitting Diode - diode phát sáng) sáng lên. 1 ứng dụng gửi 1 yêu cầu đến hệ điều hành để
nhấp nháy đèn LED. Hệ điều hành sau đó gửi yêu cầu đó đến kernel, cái mà lệnh
cho chớp sáng bao nhiêu thời gian theo yêu cầu của OS (Operating System -
hệ điều hành).
Cái mà nghe như 1 phương thức hoàn hảo để đạt những điều
được làm thì cũng là cái làm cho hệ thống đạt được khả năng thích ứng và sức
mạnh. Các app-developer (chuyên viên phát triển ứng dụng) chỉ phải viết mã sao cho hệ điều hành hiểu và kernel sẽ
làm nó [mã] làm việc trên phần cứng. Điều này cũng giữ cho ứng dụng chạy trong user-space
(bộ nhớ người dùng) của chính nó [ứng dụng] và tách biệt với kernel. Điều đó có
nghĩa là khi bạn chạy 1 ứng dụng cực hay [phiên bản] mới nhất nhưng lại không
được thiết kế cho phiên bản OS cá biệt của bạn, hay nó vẫn trong giai đoạn bắt
đầu beta và gây ra sự cố, kernel đưa ra cho bạn tùy chọn để Force Close (tắt cưỡng ép) ứng dụng này và kernel có thể tự chạy không cần bạn sờ
vào.
Trong 1 ROM Android tiêu chuẩn (chúng tôi sẽ bỏ qua các [ROM]
điển hình của developer, nói trong 1 thảo luận khác), kernel được đóng gói cùng
với 1 bộ các chỉ thị mà nói cho thiết bị biết cách thức để load kernel và OS
trong khi boot. Đấy là [file ảnh] boot.img mà bạn thấy trong 1 [file] ROM dạng
*.zip cái mà bạn không thể mở [nó - boot.img] dễ dàng. Thiết bị biết chiết ảnh
này vào bộ nhớ trong (ramdisk - Random-access memory - bộ nhớ truy xuất ngẫu nhiên) và làm theo 1 loạt các script (init script - tập lệnh khởi tạo) để load (tải) kernel và sau đó là các phần khác của OS. Đó là những gì
xảy ra khi bạn quan sát hoạt cảnh boot. Điều này được làm rất thú vị theo cùng
1 cách cho PC, smartphone, tablet Android, hay thậm chí 1 lò nướng thông minh chạy
Linux. Nếu bạn đang cảm thấy phấn khích, cắm phone Android của bạn vào cổng USB
trên PC và cho PC boot từ thiết bị USB. Không, nó không thực sự load, nhưng bạn
có thể quan sát hoạt cảnh khi nó cố làm cho phần cứng [của nó] hỗ trợ với cái
bên trong PC của bạn. Như tôi đã nói, Linux có khả năng thích ứng đáng ngạc
nhiên và kết quả là Android.
2.2- Hệ điều hành
Một khi kernel được load, các init script lệnh cho OS
load. Android là giao tiếp của người dùng đối với 1 Java virtual machine (JVM - máy ảo Java) tích hợp tùy chỉnh gọi là Dalvik. Dalvik đã được viết bởi
Dan Bornstein, người đặt tên nó phỏng theo [tên] làng chài Dalvik ở Iceland, nơi
gia đình anh ta sinh sống. Tranh luận JVM nào là mạnh hơn là tốt nhất dành cho
1 cuộc thảo luận khác, thế nên tôi sẽ nói đơn giản là DalvikVM (máy ảo Dalvik) là 1 máy được dựa trên đăng ký đối lập với các JavaVM
đúng nghĩa dựa vào stack (stack-oriented
programming language - ngôn ngữ lập trình hướng đối tượng stack).
Máy Dalvik tạo ra các file thực thi (các file *.dex) cái
có thể được diễn dịch bởi OS và được người dùng đầu cuối chạy. Các file *.dex
này phụ thuộc phiên bản OS. Đó đơn giản nghĩa là các ứng dụng và các chức năng
lõi được xây dựng để làm việc với 1 phiên bản Android mà có thể hoặc không thể
làm việc tốt với các phiên bản khác. Google cung cấp các công cụ trong SDK (Software
Development Kit - Thư viện phát triển phần mềm) của họ để các ứng dụng [có thể] giao tiếp với OS.
2.3- Các chức năng lõi
Không 1 smartphone có thể trở thành hoàn hảo mà không có 1
bộ các chức năng mà cho phép thiết bị được sử dụng như dự định. Các thứ giống
như phone bao gồm giao diện quay số, lịch, hệ thống gửi thông báo là các chức
năng lõi của hệ điều hành. Trong Android, chúng chạy trên kernel như các ứng
dụng riêng rẽ. Giá trị (có hoặc không) của việc cung cấp các chức năng cần
thiết này như các ứng dụng độc lập 1 lần nữa tốt nhất để cho 1 cuộc thảo luận
khác, tuy nhiên điều này là cái cho phép các developer của HTC hay Motorola [có
thể] thay thế các chức năng tiêu chuẩn bằng những cái khác mà đưa đến cảm nhận
và cái nhìn khác với stock (chức năng gốc). Bàn phím ảo của HTC hay danh sách giao tiếp MotoBlur của Motorola
là các thí dụ điển hình về điều này. “little guy - anh chàng nhỏ thó” có thể vẫn
không thoát được sự hòa trộn. [các ứng dụng nhắn tin] Handcent SMS hay Chomp
SMS có thể kết hợp với OS rất tốt, như hầu hết chúng ta đã thấy.
Một bộ bổ sung các chức năng lõi được cung cấp bới Google.
Giang hồ gọi là GoogleBits, các thứ như Gmail, sync, Gtalk và Android Market là
các ứng dụng được Google viết ra mà cho OS 1 bộ mở rộng các chức năng lõi hữu
ích. Bạn sẽ tìn thấy chúng trên mọi smartphone, cũng như trên nhiều thiết bị
Android khác.
2.4- Các ứng dụng tùy
chọn
Các ứng dụng này được cung cấp bới nhà sản xuất để cho thiết bị
thậm chí còn khả dụng hơn nữa. Thí dụ như kho MP3 của Amazon, ứng dụng đọc file PDF, lịch
công tác chung .v.v.
What is a ROM?
A ROM image is a data file that contains information used on
a Read Only Memory chip. For our purposes, that means a complete system image
of a device. Each Android device has its own ROM image that contains files and
code needed to boot the device up and run Android on it. But this is only part
of a ROM. A ROM also contains a GUI (graphical user interface), required and
useful applications, support files for those applications and the kernel. Let’s
have a look at the parts that make a ROM.
Parts of a ROM
The kernel
Android (like many other Smartphone operating systems) runs
on the Linux kernel. The Linux kernel was created in the early 1990’s by a
gentleman named Linus Torvalds in Helsinki Finland. It’s incredibly stable,
incredibly friendly, and incredibly difficult for the layman to understand and
modify. Thankfully it’s also very popular so it has been ported on to a
multitude of hardware, including our Android devices.
Think of the kernel as an interface layer between the
hardware and software on your device. The kernel decides when things happen,
such as the LED indicator gets lit. An application sends a request to the
operating system to blink the LED. The operating system then sends the request
to the kernel, which makes the light flash for the amount of time requested by
the OS.
What sounds like a round-about way to get things done is
also what makes the system so scalable and robust. Application developers only
have to code in a way the operating system understands and the kernel makes it
work on the hardware. This also keeps the application running in it’s own
user-space and separate from the kernel. That means when you run the latest
uber-cool app that wasn’t designed for your particular OS version, or is still
very beta and it crashes, the kernel gives you the option to Force Close the
application and the kernel can run untouched.
In a standard Android ROM (we will leave developer images
and the like for another discussion) the kernel is bundled along with a set of
instructions that tell the device how to load the kernel and the OS during
boot. This is the boot.img that you see inside a zipped ROM that you're not
able to easily open. The device knows to extract this image to internal memory
(the ramdisk) and follow a series of scripts (init scripts) to load the kernel
and then the other portions of the OS. That’s what’s happening while you’re
watching the boot animation. Interestingly enough this is done the same way for
a PC, your smartphone, an Android tablet, or even a smart Linux powered
toaster. If you’re feeling exceptionally geeky, plug your Android phone into
the USB port on your PC and let the PC boot from the USB device. No, it doesn’t
actually load, but you can watch the animation while it tries to match up the
hardware support with what’s inside your PC. As I said, Linux is amazingly
scalable and as a result so is Android.
The operating system
Once the kernel is loaded, the init scripts tell the
Operating System to load. Android is the user interface for a custom built Java
virtual machine called Dalvik. Dalvik was written by Dan Bornstein, who named
it after the fishing village of Dalvik in Iceland, where his family originated
from. The debate of which Java VM is superior is best left for another
discussion, so I’ll simply say that DalvikVM is a register-based machine versus
true JavaVMs which are stack based.
The Dalvik machine creates executable files (.dex files)
which can be interpreted by the OS and run by the end user. These .dex files
are OS version dependant. That simply means that applications and core
functions built to work with one version of Android may or may not work well
with other versions. Google provides the tools through it’s Software
Development Kit (SDK) for applications to communicate with the OS.
Core functions
No smartphone would be complete without a set of functions
that allow the device to be used as intended. Things like the phone and dialer
interface, the calendar, the messaging system are core functions of the
Operating System. In Android, these are run on top of the kernel as separate
applications. The merits (or lack of) of providing these needed functions as
separate applications is once again best left for another discussion, but this
is what allows developers like HTC or Motorola to replace the standard
functions with alternatives that provide a different look and feel from stock. HTC’s
onscreen keyboard or Motorola’s MotoBlur contact list are great examples of
this. The “little guy” isn’t left out of the mix either. Handcent SMS or Chomp
SMS can integrate into the OS very well, as most of us already know.
An additional set of Core Functions are provided by Google.
Popularly called GoogleBits, things like Gmail, sync, Gtalk and the Android
Market are applications written by Google that give an extra set of useful
functions to the OS. You’ll find these on all smartphones, as well as many
other Android devices
Optional applications
These are applications provided by the manufacturer to give
the device even more usability. Things like the Amazon MP3 store, PDF readers,
Corporate Calendar etc.
Không có nhận xét nào:
Đăng nhận xét