Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Trang 2 trên tổng số 3 Đầu tiênĐầu tiên 123 Cuối cùngCuối cùng
Từ 11 tới 20 trên tổng số 25 kết quả

Đề tài: Lập trình với ngắt thời gian

  1. #11
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    586

    Mặc định Lập trình với ngắt thời gian

    Trích dẫn Nguyên bản được gửi bởi emyeuvn Xem bài viết
    Em rút kinh nghiệm.Vậy hai anh nghĩ sao về lập trình driver. Em nghĩ chắc WInDOWS phải có công cụ nào đó cho họ phát triển các thiết bị mở rộng của họ phải không nào.
    Đúng. Windows cho phép viết driver, cả 2 loại driver (user mode, kernel mode) và dĩ nhiên, cũng cho phép đăng ký, hủy bỏ thủ tục xử lý ngắt. Có tài liệu hướng dẫn khá đầy đủ.

    Nhưng như mình đã nói, ở trên, để giải quyết vấn đề của bạn (#1), viết driver có lẽ là không cần thiết. Viết kernel driver rất khó, đòi hỏi rất nhiều kiến thức. Và driver liên quan đến đồng hồ chắc phải là kernel driver.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Đã được chỉnh sửa lần cuối bởi Ada : 24-10-2018 lúc 06:57 PM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  2. #12
    Ngày gia nhập
    08 2018
    Nơi ở
    Online
    Bài viết
    4

    Vấn đề của em là em muốn sử dụng 1 cái ngắt cứng về thời gian để thuật toán có thêm thông tin ra quyết định.Ví dụ còn nhiều thời gian ta cho nó xử dụng 1 thuật giải vét cạn rồi tìm đáp án ngon nhất chẳng hạn, nhưng với những tín hiệu báo hết giờ nó có thể Giải mò lấy 1 cái xài tạm cũng được.

  3. #13
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    586

    Trích dẫn Nguyên bản được gửi bởi emyeuvn Xem bài viết
    Vấn đề của em là em muốn sử dụng 1 cái ngắt cứng về thời gian để thuật toán có thêm thông tin ra quyết định.Ví dụ còn nhiều thời gian ta cho nó xử dụng 1 thuật giải vét cạn rồi tìm đáp án ngon nhất chẳng hạn, nhưng với những tín hiệu báo hết giờ nó có thể Giải mò lấy 1 cái xài tạm cũng được.
    Đó là ứng dụng nhúng. Cả hệ điều hành và ứng dụng gắn liền với nhau thành 1 sản phẩm. Nên chọn 1 hệ điều hành thích hợp cho mục đích này, hơn là Windows.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  4. #14
    Ngày gia nhập
    08 2018
    Nơi ở
    Online
    Bài viết
    4

    Diver thì chắc em không dám nghĩ tới nhưng cái kiến thức cài 1 ngắt chắc cũng ngắn gọn thôi. Nếu nó tồn tại em sẽ tìm kiếm.
    Nếu cho chương trình tự tính thời gian thì nó sẽ không thỏa mãn nhu cầu thực tế. Cho 1 modun kiểm soát và chỉ phát tín hiệu theo chu kì 5 10 15s cho modun thuật toán có lẽ là vấn đề em đang nghĩ tới. 1 cách hợp lý nhất có lẽ là nhờ hệ thống tính hộ thôi?Em nghĩ thế có sai chỗ nào không?

  5. #15
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    586

    Trích dẫn Nguyên bản được gửi bởi emyeuvn Xem bài viết
    Diver thì chắc em không dám nghĩ tới nhưng cái kiến thức cài 1 ngắt chắc cũng ngắn gọn thôi. Nếu nó tồn tại em sẽ tìm kiếm.
    Nếu cho chương trình tự tính thời gian thì nó sẽ không thỏa mãn nhu cầu thực tế. Cho 1 modun kiểm soát và chỉ phát tín hiệu theo chu kì 5 10 15s cho modun thuật toán có lẽ là vấn đề em đang nghĩ tới. 1 cách hợp lý nhất có lẽ là nhờ hệ thống tính hộ thôi?Em nghĩ thế có sai chỗ nào không?
    Không sai. Chỉ có vấn đề là dùng thuật ngữ không thích hợp thôi. Như mình đã nói ở #4 trên, cái bạn muốn làm, người ta không gọi là "ngắt".
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  6. #16
    Ngày gia nhập
    08 2018
    Nơi ở
    Online
    Bài viết
    4

    Mặc định Lập trình với ngắt thời gian

    Anh có thể nói rõ hơn. Vì từ đầu em nghĩ nó là 1 cái ngắt như trong PASCAL tài liệu em đã từng đọc.Lập trình Ngắt điều khiển chuột.

    - - - Nội dung đã được cập nhật ngày 24-10-2018 lúc 08:30 PM - - -

    Em mới tìm được cái này hay hay về driver nè. Tài liệu GooGle dịch nhé:https://en.wikipedia.org/wiki/Device_driver

    Trình điều khiển thiết bị ảo đại diện cho một biến thể cụ thể của trình điều khiển thiết bị. Chúng được sử dụng để mô phỏng một thiết bị phần cứng, đặc biệt là trong môi trường ảo hóa , ví dụ khi một chương trình DOS được chạy trên máy tính Microsoft Windows hoặc khi một hệ điều hành khách được chạy trên, ví dụ, một máy chủ Xen . Thay vì kích hoạt hệ điều hành khách để đối thoại với phần cứng, các trình điều khiển thiết bị ảo có vai trò ngược lại và mô phỏng một phần cứng, để hệ điều hành khách và các trình điều khiển của nó chạy bên trong một máy ảocó thể có ảo tưởng về việc truy cập phần cứng thực. Những nỗ lực của hệ điều hành khách để truy cập phần cứng được chuyển đến trình điều khiển thiết bị ảo trong hệ điều hành chủ như ví dụ, các cuộc gọi chức năng . Trình điều khiển thiết bị ảo cũng có thể gửi các sự kiện mức bộ xử lý mô phỏng như các ngắt vào máy ảo.
    Có nhiều dấu vết cho thấy các driver ảo làm việc được với các ngắt của hệ thống. Chúng lắng nghe và phát đi được những tín hiệu mô phỏng ngắt.

  7. #17
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    586

    Lại còn Windows trên máy ảo nữa chứ. Thế thì khó đấy.

    Mình đã phân tích cả rồi, không viết lại nữa. Chỉ tóm tắt lại. Bạn muốn:

    - Viết trình điều khiển thiết bị (device driver), trong đó có thủ tục xử lý ngắt phần cứng (hardware interrupt service routine).

    - Viết phần mềm ứng dụng (VD tìm số nguyên tố gì đó).

    - Viết trong hệ điều hành Windows.

    - Windows có thể chạy trên máy ảo, nghĩa là còn chạy trên một hệ điều hành khác như Xen, Solaris, Linux, Hyper-V.

    - Chương trình chạy nhanh.

    - Lập trình đơn giản.

    - Tài liệu tiếng Việt.

    - Và cuối cùng, dĩ nhiên, dù bạn không nói ra, chương trình chạy đúng.

    Mọi yêu cầu đều có thể đáp ứng. Nhưng đáp ứng một hoặc hai yêu cầu thì dễ. Đáp ứng tất cả một lúc thì khó. OK?
    Đã được chỉnh sửa lần cuối bởi Ada : 24-10-2018 lúc 08:49 PM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  8. #18
    Ngày gia nhập
    08 2018
    Nơi ở
    Online
    Bài viết
    4

    Anh sẽ làm gì nếu anh muốn có 1 hệ thống xử lý thời gian thực nơi mọi thứ đều phải đánh đổi bằng thời gian và chỉ có thời gian mới quyết định xem cái nào tôi cần lúc này? Tôi phải làm gì vào lúc này. Tôi có nên đi chơi. Tôi có nên đi học.Tôi có nên đi ngủ. đó. Đại loại nó là thế đó... Chơi cờ là 1 cuộc chiến về thời gian đó. Mọi thứ sẽ vô nghĩa khi thời gian không cho phép để hiện thực nó.

  9. #19
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    586

    Trích dẫn Nguyên bản được gửi bởi emyeuvn Xem bài viết
    Anh sẽ làm gì nếu anh muốn có 1 hệ thống xử lý thời gian thực nơi mọi thứ đều phải đánh đổi bằng thời gian và chỉ có thời gian mới quyết định xem cái nào tôi cần lúc này? Tôi phải làm gì vào lúc này. Tôi có nên đi chơi. Tôi có nên đi học.Tôi có nên đi ngủ. đó. Đại loại nó là thế đó... Chơi cờ là 1 cuộc chiến về thời gian đó. Mọi thứ sẽ vô nghĩa khi thời gian không cho phép để hiện thực nó.
    Vậy là xuất hiện thêm yêu cầu thứ 9, đó là:

    - Thời gian thực.

    Thời gian thực ở đây không phải là 1 danh từ, mà là 1 tính từ thể hiện tính chất của chương trình. Chương trình thời gian thực không những phải đúng, mà còn phải hoàn thành công việc đúng thời hạn. Quá thời hạn là hỏng, chả khác nào chạy sai.

    Theo cách nói kiên quyết của bạn, có vẻ như bạn muốn viết chương trình thời gian thực cứng (hard real-time). Cứng nghĩa là ước lượng thời gian chạy là ước lượng cho trường hợp xấu nhất, chứ không phải trường hợp trung bình. Cứng nghĩa là thời hạn phải được tuân thủ tuyệt đối, không trễ hạn trong bất cứ tình huống nào.

    Yêu cầu này khác với yêu cầu "chạy nhanh" mà mình đã kể ra ở bài trước. Chạy nhanh là yêu cầu về băng thông (throughput). Thời gian thực là yêu cầu về độ trễ (latency). Băng thông cao và độ trễ thấp là hai yêu cầu xung khắc với nhau. (Dễ hiểu, liên hệ với vận tải: muốn băng thông cao thì dùng voi, muốn độ trễ thấp thì dùng ngựa.) Ngay cả các hệ điều hành, thứ phần mềm được thiết kế toàn diện nhất và hiệu chỉnh kỹ lưỡng nhất, cũng chỉ cố gắng đạt tối đa một trong hai chỉ tiêu này mà thôi: Linux, FreeBSD, Solaris, Windows được tối ưu hóa cho băng thông; QNX, FreeRTOS, seL4, eChronos được tối ưu hóa cho độ trễ.

    Còn nữa, chương trình bạn muốn làm là một chương trình đa nhiệm. (Bất cứ chương trình nào có mã xử lý biến cố bất đồng bộ, bao gồm cả xử lý ngắt, đều là chương trình đa nhiệm.) Và năm chữ "bất cứ tình huống nào" trong yêu cầu thời gian thực cứng còn làm cho yêu cầu "chạy đúng", vốn đã là khó đối với một chương trình đa nhiệm, lại càng khó hơn.

    Cuối cùng, năm chữ "bất cứ tình huống nào" còn hàm chứa một yêu cầu nữa, yêu cầu thứ 10:

    - Nhúng.

    Dễ hiểu thôi. Phần mềm thời gian thực cứng chạy sai hay trễ hạn thường gây thiệt hại rất nặng về tài sản, có khi cả tính mạng. Chạy sai hay trễ hạn không nhất thiết do lỗi trong mã bạn viết; lỗi có khi nằm ở hệ điều hành, ở CPU, ở board mạch, ở ngoại vi hay ở máy móc, khí tài nào đó liên quan. Nhưng sẽ chẳng có Microsoft, Intel hay nhà cung cấp nào chịu tội thay cho bạn. Bạn phải chịu trách nhiệm hoàn toàn về sản phẩm và, để đảm bảo chắc chắn trách nhiệm ấy được trói buộc hoàn toàn vào riêng mình bạn, sản phẩm ấy phải là cả hệ thống bao gồm ứng dụng, hệ điều hành, máy tính và bất cứ máy móc, khí tài nào mà máy tính ấy nhúng vào.
    Đã được chỉnh sửa lần cuối bởi Ada : 25-10-2018 lúc 01:15 AM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  10. #20
    Ngày gia nhập
    08 2018
    Nơi ở
    Online
    Bài viết
    4

    Wow Những kiến thức tuyệt vời.
    Các khái niệm về truyền thông đa nhiệm làm em chưa thể thích ứng kịp. Nhưng thật sự em bị anh cuốn hút bởi những vấn đề như: băng thông, độ trễ,chạy nhanh, chạy đúng.
    Nhân tiện nói về mô hình truyền thông, anh có 1 cái điều khiển từ xa và 1 cái oto chạy bon bon ngoài đường.Anh điều khiển nó. Khoảng cách là 2 m thôi. nó có vẻ như các khái niệm về độ trễ phát huy được tác dụng của nó. Thế nhưng nếu như cái ô tô đó chẳng bít bây giờ nó ở đâu, cái thông tin nó gửi về cũng chẳng bít là có đúng là trạng thái hiện tại của nó hay không.
    Tất cả những gì anh có thể làm là ra những chỉ thị hướng dẫn cho nó dưới dạng 1 lời khuyên. Nghe theo cái nào là quyết định của nó. Bởi chỉ có nó mới có thể biết nó cần làm gì vào lúc đó. Nó là 1 hệ thống lắng nghe tự động và có phản hồi. Nó có tư duy của nó, nó tự biết nó phải làm gì. Các khái niệm về độ trễ hay băng thông là hoàn toàn không xác định, anh phải giao tiếp với nó qua 1 mô hình gọi là bảng ngắt, với 1` danh sách có thứ tự ưu tiên các công việc nó có thể thử vào lúc đó, với hi vọng là nó có ích.
    Nghe có vẻ kì cục, Ngắt sinh ra để đồng bộ các quá trình không đồng bộ, trong 1 hệ thống đa tiến trình không tiên định. Khi a cố bẻ lái 1 tiến trình anh nên giao tiếp với nó qua các ngắt!

    Và còn 1 vấn đề là: Nhanh là chưa đủ, nó có thể tự cải tiến đựoc tốc độ của nó dựa trên kinh nghiệm nó tự thu được. Bây giờ là nhanh, Sau này là chậm. Nên nó phải có 1 luôn tự đánh giá về mặt thời gian như là 1 tập kinh nghiệm của nó.

    - - - Nội dung đã được cập nhật ngày 25-10-2018 lúc 10:22 AM - - -

    Chúng ta có lẽ đã thống nhất ở 1 số quan điểm chung sau:
    1.Windows là HĐH có độ an toàn cao hơn nhiều so với DOS. Thực vậy, nếu viết chương trình chạy trên DOS, bạn có thể dùng ngắt bất kỳ (thí dụ 16h), DOS không giám sát và kiểm soát gì cả. Tuy nhiên Windows luôn giám sát và kiểm soát hành vi của ứng dụng, nếu thấy ứng dụng thực hiện 1 lệnh dễ gây nguy hiểm cho hệ thống (thí dụ lệnh ngắt 16h), Windows sẽ chặn lại và báo lỗi chứ không thực hiện. Tóm lại, nếu bạn lập trình trên Windows, code nằm trong ứng dụng của bạn không được phép thực hiện ngắt (bất kỳ ngắt nào). Việc dùng ngắt chỉ được phép trong các file thư viện *.dll hay các file driver và tuân theo yêu cầu nghiêm ngặt của Windows.
    ==>Windows hỗ trợ một số chức năng ngắt qua các thư viện .dll tiêu chuẩn ? Em sẽ theo chỉ dẫn của anh, tìm hiểu về HỌOK. Driver là quá xa vời.

    2.Mún sử dụng ngắt hệ thống, ta phải chọn (hoặc tự xây dựng) nên 1 hệ thống cung cấp các chức năng xử lý ngắt hay nói cách khác nó lại là 1 vấn đề liên quan đến driver và hệ điều hành.
    ==>Stop here.

    Tổng kết là kỹ thuật HOOK có thể giúp xử lý vấn đề này hoặc không có 1 cách nào làm việc với ngắt thời gian trên HDH Windows.
    Anh có thống nhất với quan điểm của em khồng?
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn