Nhãn

3 tháng 10, 2012

539. Phân biệt ROM và Kernel (Anh - Việt)



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