Có thực sự là một thứ như là đẩy đẩy?


8

Một khi bạn thoát khỏi vương quốc của tín hiệu điện và đang xử lý phần mềm, có thực sự là một kiến ​​trúc "đẩy" trong đó không có bỏ phiếu định kỳ?

Tôi không thể nghĩ ra bất kỳ thiết kế nào mà nó không bỏ phiếu ở một mức độ nào đó. Có vẻ như nó luôn chỉ là một hoặc hai cấp dưới mức trừu tượng / API thực tế mà bạn đang xử lý. Các ổ cắm ở cuối nhận được hầu hết các kết nối "đẩy" chỉ thăm dò ý kiến ​​cho các yêu cầu đến, v.v.


4
Bạn có coi một ngắt kích hoạt phần cứng là "bỏ phiếu" không?
Oliver Charlesworth

Tôi sẽ nói không. Nhưng những hệ thống phần mềm nào thực sự có thể sử dụng chúng (đặc biệt là trong lĩnh vực ứng dụng được nối mạng)?
John Cromartie

5
lập trình ổ cắm và ổ cắm web là "đẩy".
zzzzBov

Câu trả lời:


14

Tôi nghĩ Windows yêu cầu các ứng dụng bỏ phiếu cho IO cho đến NT và Windows 95. Các hệ điều hành có mục đích chung hiện đại đã loại bỏ khá nhiều nhu cầu bỏ phiếu. Khi ứng dụng của bạn yêu cầu đọc từ ổ cắm, chức năng đọc phải thực hiện cuộc gọi đến nhân hệ điều hành. HĐH đặt luồng cuộc gọi vào trạng thái treo. Khi các gói mạng xuất hiện, chúng kích hoạt một ngắt phần cứng được xử lý bởi HĐH. Nếu gói là ứng dụng mà bạn đang tìm kiếm, HĐH sẽ đưa luồng ra khỏi trạng thái treo và việc đọc có thể tiến hành. Nói cách khác, ứng dụng của bạn trên thực tế được kết hợp với lĩnh vực tín hiệu điện thông qua HĐH.


Cảm ơn bạn! Đây là một bản tóm tắt tuyệt vời. Tôi thực sự đã đọc "Code" của Charles Petzold và mới nhận được một phần về các ngắt. Tất cả điều này có ý nghĩa hơn nhiều bây giờ và tôi có thể thấy làm thế nào một thiết bị mạng và CPU và HĐH có thể phối hợp với nhau để thực hiện một kiến ​​trúc đẩy thực sự.
John Cromartie

2

kiến trúc websocket là một kiến ​​trúc đẩy, thực sự trao đổi và triển vọng cũng vậy. Các giao thức này luôn được kết nối với máy chủ và máy chủ sẽ gửi tin nhắn (đẩy chúng) bất cứ khi nào có tin nhắn ...


1

Tôi cũng sẽ xem xét các ổ cắm mà Charles đã trình bày chắc chắn là thiết kế "đẩy". Anh ấy dẫn bạn đi từ cõi tín hiệu điện lên, nhưng một chủ đề khác cần xem xét là các thiết kế "đẩy" hoàn toàn là các quyết định kiến ​​trúc ứng dụng và xảy ra ở các lớp trừu tượng cao hơn nhiều.

Các khung sự kiện điển hình sẽ được coi là đẩy, vì nguồn sự kiện sẽ kích hoạt các sự kiện bất kể ai đang lắng nghe chúng, hoặc nếu sự kiện chìm có thể theo kịp các sự kiện đó.

Một ví dụ khác, đó là lĩnh vực mà tôi làm việc, là truyền phát video. Chúng tôi làm việc với RTP (giao thức vận chuyển thời gian thực). Nó dựa trên UDP / IP và bản chất nó là một giao thức đẩy. Người gửi sẽ tiếp tục gửi video theo tốc độ mà họ chọn mà không bao giờ quan tâm nếu người nhận theo kịp nó.


1

Chắc chắn là có. Các ứng dụng ổ cắm UDP trong Unix, ví dụ, có thể là thuần túy. Nổi tiếng nhất sẽ là BSD Unix cổ điển syslogd, tuyên bố sẵn sàng chấp nhận các gói đến ("đẩy") và xử lý chúng. Không có giao tiếp ngược lại ở cấp ứng dụng hoặc giao thức ("trình tạo" thậm chí không biết liệu gói tin có được nhận và xử lý chính xác hay không). Ở cấp độ API trong ứng dụng nhận, có thể có các cơ chế tiếp nhận bỏ phiếu, đồng bộ hoặc gọi lại, hai trong số đó là cơ chế đẩy thuần túy.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.