Trở về

Thứ Sáu, 7 tháng 11, 2025

XV6 - P2

cover
Skull - Vincent van Gogh (1887)

Overview

Trong chuỗi bài viết này, chúng ta sẽ cùng học về XV6: a simple, Unix-like teaching operating system. Chúng ta sẽ học được một hệ điều hành sẽ hoạt động như thế nào, cách nó ảo hoá, quản lý tài nguyên trên máy tính. Sau mỗi chương ta sẽ cùng thực hành để củng cố kiến thức nhé.

~ Lẹt gô ~

Chapter 2 - Operating system organization

Ba yêu cầu cốt lõi của hệ điều hành

  1. Multiplexing: đảm bảo có thể thực hiện nhiều tác vụ cùng một lúc, chia sẻ tài nguyên đồng đều giữa các process và phải đảm bảo các process có thể hoạt động được ngay cả khi số process nhiều hơn số CPU
  2. Isolation: tạo ranh giới rõ ràng giữa các process, nếu một process bị lỗi thì nó phải không làm ảnh hưởng các process khác.
  3. Interaction: dù các process có ranh giới rõ ràng với nhau, nhưng nó cũng cần phải có khả năng tương tác với nhau một cách có chủ đích.

Để có được ba khả năng trên, ta cùng tìm hiểu về kiến trúc hệ thống có thể đảm bảo được ba điều đó.

User mode, supervisor mode, machine mode and system calls

Có thể coi CPU như là một finite state machine (FSM - máy trạng thái hữu hạn), mỗi một trạng thái sẽ có một đặc quyền riêng chỉ trạng thái đó có được. Với cơ chế này, ta có thể đáp ứng mức cô lập cho từng ứng dụng vì khi một instruction chuẩn bị thực thi, địa chỉ của nó sẽ được load lên program counter (thanh ghi PC) sau đó sẽ địa chỉ sẽ được chuyển sang instruction register (IR) và load lên CPU để thực thi. Khi đó ta có một khoảng thời gian để chuẩn bị state của CPU để thực thi câu lệnh đó.

Ta đi vào những mode của hệ điều hành

  • Machine mode: chế độ mạnh nhất, được phép thực thi mọi câu lệnh với đầy đủ đặc quyền. Chế độ này chủ yếu được dùng khi boot hệ điều hành, khi CPU được khởi động.
  • Supervisor mode: chế độ được phép thực thi privileged instructions, có thể đọc/ghi thanh ghi chứa địa chỉ page table và các lệnh đặc biệt khác. Những ứng dụng chạy ở supervisor mode được gọi là Kernel.
  • User mode: chế độ chỉ được thực thi các phép cộng trừ,... không thể thực thi privileged instructions.

Từ đây ta thấy vấn đề, user mode không thể tương tác với kernel. Để làm được điều đó, các hệ điều cung cấp một lệnh đặc biệt để chuyển từ user mode sang supervisor mode để thực hiện system calls. Kernel sẽ kiểm soát ứng dụng nào được phép chuyển mode, ứng dụng nào không được chuyển. Quy trình như sau:

  1. Ứng dụng thực thi lệnh x để chuyển mode.
  2. CPU chuyển sang supervisor mode và nhảy đến entry point do kernel chỉ định.
  3. Kernel kiểm tra tính hợp lệ của tham số và quyền của ứng dụng.
  4. Kernel quyết định cho phép hoặc từ chối yêu cầu.

Kernel organization

Cho tới thời điểm hiện tại, có nhiều kiểu tổ chức kernel nhưng chủ yếu xoay quanh hai kiểu tổ chức kernel chính trong hệ điều hành:

Monolithic Kernel

  • Monolithic Kernel là một kiểu kiến trúc mà toàn bộ hệ điều hành đều chạy ở supervisor mode.

  • Kiến trúc này đem lại sự tối giản trong khâu quản lý ứng dụng kernel dẫn đến các thành phần của hệ điều hành có thể dễ dàng phối hợp với nhau. Kết quả là kiến trúc của Linux và các variant của nó mà ngày hôm nay ta sử dụng.

  • Nhưng nhược điểm lớn nhất có thể nói tới là một phần trong kernel lỗi, có thể dẫn tới toàn bộ hệ điều hành sập. Ví dụ đáng kể đến là Sự cố CrowdStrike năm 2024

https://mst.gov.vn/su-co-crowdstrike-anh-huong-den-49-trieu-nguoi-gay-thiet-hai-14-ty-usd-197240812150331137.htm

The CrowdStrike software that caused the problem, the Falcon sensor, identifies and blocks hacking attempts. The sensor requires privileged access to the Windows operating system because it functions within the operating system's kernel - a layer of progamming that sits between the computer's hardware and userspace, where applications run. That means that Falcon sensor has access to the very core of computers running the software: they can interact in a way that bypasses many of Windows' built in security protections.

Tạm dịch:

Phần mềm CrowdStrike gây ra sự cố, cảm biến Falcon, có chức năng phát hiện và chặn các cuộc tấn công hack. Cảm biến này yêu cầu quyền privileged access vào hệ điều hành Windows vì nó hoạt động bên trong kernel của hệ điều hành - một lớp lập trình nằm giữa phần cứng máy tính và userspace, nơi các ứng dụng chạy. Điều đó có nghĩa là cảm biến Falcon có quyền truy cập vào chính lõi của máy tính chạy phần mềm này: chúng có thể tương tác theo cách bỏ qua nhiều biện pháp bảo vệ an ninh tích hợp sẵn của Windows.

Microkernel

Microkernel là kiến trúc mà chỉ phần tối thiểu chạy ở supervisor mode, phần lớn OS chạy ở user mode dưới dạng các "server". Ưu điểm là giảm rủi ro những lỗi nghiêm trọng làm sập cả hệ thống, an toàn hơn monolithic kernel.