Skip to main content

Chia sẻ sai là gì?

Chia sẻ sai là một tình huống có thể xảy ra trong chương trình máy tính khi hai ứng dụng đang chạy đồng thời cố gắng truy cập thông tin trong cùng một vùng bộ nhớ logic mà mỗi chương trình hoặc quy trình đã được lưu trữ trong bộ đệm riêng của nó.Dữ liệu trong mỗi bộ nhớ cache của ứng dụng được sao chép từ một nguồn chung, do đó việc sửa đổi một bộ đệm khiến cho ứng dụng khác phải được tải lại từ nguồn.Khía cạnh sai của việc chia sẻ phát sinh khi những thay đổi được thực hiện đối với dòng bộ đệm bởi một chương trình không thực sự ảnh hưởng đến dữ liệu mà chương trình thứ hai đang sử dụng, trong trường hợp đó buộc bộ đệm phải tải lại là một sự lãng phí tài nguyên hệ thống và có thể ảnh hưởng tiêu cực đếnHiệu suất của chương trình.Vấn đề chia sẻ sai là khó phát hiện, bởi vì nó không phải là kết quả trực tiếp của bất kỳ mã nào có trong các ứng dụng, mặc dù có những cách hiệu quả để ngăn chặn chia sẻ sai, chẳng hạn như di chuyển dữ liệu trong một dòng hiện đang được lưu trong một dòng riêng biệt.Khi thông tin từ đĩa cứng hoặc nguồn khác đang được đọc hoặc viết bởi một chương trình, nó thường được tải vào bộ đệm tạm thời để có thể truy cập nhanh chóng.Lượng thông tin được lưu trong bộ nhớ cache từ vị trí nguồn được gọi là dòng bộ đệm và là một khối bộ nhớ logic thường có thể có độ dài từ 2 byte và 256 byte.Trong một số hệ điều hành hoặc kiến trúc hệ thống, các chương trình có thể chạy cùng một lúc, chẳng hạn như xử lý song song.Điều này có nghĩa là có thể hai chương trình riêng biệt cố gắng truy cập thông tin trong cùng một dòng bộ đệm, do đó, mỗi chương trình sẽ có bản sao dữ liệu nguồn riêng, có khả năng gây ra những thay đổi trong một bộ đệm không được phản ánh trong bộ đệm khác, vô hiệu hóaDữ liệu mà nó nắm giữ. Có một số cơ chế được sử dụng để xử lý tình huống khi hai chương trình cố gắng truy cập cùng một dòng bộ đệm, nhưng kết quả thường là một chương trình buộc phải tải lại bộ đệm của nó với thông tin cập nhật của chương trình khác, chương trình khácđã sửa đổi.Loại sự cố này được gọi là chia sẻ sai khi dữ liệu trong dòng bộ đệm mà mỗi chương trình truy cập không liên quan, vì vậy buộc một chương trình tải lại bộ đệm là một sự lãng phí sức mạnh xử lý và các tài nguyên khác.Điều này thường là một vấn đề đối với một chương trình sẽ không bao giờ sửa đổi thông tin trong bộ đệm của nó, do đó không có rủi ro về việc ghi đè ứng dụng mà quy trình khác đã thực hiện.chia sẻ.Đầu tiên là thêm thông tin trống trước hoặc sau dữ liệu trong bộ nhớ, về cơ bản buộc nó vào một dòng bộ đệm riêng biệt không được truy cập bởi một chương trình khác.Phương pháp thứ hai là hạn chế tần suất đọc và ghi vào dòng bộ đệm để nó được tải lại càng ít càng tốt.Các giải pháp phức tạp hơn liên quan đến quản lý cấp độ đệm hoặc thậm chí thay đổi cách thức hệ điều hành xử lý việc chia sẻ.