Menu
CoddyTech

Syscall là gì?

Thuộc phần Kiến thức nền tảng trong hành trình Assembly của Coddy. Bài học 31 trên 45.

Bạn đã viết các chỉ thị assembly như mov và lea. Những chỉ thị này chạy trực tiếp trên CPU. Nhưng nếu bạn cần làm điều mà CPU không thể tự làm, chẳng hạn như in ra màn hình, đọc từ bàn phím hoặc thoát khỏi chương trình thì sao?

Với những nhiệm vụ này, bạn cần có hệ điều hành (Linux trong khóa học này).

Syscall là gì?

Syscall (lời gọi hệ thống) là yêu cầu mà chương trình của bạn gửi đến hệ điều hành. Đây là cách bạn yêu cầu hệ điều hành làm việc gì đó cho bạn.

Tại sao bạn cần syscall:

Tác vụCPU có thể tự thực hiện không?Có cần syscall không?
Cộng hai sốCóKhông
Di chuyển dữ liệu giữa các thanh ghiCóKhông
In văn bản ra màn hìnhKhôngCó
Đọc dữ liệu đầu vào từ bàn phímKhôngCó
Thoát khỏi chương trìnhKhôngCó
Mở tệpKhôngCó

Cách syscall hoạt động:

  1. Bạn đặt số syscall vào rax (cho hệ điều hành biết bạn muốn làm gì)
  2. Bạn đặt đối số vào các thanh ghi khác (rdi, rsi, rdx, v.v.)
  3. Bạn thực thi lệnh syscall
  1. CPU chuyển đến nhân hệ điều hành
  2. Hệ điều hành thực hiện yêu cầu
  3. Hệ điều hành trả quyền điều khiển về chương trình của bạn

Phép so sánh:

Hãy hình dung syscall giống như việc gọi đến một cơ quan chính phủ:

BướcPhép so sánhTrong assembly
1Quyết định dịch vụ bạn cầnChọn số syscall (đưa vào rax)
2Điền vào biểu mẫuĐưa các đối số vào thanh ghi
3Gửi yêu cầuThực thi syscall
4Chính phủ xử lý yêu cầuNhân OS thực hiện công việc
5Nhận lại kết quảChương trình tiếp tục chạy

Các syscall bạn sẽ học trong khóa học này:

SyscallSốChức năngChương
exit60Kết thúc chương trìnhChương 4
write1In văn bản ra màn hìnhChương 5

Lệnh gọi hệ thống quan trọng nhất lúc này: exit

Nếu không có exit, chương trình của bạn sẽ chạy mãi hoặc gặp sự cố. Mọi chương trình bạn viết đều phải kết thúc bằng một lệnh gọi hệ thống exit.

mov rax, 60    ; Số hiệu syscall để thoát
mov rdi, 0     ; Mã thoát (0 = thành công)
syscall        ; Yêu cầu hệ điều hành thoát

Tự làm thử

Bài học này không có thử thách code.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Playground Assembly