Thông tin tài liệu:
Bài giảng Chương 6: Linux System Calls do Phạm Quang Dũng biên soạn sau đây giúp các bạn hiểu rõ hơn về các nhóm hàm, sử dụng strace, kiểm tra quyền truy nhập file, flushing disk buffer, giới hạn tài nguyên, thiết lập quyền bộ nhớ.
Nội dung trích xuất từ tài liệu:
Bài giảng Chương 6: Linux System CallsChương 6. Linux System CallsPhạm Quang Dũnghttp://fita.hua.edu.vn/pqdungCác nhóm hàmCác hàm liên quan đến hệ thống được chia thành 2nhóm dựa vào cách chúng được thực thi:Hàm thư viện: là hàm bình thường đặt trong thư viện bênngoài chương trình. Các tham số được đặt trong cácthanh ghi của CPU hoặc trên stack. Sự thực hiện đượctruyền đến đoạn mã đầu của hàm (thường trong thư việnchia sẻ được nạp)System call: được thực thi trong Linux kernel. Các thamsố được chuyển đến và xử lý trong kernel đến khi lời gọikết thúc.2Linux cung cấp khoảng 200 system call. Một số đượcsử dụng cho chính hệ thống, số còn lại được sửdụng chỉ trong việc thực thi các hàm thư viện đặc biệtLiệt kê trong /usr/include/asm/unistd.hHầu hết các system call được khai báo trong36.1. Sử dụng straceLệnh strace theo dõi sự thực hiện của một chươngtrình khác, liệt kê bất cứ system call nào chươngtrình gọi và bất kỳ signal nào nó nhận được.% strace tên_CT [các_tham_số]Vd: % strace hostname46.2. access: kiểm tra quyền truy nhập filesystem call access xác định xem tiến trình gọi cóquyền truy nhập file hay không.access(ts1, ts2)ts1: đường dẫn tới filets2: chuỗi bit hoặc F_OK, R_OK, W_OK, X_OKGiá trị trả về:= 0 nếu tiến trình có các quyền trong ts2= -1 nếu có lỗi, mã lỗi được thiết lập thích hợp làENOENT (file không tồn tại)EACCES (không có quyền tới file hoặc thư mục chứa file)EROFS (khi yêu cầu ghi lên file có thuộc tính chỉ đọc)5