Trình điều khiển card mạng làm gì?


2

Hệ điều hành có thể ghi dữ liệu trực tiếp lên bus PCI không và card mạng có thể gửi dữ liệu qua cáp không? Trình điều khiển làm gì và điều đó khác nhau như thế nào đối với mỗi chipset card mạng?


1
Tôi không chắc chắn nên đặt nó ở đâu, nhưng vì đó là về hành vi của các trình điều khiển, đó là phần mềm, được tạo ra bằng phương tiện lập trình, tôi nghĩ rằng nó sẽ phù hợp hơn với SO.

@futlib: Tôi có thể thấy những gì bạn đang nói, nhưng thật không may, đây không phải là một câu hỏi lập trình cụ thể. Các câu hỏi lập trình chung được gửi tới lập trình viên.stackexchange.com, nhưng tôi nghĩ điều này tốt hơn trong SuperUser (đó không phải là điều mà các lập trình viên thực sự cần biết). Nếu câu hỏi của bạn là "Tôi đang viết trình điều khiển mạng, thì cách tốt nhất để cấu trúc các gói trong bộ nhớ là gì?", Đó là câu hỏi Stack Overflow. "Tôi đang viết một trình điều khiển mạng, tôi phải bắt đầu từ đâu?" là một câu hỏi lập trình viên. Hy vọng điều này sẽ giúp ích, và tôi hy vọng bạn nhận được một câu trả lời tốt cho câu hỏi của bạn, bao giờ trao đổi nó kết thúc vào :)
Binary Worrier

@Binary Worrier Đồng ý với bạn. Nhưng tôi không nghĩ rằng những người dùng siêu hạng có thể trả lời tốt điều này. Anh ta có thể lo lắng về điều đó.
Benjamin

Câu trả lời:


1

Mỗi chip mạng sẽ có các thanh ghi I / O khác nhau, bộ đệm ánh xạ bộ nhớ, cách phát hiện tốc độ giao diện và tất cả các loại khác biệt kỹ thuật cơ bản khác.

Công việc của trình điều khiển chỉ đơn giản là trừu tượng hóa những khác biệt đó để O / S có API chung để di chuyển các gói từ các lớp mạng cao hơn xuống phần cứng (và ngược lại).


Vì vậy, nó không chỉ là một phương tiện ghi dữ liệu vào RJ45, tương tự như bộ chuyển đổi từ USB sang USB? Bạn có thể phác thảo một chút những gì một card mạng phải làm để truyền dữ liệu?

@Anonymous (futlib?), Kiểm tra câu trả lời của tôi. Mạng chắc chắn không chỉ là gửi tín hiệu điện qua dây dẫn.
Synetech

0

Nói chung, bất kỳ trình điều khiển thiết bị nào cũng có giao diện giữa chế độ xem 'trừu tượng' về phần cứng mà hệ điều hành có và chipset 'vật lý' thực sự tồn tại trên bo mạch.

Lớp trừu tượng này cho phép phần cứng khác nhau từ các nhà cung cấp khác nhau được sử dụng trong nhiều hệ điều hành khác nhau. Nó cũng cho phép các thiết bị 'phần mềm' (như thiết bị quay vòng mạng) được triển khai mà không có bất kì phần cứng cơ bản để kiểm soát.

Để tìm chính xác những gì một trình điều khiển cụ thể làm, bạn sẽ cần phải hiểu các biểu dữ liệu cho các chip mà nó điều khiển.


0

Điều đó có thể, nhưng vấn đề với đó là mỗi nhà sản xuất chipset NIC thiết kế các thiết bị của họ khác nhau và do đó một mô hình của NIC có thể yêu cầu bạn viết tại một địa chỉ và một mô hình khác có thể yêu cầu bạn viết tại một địa chỉ khác. Ngoài việc xem xét các bảng dữ liệu chipset của NIC như @Roddy gợi ý để tìm hiểu chính xác cách họ đi về nó, bạn cũng có thể xem nguồn trình điều khiển Linux cho chipset đó.

Một số NIC tiên tiến sử dụng DMA và như vậy để vận hành khá nhiều cách bạn nói. Người lái xe trong trường hợp đó thực sự không làm được gì nhiều.

Dễ dàng cập nhật một hệ điều hành với trình điều khiển mới hơn là đi xung quanh và cập nhật mọi chương trình duy nhất sử dụng một NIC.


0

Mỗi phần cứng khác với các phần khác cùng loại, ngay cả khi tuân thủ các tiêu chuẩn. Đó là lý do tại sao bạn cần trình điều khiển; để đơn giản hóa việc sử dụng phần cứng bằng cách cung cấp một giao diện chung. Bạn hỏi liệu hệ điều hành có thể đơn giản ghi vào đầu ra không. Có nó có thể; nó làm điều này thông qua trình điều khiển của nó.

Cụ thể hơn về card mạng, bạn hỏi liệu HĐH có thể ghi vào bus PCI, thông qua thẻ, ra cáp và qua Internet không. Vấn đề với câu hỏi đó là bạn không quen với mạng. Đó là một điều phức tạp ngoài việc gửi điện áp qua dây dẫn. Bạn đang quên về tất cả các công việc cho phép một web phức tạp như vậy hoạt động giống như tất cả các địa chỉ và như vậy, nó không chỉ mã hóa hoặc giải mã tín hiệu điện.

Bạn sẽ muốn nhìn qua Mô hình OSI để tìm hiểu làm thế nào mạng hoạt động. Nó phân tách công việc chuyển dữ liệu giữa các máy tính (hoặc các thiết bị khác) thành bảy lớp khác. Mỗi lớp chịu trách nhiệm cho phần riêng của mình; HĐH đóng vai trò là trình điều khiển và thẻ.


Nhưng không phải card mạng chỉ chịu trách nhiệm cho lớp 1? Đó là những gì tôi luôn nghĩ.
futlib

Nói chung là có, và đó là lý do mà một số phần mềm được yêu cầu để xử lý các phần khác. HĐH chỉ có thể xử lý rất nhiều (hãy xem cách xử lý đồ họa trong những ngày DOS, trước khi DirectX ra mắt). Trình điều khiển giống như một chất kết dính giữa các API cấp cao hơn của HĐH và các giao diện cấp thấp hơn của phần cứng. Vâng, hệ điều hành có thể Bản thân nó làm điều đó, nhưng nó sẽ làm như vậy bằng cách tích hợp trình điều khiển.
Synetech

Những phần khác nói riêng? Tôi tin rằng ngăn xếp TCP / IP thường độc lập với thiết bị, vì vậy trình điều khiển NIC sẽ chỉ thực hiện lớp 2, xem xét rằng lớp 1 được xử lý bởi phần cứng?
futlib
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.