Sự khác biệt giữa mô phỏng và mô phỏng


97

Tôi thường thấy Mô phỏngThi đua trong khoa học máy tính. Hai thuật ngữ này có vẻ đồng nghĩa. Có sự khác biệt nào giữa Mô phỏngThi đua không?

Câu trả lời:


108

Vâng, các khái niệm là khác nhau.


Mô phỏng

A simulationlà một hệ thống hoạt động tương tự như một cái gì đó khác, nhưng được thực hiện theo một cách hoàn toàn khác. Nó cung cấp hành vi cơ bản của một hệ thống, nhưng có thể không nhất thiết phải tuân thủ tất cả các quy tắc của hệ thống được mô phỏng. Nó ở đó để cung cấp cho bạn một ý tưởng về cách một cái gì đó hoạt động.

Thí dụ

Hãy nghĩ về một chuyến bay giả lập như một ví dụ. Nó trông giống như bạn đang lái một chiếc máy bay, nhưng bạn hoàn toàn bị ngắt kết nối với thực tế khi lái máy bay, và bạn có thể uốn cong hoặc phá vỡ những quy tắc đó khi bạn thấy phù hợp. Ví dụ, bay một chiếc Airbus A380 lộn ngược giữa London và Sydney mà không phá vỡ nó.


Thi đua

An emulationlà một hệ thống hoạt động chính xác như một cái gì đó khác, và tuân thủ tất cả các quy tắc của hệ thống được mô phỏng. Nó thực sự là một bản sao hoàn chỉnh của một hệ thống khác, ngay cả khi tương thích nhị phân với đầu vào và đầu ra của hệ thống được mô phỏng, nhưng hoạt động trong một môi trường khác với môi trường của hệ thống mô phỏng ban đầu. Các quy tắc được cố định và không thể thay đổi hoặc hệ thống bị lỗi.

Thí dụ

Các MAME hệ thống được xây dựng xung quanh tiền đề này rất. Tất cả các hệ thống arcade cũ đã bị lãng quên từ lâu, được triển khai gần như hoàn toàn bằng phần cứng hoặc trong phần sụn của hệ thống phần cứng của chúng có thể được mô phỏng ngay đến các lỗi ban đầu và sự cố sẽ xảy ra khi bạn đạt điểm cao nhất có thể.


18
"cư xử khéo léo như ..." có thể không cần thiết. Điều quan trọng là nó "tái tạo cùng một hành vi bên ngoài chính xác" đối với những gì sử dụng nó.
Emilio Garavaglia

Lưu ý rằng nó phụ thuộc vào những gì đang được mô phỏng / mô phỏng. Ví dụ, thứ gì đó mô phỏng máy tính tương thích với PC có thể kém chính xác hơn và kém thực tế hơn nhiều so với thứ mô phỏng mạch kỹ thuật số của máy tính tương thích với PC. Trong trường hợp này, trình giả lập có thể hoạt động "giống hệt" một PC thực trong khi trình giả lập thì không (vì trình giả lập đang mô phỏng thứ gì đó ở mức thấp hơn nhiều).
Brendan

16

Một mô phỏng là một mô hình xây dựng bằng cái gì khác mà tái tạo một số tính năng của điều đó và rời khỏi những người khác ra - rõ ràng là bạn muốn giữ các tính năng liên quan đến truy vấn của bạn, và bỏ qua những người không liên quan.

Ví dụ, một mô phỏng giao thông đi lại vào sáng sớm loại bỏ tên của người đi lại và thậm chí có thể cả danh tính của họ (sử dụng biến đối trọng thay vì một bộ Commuterđối tượng thực tế ), nhưng nó không thể bỏ qua tỷ lệ đến của họ.


Thi đua là việc chạy phần mềm X được tạo cho nền tảng A trên nền tảng B, mà không thay đổi chính phần mềm. Điều này đòi hỏi phải xây dựng mô hình A chạy trên B và rõ ràng nó phải mô hình hóa mọi thứ về A liên quan đến thực thi mã. . chỉ hoạt động với S.)


7

Cả hai có nghĩa là một cái gì đó làm công việc của một cái gì đó khác.

Sự khác biệt là "Mô phỏng" xảy ra ở cấp độ ý thức (đối với người dùng) và được hoàn thiện điển hình để dự đoán kết quả của một thực tế mà không chạm vào chính thực tế.

"Thi đua" xảy ra ở cấp độ vô thức và có mục đích thay thế một thành phần cơ bản bằng một thành phần khác khác - liên quan đến người dùng - hoạt động như cũ.

Nói cách khác, mô phỏng xảy ra trong một "thế giới song song", trong khi mô phỏng xảy ra trong một "thế giới thay thế".


3
Làm thế nào điều này trả lời câu hỏi của OP về mặt khoa học máy tính? Không có gì hoặc có ý thức hoặc vô thức về họ. Một mô phỏng là có thật, cũng như một sự mô phỏng. Mục đích tương ứng của họ tuy nhiên về mặt khái niệm rất khác nhau.
S.Robins

@ S.Robins: có ý thức / vô thức! = Thực / không thực. có ý thức = một cái gì đó bạn quyết định rõ ràng, vô thức một cái gì đó bạn đã không tự quyết định một cách rõ ràng. Một ứng dụng chạy trên hệ thống "giả lập" không biết về mô phỏng đó. Một ứng dụng chạy trên hệ thống "mô phỏng" phải biết về nó, vì nó không nhất thiết phải có hành vi tương tự.
Emilio Garavaglia

1
Nó không liên quan gì đến những ứng dụng đang chạy ở đâu và không liên quan gì đến việc đưa ra quyết định có ý thức hay vô thức. Sự khác biệt về cơ bản là về việc một hệ thống đang được mô hình hóa nói chung, hoặc được nhân rộng hoàn toàn.
S.Robins

@ S.Robins: Tôi đồng ý với khái niệm mà bạn muốn nói, nhưng có một điều gì đó tinh tế mà nó không nắm bắt được: một "trình giả lập" thường được hình thành để chạy một cái gì đó trên đầu, thay thế một cái gì đó trong phạm vi của ứng dụng. Một "trình giả lập" thường được hình thành để tự chạy thay vì ứng dụng thực. Chúng không ở cùng mức độ trừu tượng.
Emilio Garavaglia

6

Về mặt kỹ thuật, cả hai đều làm như nhau: làm một cái gì đó trong một môi trường hoạt động như thể đó là thực tế.

Về mặt khái niệm, tuy nhiên, có một sự khác biệt quan trọng.

Một mô phỏng được cho là tách ra khỏi thế giới thực ở một mức độ nhất định; đầu ra của một mô phỏng không được kết nối trực tiếp với thứ mà nó mô phỏng. Ví dụ, một trình mô phỏng máy bay không thực sự bay và phi công thực sự không liên lạc với bộ điều khiển không lưu thực sự.

Một mô phỏng thường có mục tiêu thử nghiệm hoặc dự đoán một số quy trình thực tế trong môi trường an toàn; bởi vì mô phỏng bị ngắt kết nối với thế giới thực, không có gì thực sự tồi tệ có thể xảy ra (một trình mô phỏng máy bay bị rơi không bao giờ giết người thật).


Ngược lại, một mô phỏng có mục tiêu thay thế thực tế: ví dụ, nếu bạn mô phỏng một vi điều khiển đơn giản sử dụng CPU lập trình phức tạp hơn, CPU đó có thể được sử dụng thay cho vi điều khiển gốc; nó sẽ được kết nối vật lý với một số máy và nó thực sự sẽ điều khiển máy đó giống như vi điều khiển.

Các mục tiêu của một thi đua là để thay thế phần cứng hoặc phần mềm thành phần với các khoản tương đương chức năng khi các module gốc là không có sẵn (hoặc đã trở nên quá đắt, nếu chỉ để duy trì). Mô phỏng cũng có thể phục vụ mục tiêu sử dụng phần cứng linh hoạt hơn - cùng một bộ vi điều khiển có thể lập trình có thể tăng gấp đôi cho một số bộ điều khiển đơn giản hơn, chuyển đổi chế độ mô phỏng khi cần thiết.


3
"technically", chúng hoàn toàn khác nhau. Sự khác biệt về khái niệm mà bạn mô tả là cơ bản cho sự khác biệt này.
S.Robins

@ S.Robins: bởi 'về mặt kỹ thuật', ý tôi là việc triển khai kỹ thuật thường tương tự hoặc tương đương; sự khác biệt chủ yếu ở những gì bạn sử dụng chúng cho.
tdammers

Nó không có gì để làm với các trường hợp sử dụng. Đó là sự khác biệt cơ bản của các mục đích xác định hai khái niệm rất riêng biệt. Việc mô phỏng tìm cách thay thế một hệ thống chức năng phức tạp chính xác để nó không thể phân biệt được với bản gốc, trong khi mô phỏng là một sự đơn giản hóa lớn của một hệ thống và thể hiện chức năng theo nghĩa rất chung thông qua một mô hình. Vì vậy, việc thực hiện kỹ thuật nhất thiết phải rất khác nhau.
S.Robins

@ S.Robins - Tôi không đồng ý. Cho dù bạn mô phỏng hoặc mô phỏng một bộ vi xử lý nhất định sẽ không tạo ra nhiều sự khác biệt cho việc triển khai, nhưng những gì bạn làm với nó.
tdammers

1
@tdammers: Nói chung, mục tiêu thiết kế chính của trình giả lập là đóng vai trò thay thế "thời gian thực" cho thứ được mô phỏng, trong khi mục tiêu thiết kế chính của trình mô phỏng là cho phép phân tích không nhất thiết theo thời gian thực, và có thể tương tác với, quá trình cơ bản. Một số trình giả lập có thể nhanh và một số trình giả lập có thể cung cấp các khả năng đáng kể để phân tích và / hoặc tương tác với quy trình cơ bản, nhưng các ưu tiên kỹ thuật thì khác.
supercat

1

Trong khi từ nguyên không chính xác hoàn toàn, hãy nghĩ về sự khác biệt giữa sự cảm thông, "Tôi có thể tưởng tượng những gì phải cảm thấy như thế nào" và sự đồng cảm, "Tôi biết cảm giác đó như thế nào." Một mô phỏng có thể bao gồm đại diện trực quan của một vấn đề, nhưng nó có thể không. Ví dụ: nó có thể chỉ in ra các cột số biểu thị số lượng người được xếp hàng cho một thứ gì đó hoặc tổng doanh thu hoặc tốc độ trung bình. Nó có một số đặc điểm phù hợp với thực tế, và một số thì không.

Thi đua, thường được sử dụng trong bối cảnh của một nền tảng giả vờ là một nền tảng khác, đã hoàn thiện hơn nhiều. Vì vậy, các nhà phát triển Windows Phone có thể chạy hoặc gỡ lỗi các ứng dụng điện thoại của họ trên máy Windows trong trình giả lập, trông giống như một chiếc điện thoại và cũng hoạt động giống như một chiếc điện thoại. Bạn cũng có thể chạy các trò chơi Commodore 64 cũ trong trình giả lập.

Các từ không chính xác. Theo tôi, hầu hết các trình mô phỏng chuyến bay giống như trình giả lập hơn, nhưng cái tên đã bị mắc kẹt từ thời điểm chúng không quá đắm đuối. Một số người bảo lưu trình giả lập từ cho trường hợp đa nền tảng và từ chối nó cho bất cứ điều gì khác. Có lẽ bạn sẽ không bao giờ nghĩ sai nếu bạn làm như vậy khi nói, nhưng hãy hiểu rằng một số người có thể đặt ranh giới giữa hai từ khác nhau một chút và tạo ra các khoản phụ cấp khi ai đó nói "đây là một sự mô phỏng" cho chính xác và mô phỏng hoàn chỉnh.


1
Có vẻ như một quan niệm sai lầm phổ biến rằng mô phỏng và mô phỏng là hiệu quả như nhau. Điều này có thể là do từ mô phỏng có thể có nghĩa là phản ánh hành vi của người khác (ví dụ: một đứa trẻ giả lập cha mình). Điều này là không chính xác về mặt kỹ thuật khi nói về khoa học máy tính. Trình mô phỏng chuyến bay không phải là mô phỏng, bởi vì tất cả đầu vào / đầu ra được chuyển qua chương trình được xây dựng có mục đích - trình giả lập - không sao chép chính xác hành vi của máy bay mà nó mô hình hóa, vì nó không thực hiện chính xác cùng một máy tính chương trình máy bay nào. Nếu nó đã làm, thì nó sẽ là một trình giả lập.
S.Robins

0

Cả hai thuật ngữ rất giống nhau về khái niệm - bắt chước.

Mô phỏng hoặc Mô phỏng sử dụng phần mềm để tạo ra một hệ thống nhân rộng rất giống với mô hình đích đối với chức năng cốt lõi cơ bản của nó (đặc biệt là phương pháp cơ bản của nó).

Mặt khác, các trình giả lập tập trung nhiều hơn vào sự tương đồng bên ngoài khi so sánh với hệ thống đích. Nó có mối quan tâm tối thiểu cho "làm thế nào" các chức năng được bắt chước. Các trình giả lập, nói chung, được sử dụng khi làm việc trong một môi trường hoàn toàn khác (Ví dụ: một Hệ điều hành khác) so với hệ thống ban đầu.


1
Tôi muốn nói rằng bạn có hai khái niệm lẫn lộn. Đó là mô phỏng không quan tâm đến việc thực hiện chính xác; thi đua quan tâm rất nhiều về nội bộ. Xem: MAME
Andres F.
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.