Linux kernel giống 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, cũng như quản lý tài nguyên của hệ thống. Linus Torvalds đã phát triển Linux kernel với C và Assembly, do đó, ông đã thành công trong việc tạo ra một lõi nhẹ và portable được phát hành ra công chúng dưới dạng mã nguồn mở.
Bạn có thể thấy Linux kernel trong nhiều lĩnh vực khác nhau như không gian, máy tính, đồng hồ thông minh, điện thoại di động, robot và sức khỏe. Nhưng bạn đã bao giờ tự hỏi Linux kernel hoạt động như thế nào chưa?
Sử dụng phần cứng trên Linux
Trước hết, Linux kernel kiểm soát phần cứng nào sẽ chạy và theo cách nào khi bạn bật máy tính của mình. Ngoài ra, có thể kiểm soát phần mềm cao cấp nhờ vào giao diện lập trình (programming interface). Để đưa ra ví dụ về các chức năng điều khiển này, bạn có thể xem thông tin về phần cứng được cài đặt trong các khe cắm trên bo mạch chủ của mình và hưởng lợi từ thông tin chi tiết này.
Ngoài ra, giao diện lập trình này cung cấp một lớp trừu tượng. Ví dụ, nếu muốn trò chuyện video với bạn bè, bạn sẽ cần một webcam. Lớp trừu tượng giúp phần mềm bạn sử dụng có thể sử dụng webcam này bất kể nhà sản xuất và model là gì. Phần mềm ở đây chỉ có thể sử dụng interface tồn tại cho Linux. Linux kernel chuyển các lệnh gọi hàm của interface này thành những lệnh phần cứng thực tế mà webcam cần.
Sử dụng hệ thống file ảo /proc và /sys, Linux kernel 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, bạn có thể thấy một số công cụ được sử dụng cho việc này, cũng như thiết bị và card nào chúng xuất:
- lspci: Dành cho thiết bị PCI
- lsusb: Dành cho thiết bị USB
- lspcmcia: Đối với card PCMCIA
Như bạn có thể thấy, bản phân phối Linux trong ảnh chụp màn hình ở trên chạy trên VirtualBox. Tuy nhiên, bạn có cơ hội xem rất nhiều thông tin như VGA controller, USB, bridge và SATA controller.
Bạn cũng có thể sử dụng tham số -v để biết thêm thông tin chi tiết.
Trong Linux kernel, các ứng dụng thường truy cập thiết bị thông qua những file đặc biệt tồn tại trong thư mục /dev. Các file đặc biệt này đại diện cho ổ đĩa và những thiết bị vật lý khác. Các file như /dev/hda, /dev/sdc, /dev/sdc3, /dev/input/mouse0 và dev/snd/* là những ví dụ về các file đặc biệt này.
Quản lý hệ thống file Linux
Hệ thống file là một trong những thành phần đáng chú ý nhất của Linux kernel. Hệ thống file Linux là một trong những lợi ích lớn nhất của nó. Tất cả các file trên hệ thống Linux tập hợp thành một nhánh duy nhất. Do đó, người dùng có thể sử dụng hệ thống phân cấp này để đến những nơi họ mong muốn.
Điểm bắt đầu của cấu trúc phân cấp này là thư mục root (/). Các thư mục con khác nằm dưới thư mục root. Thư mục con được sử dụng nhiều nhất trong / là thư mục /home. Thư mục con này chứa các thư mục con khác và mỗi thư mục có những file lưu trữ dữ liệu thực tế.
Ví dụ, bạn có thể nghĩ về một file văn bản trên desktop. Nếu bạn tạo một file văn bản có tên helloworld.txt trên desktop, bạn có thể gọi nó là /home/muo/Desktop/helloworld.txt. Ví dụ về /muo ở đây tất nhiên sẽ thay đổi tùy theo từng trường hợp. Vì tên thư mục con này phụ thuộc vào tên người dùng hiện tại của bạn. Với hệ thống đặt tên này, Linux kernel chuyển đổi giữa lưu trữ thực tế và lưu trữ vật lý tồn tại trên ổ đĩa.
Ngoài ra, Linux kernel có thể tích hợp dữ liệu từ một số ổ đĩa. Đây là lúc hệ thống mount phát huy tác dụng. Nó sử dụng một trong các ổ đĩa trong hệ thống root và mount những ổ đĩ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 những điểm mount. Điều này cho phép người dùng lưu trữ thư mục /home trên ổ cứng thứ hai cũng chứa các thư mục con khác.
Khi 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 đó, những đường dẫn như /home/muo/Desktop/helloworld.txt tiếp tục hoạt động.
Bạn có thể xem các điểm mount giữa các file 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 file, bạn có thể lưu trữ dữ liệu trên ổ đĩa. Được biết đến rộng rãi nhất trên Linux là các định dạng hệ thống file ext2, ext3 và ext4. Tuy nhiên, có nhiều định dạng hệ thống file khác. Trong mọi trường hợp, bạn phải định dạng hệ thống file trước khi mount 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” – tạo hệ thống file và ext3 là hệ thống file) cho việc này.
Các lệnh này chấp nhận đường dẫn file thiết bị mà bạn muốn định dạng làm tham số. Đây là một hoạt động mang tính rủi ro và bạn nên sử dụng nó một cách thận trọng nếu không muốn vô tình xóa hoặc reset lại hệ thống file.
Ngoài ra, còn có các hệ thống file mạng như NFS mà Linux kernel sử dụng. NFS là một hệ thống file mạng nơi dữ liệu không được lưu trữ trên ổ đĩa cục bộ. Với NFS, dữ liệu đi qua mạng tới một máy chủ lưu trữ dữ liệu. Vì dữ liệu sẽ nằm trên một máy chủ nên người dùng không phải liên tục xử lý nó. Họ cũng có thể sử dụng hệ thống file phân cấp truyền thống của Linux như bình thường.
Những chức năng chung
Tất cả các phần mềm trong hệ thống Linux đều có những chức năng chung. Đây là lý do tại sao các chức năng này là trung tâm trong Linux kernel. Ví dụ, khi mở một file, bạn chỉ có thể mở bằng tên file mà không cần biết file đó được lưu trữ vật lý ở đâu, nó sẽ sử dụng những chức năng và hoạt động nào. Tất cả các chức năng này đã có trong kernel.
Bạn có thể lưu trữ file của mình trên ổ cứng, phân chia file giữa nhiều ổ cứng hoặc thậm chí giữ file trên máy chủ từ xa. Các chức năng giao tiếp file được chia sẻ 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 bất kể dữ liệu được di chuyển như thế nào. Các chức năng giao tiếp được chia sẻ ở đó để thực hiện những quá trình 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í là đường dây điện thoại cố định.
Quản lý tiến trình trong Linux
Phiên bản active của một chương trình hoạt động trên dữ liệu hoặc thông tin trong bộ nhớ được gọi là một tiến trình. Nhiệm vụ của Linux kernel là tạo và theo dõi các vùng nhớ này. Kernel cấp phát bộ nhớ cho một chương trình đang chạy và load code thực thi vào bộ nhớ từ hệ thống file. Ngay sau đó, kernel chạy code.
Linux kernel hỗ trợ đa nhiệm. Nó có khả năng chạy nhiều tiến trình cùng một lúc. Tuy nhiên, chỉ có một giao dịch trong bất kỳ khung thời gian nhất định nào. Tuy nhiên, Linux kernel chia thời gian thành nhiều phần nhỏ và kết quả là mỗi thủ tục diễn ra tuần tự.
Bởi vì các phân đoạn thời gian nhỏ này có gia số mili giây, chúng chỉ hoạt động tại những thời điểm cụ thể và không hoạt động trong thời gian còn lại. Công việc của Linux kernel ở đây là tối đa hóa hiệu suất bằng cách chạy nhiều tiến trình cùng một lúc.
Nếu khoảng thời gian quá dài, ứng dụng đang chạy có thể không phản hồi như bạn mong muốn. Nếu khung thời gian quá ngắn, có thể có vấn đề với việc thay đổi nhiệm vụ. Tùy thuộc vào mức độ ưu tiên của tiến trình, khoảng thời gian được yêu cầu ở đây sẽ khác nhau. Bạn có thể đã nghe nói về các tiến trình có mức độ ưu tiên cao và những tiến trình có mức độ ưu tiên thấp trước đây. Đây là một trong những chức năng mà Linux kernel điều khiển.
Lời giải thích này không phải lúc nào cũng đúng. Hạn chế thực sự là chỉ có thể có một tiến trình công nhân trên mỗi lõi bộ xử lý tại một thời điểm. Hệ thống đa xử lý cho phép một số tiến trình chạy song song. Một hệ thống cơ bản hầu như luôn có hàng tá tiến trình đang chạy.
Quyền truy cập trong Linux
Cũ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 những trường hợp như vậy, có một hệ thống quản lý quyền hỗ trợ người dùng cá nhân và nhóm. Đây là nơi quyền của người dùng và file phát huy tác dụng.
Linux kernel quản lý dữ liệu và kiểm tra các quyền cần thiết cho mỗi tiến trình. Ví dụ, nếu bạn cố gắng mở một file, kernel phải kiểm tra ID tiến trình đối với các quyền truy cập. Nếu kernel kiểm tra và thấy rằng bạn có quyền, nó sẽ mở file.
Như bạn có thể thấy, Linux kernel giám sát mọi thứ từ bảo mật file đến việc tạo người dùng và tải file xuống từ Internet. Mọi thứ đều theo một thứ tự nhất định. Mọi người dùng đều có quyền. Linux kernel quản lý các tiến trình và khoảng thời gian để đạt hiệu suất cao nhất.
Hơn nữa, hệ thống file, là một trong những đặc điểm lớn nhất giúp phân biệt Linux kernel với các hệ điều hành khác, rất quan trọng. Linux không phải là một thứ gì đó bí ẩn. Ngược lại, tất cả các file và mã nguồn đều có thể truy cập được. Để hiểu rõ hơn về bản chất thực tế và mạnh mẽ của Linux kernel, bạn có thể kiểm tra phân cấp hệ thống thư mục Linux.