II. Các hàm chính trong GPIO:
THAO TÁC THỜI GIAN TRONG KERNEL I.Sơ lược về thời gian trong kernel:
I. Sơ lược về thời gian trong kernel:
Thời gian trong hệ điều hành linux nói riêng và các hệ điều hành khác nói chung đều rất quan trọng. Trong hệ điều hành, những hoạt động đều dựa theo sự tác động mang tính chất chu kỳ. Chẳng hạn như hoạt động chia khe thời gian thực thi, chuyển qua lại giữa các tiến trình với nhau, đồng bộ hóa hoạt động giữa các thiết bị phần cứng có thời gian truy xuất không giống nhau, và nhiều hoạt động quan trọng khác nữa.
Khi làm việc với hệ thống linux, chúng ta cần phân biệt hai khái niệm thời gian: Thời gian tuyệt đối và thời gian tương đối. Thời gian tuyệt đối được hiểu như thời gian thực của hệ thống, là các thông tin như ngày-tháng-năm-giờ-phút-giây và các đơn vị thời gian khác nhỏ hơn, phục vụ cho người sử dụng. Thời gian tương đối được hiểu như những khoảng thời gian được cập nhật không cố định, mang tính chất chu kỳ, mốc thời gian khơng cố định và thơng thường khơng biết trước. Ví dụ thời gian tuyệt đối là thời điểm trong một ngày, có mốc thời gian tính từ ngày 1 tháng 1 năm 1970 quy định trong các thiết bị thời gian thực. Thời gian tương đối là khoảng thời gian tính từ thời điểm xảy ra một sự kiện nào đó, chẳng hạn định thời tác động một khoảng thời gian sau khi hệ thống có lỗi hoặc cập nhật thơng số hiện tại của hệ thống sau mỗi một thời khoảng cố định.
Để có thể kiểm tra, quản lý và thao tác với thời gian một cách chính xác, hệ điều hành phải dựa vào thiết bị thời gian được tích hợp trên hầu hết các vi xử lý đó là timer. Timer được sử dụng bởi hệ điều hành được gọi là timerhệ thống, hệ điều hành cài đặt các thông số thích hợp cho timer, quy định khoảng thời gian sinh ra ngắt, khoảng thời gian giữa hai lần xảy ra ngắt liên tiếp được gọi bởi thuật ngữ tick, giá trị của tick do người sử dụng
driver quy định. Khi xảy ra ngắt, hệ điều hành linux sẽ cập nhật giá trị của biến jiffies,
chuyển tiến trình, cập nhật thời gian trong ngày, ...
Trong phần lập trình user application, chúng ta đã tìm hiểu những hàm thao tác với
thời gian user space. Đây là những hàm được hỗ trợ sẵn bởi hệ điều hành, nghĩa là chúng được lập trình để hoạt động ổn định khơng gây ảnh hưởng đến các tiến trình khác chạy
đồng thời. Trong kernel, những hàm thao tác với thời gian hoạt động bên ngồi tầm kiểm sốt của hệ điều hành, sử dụng trực tiếp tài nguyên phần cứng của hệ thống, cụ thể là thời gian hoạt động của vi xử lý trung tâm trong vi điều khiển. Vì thế nếu sử dụng khơng phù hợp thì hệ điều hành sẽ hoạt động khơng ổn định, xảy ra những lỗi về thời gian thực trong khi thực hiện tác vụ. Nhưng thời gian thực hiện của các hàm này sẽ nhanh hơn, vì khơng qua trung gian là hệ điều hành, phù hợp với yêu cầu điều khiển của driverlà nhanh chóng và chính xác.
Trong bài này, đầu tiên chúng ta sẽ tìm hiểu nguyên tắc quản lý thời gian trong kernel, sau đó là các hàm tương tác, xử lý thời gian thực, cách sử dụng định thời trong timer, và cuối cùng là một số kỹ thuật trì hỗn thời gian trong kernel.