TAILIEUCHUNG - LINUX DEVICE DRIVERS 3rd edition phần 3

và các hệ thống, dịch kiến thức của sáng tạo vào các kỹ năng hữu ích cho những người trong các chiến hào. cho các sự kiện sắp tới của chúng tôi. Safari Bookshelf () là thư viện tham khảo trực tuyến cho các lập trình viên và chuyên gia CNTT hàng đầu. | Just as importantly we will be performing an operation memory allocation with kmalloc that could sleep so sleeps are a possibility in any case. If our critical sections are to work properly we must use a locking primitive that works when a thread that owns the lock sleeps. Not all locking mechanisms ann be used where sleeping is a possibility we ll see some that don t later in this chapter . For our present needs however the mechanism that fits best is a semaphore. Semaphores are a well-understood concept in computer science. At its core a semaphore is a single integer value combined with a pair of functions that are typically called P and V. A process wishing to enter a critical section will call P on the relevant semaphore if the semaphore s value is greater than zero that value is decremented by one and the process continues. If instead the semaphore s value is 0 or less the process must wait until somebody else releases the semaphore. Unlocking a semaphore is accomplished by calling V this function increments the value of the semaphore and if necessary wakes up processes that are waiting. When semaphores are used for mutual exclusion keeping multiple processes from running within a critical section simultaneously their value will be initially set to 1. Such a semaphore can be held only by a single process or thread at any given time. A semaphore used in this mode is sometimes called a mutex which is of course an abbreviation for mutual exclusion. Almost all semaphores found in the Linux kernel are used for mutual exclusion. The Linux Semaphore Implementation The Linux kernel provides an implementation of semaphores that conforms to the above semantics although the terminology is a little different. To use semaphores kernel code must include asm . The relevant type is struct semaphore actual semaphores can be declared and initialized in a few ways. One is to create a semaphore directly then set it up with sema_init void sema_init struct semaphore sem

TỪ KHÓA LIÊN QUAN
TÀI LIỆU MỚI ĐĂNG
11    163    2    23-12-2024
65    137    1    23-12-2024
TAILIEUCHUNG - Chia sẻ tài liệu không giới hạn
Địa chỉ : 444 Hoang Hoa Tham, Hanoi, Viet Nam
Website : tailieuchung.com
Email : tailieuchung20@gmail.com
Tailieuchung.com là thư viện tài liệu trực tuyến, nơi chia sẽ trao đổi hàng triệu tài liệu như luận văn đồ án, sách, giáo trình, đề thi.
Chúng tôi không chịu trách nhiệm liên quan đến các vấn đề bản quyền nội dung tài liệu được thành viên tự nguyện đăng tải lên, nếu phát hiện thấy tài liệu xấu hoặc tài liệu có bản quyền xin hãy email cho chúng tôi.
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.