Nhân Linux như một cầu nối cho phép giao tiếp điện toán giữa các ứng dụng và phần cứng, đồng thời quản lý tài nguyên của hệ thống. Linus Torvalds đã phát triển nhân Linux với ngôn ngữ C và Assembly và do đó thành công trong việc tạo ra một lõi nhẹ được giới thiệu đến công chúng dưới dạng mã nguồn mở.
Bạn có thể thấy nhân Linux trong nhiều thứ khác nhau như máy tính, đồng hồ thông minh, điện thoại di động, robot… Nhưng đã bao giờ bạn tự hỏi nhân Linux hoạt động như thế nào chưa?
Sử dụng phần cứng trên Linux
Nhân Linux kiểm soát phần cứng nào sẽ chạy và chạy như thế nào khi bạn bật máy tính. Ngoài ra, nó cũng có thể kiểm soát phần mềm cao cấp nhờ vào giao diện lập trình.
Ngoài ra, giao diện lập trình này cung cấp một lớp trừu tượng (abstraction layer). Ví dụ: nếu bạn muốn trò chuyện qua video, bạn sẽ cần một webcam. Lớp trừu tượng giúp ứng dụng bạn dùng có thể sử dụng webcam này dù nó có thương hiệu và model nào. Ứng dụng ở đây chỉ có thể sử dụng giao diện tồn tại cho Linux. Nhân Linux chuyển các lệnh gọi hàm của giao diện này thành các lệnh phần cứng mà webcam cần.
Sử dụng hệ thống file ảo /proc và /sys, nhân Linux có thể xuất thông tin chi tiết về phần cứng mà nó phát hiện được. Dưới đây là một số công cụ được sử dụng cho việc này và thiết bị và thẻ chúng xuất:
- lspci: Dành cho thiết bị PCI
- lsusb: Dành cho thiết bị USB
- lspcmcia: Dành cho thẻ PCMCIA
Bản phân phối Linux trong ảnh trên chạy trên VirtualBox. Tuy nhiên, bạn có thể xem rất nhiều thông tin như bộ điều khiển VGA, USB và bộ điều khiển SATA.
Bạn cũng có thể dùng tham số -v để biết thêm thông tin chi tiết.
Quản lý hệ thống tệp Linux
Hệ thống tệp là một trong những phần đáng chú ý nhất của nhân Linux. Tất cả các tệp trên một hệ thống Linux tập hợp thành một nhánh duy nhất. Do đó, bạn có thể dùng hệ thống phân cấp này để đến những nơi bạn muốn.
Điểm bắt đầu của cấu trúc phân cấp này là thư mục gốc (/), các thư mục con khác nằm dưới thư mục gốc. Thư mục con được dùng nhiều nhất trong / là thư mục /home. Nó chứa các thư mục con khác, mỗi thư mục con lại có các tệp lưu trữ dữ liệu thực tế.
Ví dụ, nếu bạn tạo một tệp văn bản có tên helloworld.txt trên desktop, bạn có thể gọi nó là /home/(tên người dùng)/Desktop/helloworld.txt. Với hệ thống đặt tên này, nhân Linux “phiên dịch” giữa lưu trữ thực tế và lưu trữ vật lý tồn tại trên đĩa.
Nhân Linux cũng có thể tích hợp dữ liệu từ một số đĩa. Đây là lúc hệ thống gắn kết (mounting system) phát huy tác dụng. Nó sử dụng một trong các đĩa trong hệ thống gốc và gắn (mount) các đĩa khác vào các thư mục hiện có trong hệ thống phân cấp. Các đĩa khác sau đó được đặt dưới các điểm gắn kết (mount point). Điều này cho phép người dùng lưu trữ thư mục /home trên một đĩa cứng thứ hai cũng chứa các thư mục con khác.
Khi bạn gắn (mount) đĩa vào thư mục /home , bạn có thể truy cập các thư mục này từ các vị trí bình thường. Do đó, các đường dẫn như /home/(tên người dùng)/Desktop/helloworld.txt tiếp tục hoạt động.
Bạn có thể xem các điểm gắn kết (mount point) giữa các tệp trên hệ thống của mình bằng lệnh findmnt -A.
Với nhiều định dạng hệ thống tệp, bạn có thể lưu trữ dữ liệu trên đĩa. Các định dạng hệ thống tệp được dùng rộng rãi nhất trên Linux là ext2 , ext3 và ext4. Dù dùng định dạng nào, bạn phải định dạng hệ thống tệp trước khi gắn nó. Bạn có thể sử dụng các lệnh như mkfs.ext3 (mkfs là viết tắt của make file system, có nghĩa là tạo hệ thống tệp, và ext3 là hệ thống tệp) cho việc này.
Những lệnh này chấp nhận đường dẫn tệp thiết bị mà bạn muốn định dạng làm tham số. Bạn nên sử dụng nó một cách cẩn trọng nếu không muốn xóa hoặc đặt lại hệ thống tệp.
Ngoài ra, nhân Linux cũng sử dụng các hệ thống tệp mạng như NFS. Đây là một hệ thống tệp mạng nơi dữ liệu không được lưu trữ trên đĩa cục bộ mà đi qua mạng tới một máy chủ lưu trữ dữ liệu. Điều này giúp người dùng không phải liên tục xử lý nó.
Hoạt động chức năng chung
Tất cả phần mềm trong hệ thống Linux đều có các chức năng chung. Đó là lý do các chức năng này là trung tâm trong nhân Linux. Ví dụ, khi mở một tệp, bạn có thể mở bằng tên tệp mà không cần biết tệp đó được lưu trữ vật lý ở đâu và nó sẽ dùng những chức năng và hoạt động nào, bởi tất cả các chức năng này đã có trong nhân.
Bạn có thể lưu trữ tệp trên đĩa cứng, phân chia tệp giữa nhiều đĩa cứng hoặc thậm chí giữ tệp trên máy chủ từ xa. Các chức năng giao tiếp tệp chung rất quan trọng trong những trường hợp như vậy. Các ứng dụng trao đổi dữ liệu dù dữ liệu được di chuyển như thế nào. Các chức năng giao tiếp chung giúp để thực hiện các trao đổi dữ liệu này. Việc di chuyển này có thể qua mạng không dây hoặc thậm chí qua đường dây điện thoại cố định.
Quản lý quy trình trong Linux
Một phiên (instance) của một chương trình hoạt động dựa trên dữ liệu hoặc thông tin trong bộ nhớ được gọi là một quy trình (process). Nhân Linux có nhiệm vụ tạo và theo dõi các vùng nhớ này. Nó cấp phát bộ nhớ cho một chương trình đang chạy, tải code thực thi vào bộ nhớ từ hệ thống tệp và chạy code.
Nhân Linux hỗ trợ đa nhiệm, nghĩa là nó có thể chạy nhiều quy trình cùng một lúc. Tuy nhiên, chỉ có một giao dịch trong bất kỳ một khung thời gian nhất định nào. Tuy nhiên, nhân Linux chia thời gian thành nhiều phần nhỏ và nhờ đó mỗi quy trình diễn ra tuần tự.
Bởi vì các phân đoạn thời gian này có gia số mili giây, chúng chỉ hoạt động tại các thời điểm cụ thể và “nghỉ ngơi” trong thời gian còn lại. Công việc của nhân Linux là tối đa hóa hiệu suất bằng cách chạy nhiều quy trình cùng một lúc.
Nếu khung thời gian quá dài, ứng dụng đang chạy có thể không phản hồi như mong muốn. Nếu khung thời gian quá ngắn, việc thay đổi nhiệm vụ có thể gặp vấn đề. Tùy thuộc vào mức độ ưu tiên của quy trình, khung thời gian được yêu cầu ở đây sẽ khác nhau. Bạn có thể đã từng nghe nói về các quy trình có mức độ ưu tiên cao và thấp. Đó là một trong những chức năng mà nhân Linux điều khiển.
Lời giải thích trên không phải lúc nào cũng đúng. Hạn chế thực sự ở đây là chỉ có thể có một quy trình trên mỗi lõi bộ xử lý tại một thời điểm nhất định. Hệ thống đa xử lý cho phép một số quy trình chạy song song. Một hệ thống cơ bản hầu như luôn có hàng chục quy trình đang chạy.
Quyền truy cập trong Linux
Giống như các hệ điều hành khác, bạn có thể tạo nhiều người dùng trên một hệ thống Linux. Trong trường hợp đó, có một hệ thống quản lý quyền hỗ trợ người dùng cá nhân và nhóm.
Nhân Linux quản lý dữ liệu và kiểm tra các quyền cần thiết cho mỗi quy trình. Ví dụ, nếu bạn cố gắng mở một tệp, hạt nhân phải đối chiếu ID tiến trình với các quyền truy cập. Nếu hạt nhân kiểm tra và thấy rằng bạn có quyền, nó sẽ mở tệp cho bạn.
Nhân Linux kiểm soát mọi thứ
Như bạn có thể thấy, hạt nhân Linux giám sát mọi thứ, từ bảo mật tệp đến việc tạo người dùng và tải tệp xuống từ internet. Mọi thứ đều diễn ra theo một thứ tự nhất định. Mọi người dùng đều có các quyền nhất định. Nhân Linux quản lý các quy trình và khung thời gian để đạt hiệu suất cao nhất.
Hơn nữa, hệ thống tệp, một trong những đặc điểm nổi bật nhất phân biệt nhân Linux với các hệ điều hành khác, rất quan trọng. Trên Linux, tất cả các tệp và mã nguồn đều có thể truy cập được. Để hiểu rõ hơn về bản chất và sức mạnh của nhân Linux, bạn có thể kiểm tra phân cấp hệ thống thư mục Linux.
Vân Nguyễn
Dịch từ: https://www.makeuseof.com/how-does-the-linux-kernel-work/
Bình luận (0
)