Võ Duy Thành CHƢƠNG CÁC DỊCH VỤ NHÂN – KERNEL SERVICES ƴ Anh) đa taƴc vu Ʋ t nhân1 (kernel – tưƳ vêƳ sau xin đươ Ʋ c giữ nguyên ba Ʋ đươ Ʋ c Ʊ n băƳng tiêng Mô ƴ thaƳ nh Ʋ ng băƳng caƴc diƲch vu Ʋ mà nó cung cấp Tâ Ʋ p hơ Ʋ p caƴc diƲch vụ này câu điƲnh nghiã râtƴ rô ƴ Ʋ n Lâ Ʋ p triƳnh Ưng du Ʋ ng (Application Programming Interface – API) cho phép nên Giao diê Ʋ c ti ƴnh của kernel Khi mô tả các chức của một Ʊ dụng có thể tận dụng các đă ngươƳ i sư Ʊ chỉ các khái niệm được săƴp xêp ƴ Ʋ , người ta thươƳ ng triƳnh baƳ y vêƳ API đê kernel đa taƴc vu Ʋ i cu Ʋ u, chúng ta chỉ xem xét API dưới Ʊ a taƳ i liê mã nguồn thực Trong caƴc phâƳn coƳ n la Ʋ c thư Ʋ c hiê Ʋ n Ʊ n vaƳ chỉ sơ Ʊ ý tưởng để hiểu vêƳ caƴc chưƴ c ba Ʊ n Viê dạng đơn gia Ʋ c têƴ sẽ khác về tiểu tiết so với mô hiƳnh đươ Ʋ c triƳnh bày ở Tuy nhiên, chúng thư Ʋ c hiê Ʋ n cuƳ ng mô Ʋ t chưƴ c vẫn thư ̣ API cho tác vu Ʋ câƳn thiêtƴ cho viê Ʋ c qua Ʋ : Ʊ n lyƴ caƴc taƴc vu Hãy xét API cho kernel băƳng caƴc diƲch vu task_t *TaskCreate (void (*task)(void *data), void *data, int prior); status_t TaskStart (task_t *task); status_t TaskSuspend (task_t *task); status_t TaskResume (task_t *task); status_t TaskDelete (task_t *task); Ʋ t Ʋ thôƴng đa taƴc vu Ʋ cho tơƴi chúng ta ta Ʋ o Sẽ tuyệt đối không có điều gì xảy cho mô Ʊ Ʋ t hoă Ʋ c một số tác vụ Đê ta Ʋ o mô Ʋ t tác vụ, chúng ta sư Ʋ ng mô Ʋ t haƳ m coƴ tên hoă Ʋ c coƴ Ʊ du mô ƴ ƴ Ʋ TaskCreate Ít nhât, chúng ta cũng cần phải cung câp cho haƳ m naƳ y tên tương tư ƴ Ʋ t sô thông sôƴ sau: mô Ʋ t tro Ʊ , trỏ tới hàm thực thi các mã lệnh của tác vụ (task) - Mô ƴ lâƳn đâƳu tiên Ʋ t trỏ, trỏ tới dữ liệu là đối số của hàm noƴ đươ Ʋ c go Ʋ i đên - Mô (data) - Độ ưu tiên của tác vụ (prior) Ʊ trả về một trỏ, trỏ tới Khôiƴ điêu Ƴ khiêƱn taƴc vu Ʋ coƴ thê Ʋ – Task Control Dịch vụ tạo taƴc vu ƴ Ʋ t câu truƴc dữ liê Ʋ u chứa mọi thưƴ Block (TCB) mà được định nghĩa ở là task_t Đây laƳ mô Ʊ Ʊ laƳ m đôƴi sôƴ Ʋ t taƴc vu Ʋ Con tro Ʋ c sư Ʋ ng đê Ʊ này sau đoƴ coƴ thê đươ Ʊ du mà kernel cần để biết về mô Ʋ qua Ʋ khaƴc Ʊ n lyƴ taƴc vu tơƴi các dịch vu Ʋ c thi lê Ʋ nh ở trên, chúng ta giả sử rằng diƲch vu Ʋ tạo tác vụ sẽ Chú ý rằng, quaƴ triƳnh thư ƴ Ʋ đô Ʋ ng điƲnh điƲa chiƱ cho TCB vaƳ ngăn xêp stack Đồng thơƳ i chúng ta cũng gia Ʊ thiêtƴ răƳng tư ƴ laƳ cố định và đươ Ʋ c thiêtƴ lâ Ʋ pơ Ʋ t sôƴ trươƳ ng hơ Ʋ p, Ʊ a ngăn xêp Ʊ đâu đoƴ Trong mô kích thươƴc cu Ʋ ng pha Ʋ mình định địa chỉ cho TCB hoă Ʋ c/và stack và kích thước của stack Ʊ du Ʊ i tư ngươƳ i sư ƴ Ngoài ra, cũng có nhiều đối sô phụ có thể kèm ví dụ tên của tác vụ băƳng mã ASCII, giá trị thời gian lâyƴ mẫu… Nhân hay Kernel một hệ điều hành là phần cố t lõi của chương trình, cư trú bộ nhớ và thự c hiện hầ u hế t các nhiệm vụ điề u hành chính Ví dụ quản lý các hoạt động vào ra, quản lý bộ nhớ… Tài liệu chỉ mang tính tham khảo Nguyên văn tiế ng nước ngoài của Doug Abott Võ Duy Thành Ʊ hoă Ʊ khơ Ʊ , mô ƴ laƳ không thê Ʋ ta Ʋ o taƴc vụ có thê Ʋ c không thê Ʋ ng tác vụ Nêu Ʋ t diƲch vu Ʋ Ʊ i đô Dịch vu Ʋ ng tác vu Ʋ riêng biê Ʋ t đươ Ʋ c cung cấp Mô Ʋ t taƴc vu Ʋ đươ Ʋ c thư Ʋ c thi, nó có thể bị tạm Ʊ i đô khơ Ʋ p liƲch hoa Ʋ t đô Ʋ ng cho tơƴi dưƳ ng (treo – suspend) Khi biƲ treo, nó sẽ bị tách khỏi quá trình lâ ƴ ƴ Ʋ t taƴc vu Ʋ không coƳ n câƳn thiêtƴ nó được hồi phục (resume) theo chu kyƳ Cuôi cuƳ ng, nêu mô Ʊ biƲ xoƴa (delete) khỏi danh sách các tác vụ hoạt động Nói chung, các nữa, nó có thê hàm quản lý tác vụ ngoại trừ TaskCreate đều trả về kiểu status_t để chỉ rằng hàm đoƴ coƴ thực thi thành công hay không ̉ a định thời API cu void Delay (unsigned int ticks); void DelayUntil (time_t *time); void WaitTilNext (void); Ʋ t hàm có tên go Ʋ i tương tư Ʋ Delay để khóa tác vụ được gọi Mọi kernel đều có mô Ʋ t khoa Ʋ ng cu Ʋ ch thơƳ i gian Một số Ʋ Ʊ ng thời gian cố định tính theo số lần dao đô Ʊ a ma mô Ʊ của lệnh này DelayUntil để khóa tác vụ được gọi cho ƴ thê thôƴng cun ̃ g coƴ những biên Ʊ m côƴ điƲnh ngaƳ y Kiê Ʊ u dữ liê Ʊ u unsigned long int Ʋ t thơƳ i điê Ʋ u time_t laƳ kiê tơƴi mô WaitTilNext chỉ có hệ thống có hỗ trợ tác vụ theo chu kyƳ Hàm này khóa tác vụ Ʋ c go Ʋ i cho tơƴi lâƳn go Ʋ i lâƳn sau liƲch triƳnh lâ Ʋ p liƲch đươ Tài liệu chỉ mang tính tham khảo Nguyên văn tiế ng nước ngoài của Doug Abott