+25

Đây là một bài viết về Linux (Phần 1)

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:

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

Người dùng chúng ta tương tác với hệ thống máy tính như nào?

Khi bạn mở terminal, bạn nhập một lệnh bất kỳ chẳng hạn là mkdir (lệnh tạo thư mục), thì lệnh mkdir này ở đâu ra nhỉ, không lẽ khơi khơi nhập vậy mà nó lại tạo được thư mục nhỉ? Các lệnh này là được các phần mềm shell cung cấp đó các bạn

Shell là một phần mềm, nhiều nhóm kỹ sư khác nhau trên thế giới đã tạo ra các phần mềm shell khác nhau, mỗi shell sẽ có các chức năng khác và giống nhau, nhưng mục đích chung vẫn là nhằm cung cấp cho người dùng sử dụng được các tính năng để tương tác với hệ thống máy tính và shell sẽ chịu trách nhiệm xử lý, thực thi các lệnh nhập từ người dùng bằng cách gửi yêu cầu tới kernel để kernel thực hiện các tác vụ hệ thống

Lấy ví dụ:

  • Kernel của Linux cung cấp một interface là tạo thư mục, ông kỹ sư A tạo ra một shell là B và đặt một lệnh là mkdir, khi bạn nhập mkdir thì sẽ tạo một thư mục. Và có một ông kỹ sư khác tên là C, ông C tạo ra một shell là D, đặt lệnh tạo thư mục là mkdirxxx và bạn cài đặt shell D này lên máy tính của bạn thì khi sử dụng bạn phải sử dụng mkdirxxx thì mới tạo thư mục được. Nếu bạn muốn, bạn vẫn có thể tạo một shell riêng cho bản thân mình và thích đặt tên lệnh như thế nào tùy thích

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ác bạn xem tiếp Phần 2 ở Đây là một bài viết về Linux (Phần 2). Cảm ơn các bạn đã đọc


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí