Chào mừng các bạn đến với bài viết khám phá Linux của mình
Trong loạt bài viết Đây là series về Linux, mình sẽ chia sẻ 6 Core Concept của hệ điều hành Linux, bao gồm:
- Kernel
- Shell
- Users & Groups
- Directories & Files
- Permissions
- Process
Mở bài
2 Core Concept mình sẽ giới thiệu trong phần này:
- Kernel ✅
- Shell ✅
1. Kernel
Kernel (nhân) là một phần mềm, nói đúng hơn là một phần mềm hệ thống nằm trong hệ điều hành Linux. Kernel là một phần rất quan trọng và được ví như là trái tim của Linux
Các phần mềm khác tương tác với Kernel thông qua các interface (giao diện) mà Kernel cung cấp. Các interface này cho phép phần mềm gửi yêu cầu tới Kernel, Kernel xử lý và truy cập tài nguyên phần cứng, sau đó phản hồi lại. Nhờ thế mà các phần mềm có thể sử dụng được các tính năng và tài nguyên của hệ thống
Kernel đảm nhận các vai trò như:
-
Quản lý bộ nhớ: Kernel chịu trách nhiệm cấp phát và giải phóng bộ nhớ cho các tiến trình trong hệ thống. Đảm bảo rằng các tiến trình chỉ truy cập vào các vùng nhớ được cho phép
-
Quản lý tiến trình: Kernel có vai trò khởi tạo, chấm dứt và lập lịch các tiến trình trong hệ thống. Đảm bảo rằng mỗi tiến trình được cung cấp đủ tài nguyên để thực thi và giám sát hoạt động của chúng
-
Giao tiếp với phần cứng: Kernel cung cấp một giao diện giữa phần mềm và phần cứng trong hệ thống, chịu trách nhiệm nhận các yêu cầu và phản hồi lại các yêu cầu
-
Quản lý hệ thống tệp tin: Kernel xử lý các yêu cầu như tạo, sửa, xóa, di chuyển, phân quyền các tệp tin trong hệ thống máy tính
-
Quản lý mạng: Kernel hỗ trợ các giao thức mạng và điều khiển hoạt động mạng. Nó quản lý việc kết nối, truyền và nhận dữ liệu qua mạng
-
Bảo mật hệ thống: Kernel đảm bảo an toàn và bảo mật cho hệ thống bằng cách kiểm soát quyền truy cập và cung cấp các cơ chế bảo mật
Có thể các bạn đã biết hoặc chưa, Chrome V8 (JavaScript engine trên Chrome/NodeJS) có nhiều tính năng quan trọng, bao gồm quản lý bộ nhớ. Chrome V8 không thể tương tác trực tiếp tới RAM, nó cần phải sử dụng các interface mà Kernel cung cấp, Kernel sau đó thực thi dựa trên các yêu cầu mà V8 gửi tới và truy cập vào RAM
2. Shell
Shell là một phần mềm hệ thống, là command-line interface (giao diện dòng lệnh) trong Linux, nằm trung gian giữa người dùng và Kernel
Shell có vai trò như là một trình thông dịch hoặc trình biên dịch dòng lệnh, nó đọc các lệnh từ người dùng, xử lý và gửi yêu cầu tới Kernel để Kernel thực thi. Shell cung cấp hàng loạt các chức năng tiện ích để người dùng tương tác được với hệ thống
Khi bạn thao tác trên GUI như tạo folder chẳng hạn, bản chất ở background nó đã sử dụng lệnh mkdir
để gửi yêu cầu đến Kernel đấy (Mình có một bài viết giả lập lệnh mkdir
bằng NodeJS, các bạn có thể đọc tại đây)
Một số shell phổ biến:
- bash (shell mặc định của hầu hết các bản phân phối Linux ngày nay)
- sh
- zsh (mình đang sử dụng cái này, khá hữu ích)
- ...
Một số lệnh phổ biến của shell:
- mkdir
- cd
- ls
- touch
- ...
Kết bài
Với những kiến thức mình chia sẻ ở trên, mình hy vọng các bạn đã có một cái nhìn đầu tiên về Kernel và Shell trong Linux
Theo mình, dù không phải là System Admin hay chỉ là một Web Developer như mình, tìm hiểu một chút về hai thành phần này cũng sẽ giúp chúng ta có cái nhìn tổng quan về hệ điều hành Linux, điều này có thể giúp chúng ta hiểu và thực hiện một số tác vụ cơ bản, và đồng thời cung cấp nền tảng để tiếp tục học hỏi và khám phá sâu hơn các phần khác
Follow mình để cùng nhau khám phá những phần tiếp theo. Cảm ơn các bạn đã đọc