By Jerry Hildenbrand | Jan 23 2012 | 1:58
pm |
What is a kernel? If you spend any time reading Android forums, blogs,
how-to posts or online discussion you'll soon hear people talking about the
kernel. A kernel isn't something unique to Android -- iOS and MacOS have
one, Windows has
one, BlackBerry's QNX has
one, in fact all high level operating systems have one. The one we're
interested in is Linux, as it's the one Android uses. Let's try to break down
what it is and what it does.
Thế nào là 1
kernel? Nếu bạn từng bỏ thời gian đọc
các diễn đàn, các blog, các bài hướng dẫn trên mạng hoặc thảo luận online về
Android thì bạn sẽ nghe thấy ngay mọi người nói chuyện về kernel. Một kernel
không phải là cái gì đó dành riêng cho Android - mà [các hệ điều hành] iOS và MacOS, Windows, QNX của BlackBerry đều có 1 cái, trong thực tế tất cả các hệ điều hành
cao cấp đều có. Cái mà được chúng ta quan tâm là trong [hệ điều hành] Linux, vì
nó là cái Android sử dụng [kernel]. Nào, giờ cố vỡ ra nó là cái gì và nó làm gì.
Android devices use the Linux kernel, but it's not the
exact same kernel other Linux-based operating systems use. There's a lot of
Android specific code built in, and Google's Android kernel maintainers have
their work cut out for them. OEMs have to contribute as well, because they need
to develop hardware drivers for the parts they're using for the kernel version
they're using. This is why it takes a while for independent Android developers
and hackers to port new versions to older devices and get everything working. Drivers
written to work with the Gingerbread kernel on
a phone won't necessarily work with the Ice Cream Sandwich kernel.
Các thiết bị Android sử dụng kernel Linux, nhưng nó
không giống hoàn toàn kernel mà các hệ điều hành Linux khác sử dụng. Có rất
nhiều mã đặc thù Android được xây dựng trong đó, và công việc của những người
phát triển kernel Android từ Google là tỉa tót chúng. Các OEM (Original Equipment Manufacturer -
Nhà sản xuất thiết bị gốc) phải góp phần vào - tất nhiên, bởi vì họ cần để
phát triển các driver (trình điều khiển) phần cứng cho
các bộ phận mà họ đang sử dụng và cho phiên bản kernel mà họ đang dùng. Điều
này giải thích vì sao phải mất thời gian cho các Android developer độc lập (chuyên viên phát triển Android) và các hacker post (chuyển qua mạng) các phiên bản
mới [kernel] đến các thiết bị cũ hơn và làm mọi thứ làm việc. Các driver được viết
để làm việc với kernel cho [phiên bản Android] Gingerbread trên 1 phone thì không nhất thiết làm việc với kernel
cho [phiên bản Android] Ice Cream Sandwich.
And that's important, because one of the kernel's main
functions is to control the hardware. It's a whole lot of source code, with
more options while building it than you can imagine, but in the end it's just
the intermediary between the hardware and the software.
Và quan trọng là, vì 1 trong số các chức năng chính
của kernel là điều khiển phần cứng. Nên nó là 1 tập hợp rất nhiều mã nguồn, với
nhiều hơn các tùy chọn khi xây dựng nó so với [cái] bạn có thể hình dung, nhưng
cuối cùng nó chỉ là trung gian giữa phần cứng và phần mềm.
When software needs the hardware to do anything, it sends
a request to the kernel. And when we say anything, we mean anything. From the brightness of the screen, to the
volume level, to initiating a call through the radio, even what's drawn on the
display is ultimately controlled by the kernel. For example -- when you tap the
search button on your phone, you tell the software to open the search
application. What happens is that you touched a certain point on the digitizer,
which tells the software that you've touched the screen at those coordinates. The
software knows that when that particular spot is touched, the search dialog is
supposed to open. The kernel is what tells the digitizer to look (or listen,
events are "listened" for) for touches, helps figure out where you
touched, and tells the system you touched it. In turn, when the system receives
a touch event at a specific point from the kernel (through the driver) it knows
what to draw on your screen.
Khi phần mềm cần phần cứng làm bất kỳ cái gì, nó gửi 1 yêu cầu đến kernel. Chúng tôi nói ‘bất kỳ cái gì’ nghĩa là bất kỳ cái gì. Từ brightness (độ chói) của màn hình, đến mức độ âm thanh, đến bắt đầu 1 cuộc gọi qua [sóng]
radio, thậm chí cho đến cái được lôi ra trên màn hình hiển thị rút cục cũng đều
được điều khiển bằng kernel. Thí dụ -- khi bạn gõ nhẹ nút search (tìm kiếm) trên phone của bạn, là bạn lệnh cho phần mềm mở ứng dụng
search. Điều gì xảy ra khi bạn đã chạm vào 1 điểm nào đó trên màn hình số hóa,
cái nói cho phần mềm rằng bạn đã chạm vào màn hình tại cụm tọa độ ấy. Phần mềm
hiểu là khi 1 vết xác định được chạm, thì hộp thoại search được đòi hỏi mở ra.
Kernel sẽ nói gì đó với màn hình số hóa để tìm kiếm (hay chú ý nghe ngóng, thậm
chí là “đã nghe”) các va chạm, giúp phân tích nơi bạn đã chạm vào, và nói với
hệ thống là bạn đã chạm vào đó. Đến lượt, khi hệ thống nhận được 1 sự kiện cảm
ứng tại 1 điểm nhất định từ kernel (thông qua driver) thì nó sẽ hiểu phải vẽ
cái gì trên màn hình của bạn.
Both the hardware and the software communicate both ways
with the kernel, and that's how your phone knows when to do something. Input
from one side is sent as output to the other, whether it's you playing Angry
Birds, or connecting to your car's Bluetooth.
Cả phần cứng và phần mềm đều liên lạc bằng cả 2 đường
với kernel, và đó là cách phone của bạn biết khi làm gì đó. Đầu vào từ 1 phía
được gửi đi thành đầu ra phía kia, hoặc bạn chơi Angry Birds, hoặc kết nối với
Bluetooth trong xe hơi của bạn.
It sounds complicated, and it is. But it's also pretty standard
computer logic -- there's an action of some sort generated for every event. Without
the kernel to accept and send information, developers would have to write code
for every single event for every single piece of hardware in your device. With
the kernel, all they have to do is communicate with it through the Android
system API's, and hardware developers only have to make the device hardware
communicate with the kernel. The good thing is that you don't need to know
exactly how or why the kernel does what it does, just understanding that it's
the go-between from software to hardware gives you a pretty good grasp of what's
happening under the glass. Sort of gives a whole new outlook towards those
fellows who stay up all night to work on kernels for your phone, doesn't it?
Nghe có vẻ phức tạp, và nó là thế. Nhưng nó cũng tương đối logic
máy tính tiêu chuẩn – có một hành động trong 1 số lựa chọn phát sinh cho mỗi sự
kiện. Không có kernel để chấp nhận và gửi thông tin, các developer sẽ phải viết
mã cho mọi sự kiện đơn lẻ cho mỗi bộ phận đơn lẻ của phần cứng trong thiết bị
của bạn. Với kernel, tất cả họ phải làm là liên lạc với nó thông qua các API (Application
Programming Interface – giao diện lập trình ứng dụng) của hệ thống Android, và các developer
phần cứng chỉ phải làm cho phần cứng của thiết bị giao tiếp với kernel. Điều
tốt là bạn không cần hiểu thật rõ làm cách nào hay tại sao kernel làm cái gì,
chỉ cần hiểu là nó chạy từ phần mềm đến phần cứng trao cho bạn 1 nắm bắt khá
tốt về những gì đang xảy ra dưới lớp kính. Phần nào đưa ra 1 cách nhìn hoàn
toàn mới về các thành viên nghiên cứu, những người dành cả đêm để làm việc trên
các kernel cho phone của bạn, không phải thế sao?
Không có nhận xét nào:
Đăng nhận xét