Thực ra là có. Phương pháp hiệu quả nhất là chỉ cần vá thời gian chạy trong bộ nạp. Công cụ hạt nhân/daemon có thể có các bản vá tùy chỉnh để có phản hồi tốt hơn. Thậm chí tốt hơn, nếu bạn có quyền truy cập vào tất cả các nguồn, bạn có thể vá trong trình biên dịch.
Bản vá có thể bao gồm một bộ lập lịch phân phối.Mỗi chương trình có thể được vá để có bộ đếm thời gian chờ rất thấp; khi tải, nó sẽ đặt hẹn giờ và trên mỗi lần trả về từ trình lên lịch, nó sẽ đặt lại. Một phương pháp đơn giản sẽ cho phép mã chỉ cần thực hiện một số
if (timer - start_timer) yield to scheduler;
không mang lại hiệu suất quá lớn. Vấn đề chính là tìm các điểm tốt để bật chúng vào. Giữa mỗi cuộc gọi hàm là một sự khởi đầu, và phát hiện các vòng lặp và chèn chúng là nguyên thủy nhưng hiệu quả nếu bạn thực sự cần phải trả trước một cách có trách nhiệm.
Nó không hoàn hảo, nhưng nó sẽ hoạt động.
Vấn đề chính là đảm bảo rằng thời gian trả về là độ trễ thấp; theo cách đó, nó chỉ là một so sánh và nhánh. Ngoài ra, xử lý các ngoại lệ - các lỗi trong mã gây ra, nói, các vòng lặp vô hạn - theo một cách nào đó. Bạn về mặt kỹ thuật có thể sử dụng một bộ đếm thời gian phần cứng watchdog khá đơn giản và khẳng định một thiết lập lại trên CPU mà không cần xóa bất kỳ RAM nào; một thói quen trong RAM sẽ là nơi các điểm vector RESET, mà sẽ kiểm tra và thư giãn ngăn xếp trở lại cuộc gọi chương trình (do đó đâm chương trình nhưng bảo quản mọi thứ khác). Nó giống như một chương trình phá hỏng chương trình nếu không có sự cố. Hoặc bạn có thể POTENTIALLY thay đổi nó thành nhiều nhiệm vụ theo cách này, RESET như là một ngắt, nhưng đó là khó khăn hơn nhiều.
Vì vậy ... có. Nó có thể nhưng phức tạp; sử dụng các kỹ thuật từ trình biên dịch JIT và các trình dịch động (các trình giả lập sử dụng chúng).
Đây là một chút giải thích lúng túng, tôi biết, nhưng tôi rất mệt mỏi. Nếu nó không đủ rõ ràng, tôi có thể quay lại và dọn dẹp nó vào ngày mai.
Bằng cách này, khẳng định đặt lại trên một chương trình giữa CPU có vẻ điên rồ, nhưng đó là một kỹ thuật được chứng minh và được chứng minh về thời gian. Phiên bản đầu của Windows thậm chí đã làm nó để chạy chế độ tương thích, tôi nghĩ 386, đúng, bởi vì không có cách nào để chuyển trở lại 32-bit từ chế độ 16-bit. Các bộ xử lý và hệ điều hành khác cũng đã thực hiện nó.
EDIT: Vì vậy, tôi đã thực hiện một số nghiên cứu về DCPU là gì, haha. Nó không phải là một CPU thực sự. Tôi không có ý tưởng nếu bạn có thể khẳng định thiết lập lại trong giả lập của Notch, tôi sẽ hỏi anh ta. Kỹ thuật tiện dụng, có nghĩa là.
Lưu ý rằng DCPU-16 có ngắt tại . – blueshift
Có phải không? Kể từ ngày 4 tháng 5 năm 2014, phiên bản tài liệu có sẵn trên trang web (http://0x10c.com/doc/dcpu-16.txt) vẫn là 1.1 và không bị gián đoạn. Có tài liệu nào về các tính năng mới không? –
Tôi giả sử bạn không reddit hoặc sử dụng diễn đàn. Kiểm tra [cậu bé xấu này (spec 1.7)] (http://pastebin.com/raw.php?i=Q4JvQvnM)! Chúng tôi trò chuyện về điều này trên freenode IRC# 0x10c-dev nếu bạn muốn ghé qua. – blueshift