User Tools

Site Tools


m-i-quan-h-c-a-b-vi-x-l-wikipedia

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

m-i-quan-h-c-a-b-vi-x-l-wikipedia [2018/11/23 17:13] (current)
Line 1: Line 1:
 +<​HTML>​ <​br><​div id="​mw-content-text"​ lang="​en"​ dir="​ltr"><​div class="​mw-parser-output"><​p><​b>​ Bộ vi xử lý </​b>​hoặc <b> CPU ghim </​b>​cho phép ràng buộc và hủy liên kết một quá trình hoặc một luồng với một đơn vị xử lý trung tâm (CPU) hoặc một loạt các CPU, sao cho quá trình hoặc chuỗi sẽ chỉ thực thi trên CPU hoặc CPU được chỉ định thay vì bất kỳ CPU nào. Điều này có thể được xem như là một sửa đổi của thuật toán lập lịch trình xếp hàng trung tâm gốc trong một hệ điều hành đa xử lý đối xứng. Mỗi mục trong hàng đợi có một thẻ chỉ ra bộ xử lý thân của nó. Tại thời điểm phân bổ tài nguyên, mỗi tác vụ được phân bổ cho bộ xử lý kin của nó tùy thuộc vào người khác.
 +</​p><​p>​ Mối quan hệ của bộ vi xử lý tận dụng thực tế rằng phần còn lại của một tiến trình được chạy trên một bộ xử lý đã cho có thể vẫn ở trạng thái của bộ xử lý đó (ví dụ, dữ liệu trong bộ nhớ đệm) sau khi một tiến trình khác được chạy trên bộ xử lý đó. Lập kế hoạch rằng quá trình thực thi trên cùng một bộ xử lý sẽ cải thiện hiệu suất của nó bằng cách giảm các sự kiện giảm hiệu năng như các lần nhớ cache. Một ví dụ thực tế về mối quan hệ của bộ vi xử lý là thực thi nhiều phiên bản của một ứng dụng không có luồng, chẳng hạn như một số phần mềm dựng hình đồ họa.
 +</​p><​p>​ Việc triển khai thuật toán lập lịch biểu thay đổi tuân thủ mối quan hệ của bộ vi xử lý. Trong một số trường hợp nhất định, một số triển khai sẽ cho phép tác vụ thay đổi sang bộ xử lý khác nếu kết quả đạt hiệu quả cao hơn. Ví dụ, khi hai tác vụ xử lý chuyên sâu (A và B) có ái lực với một bộ xử lý trong khi bộ xử lý khác vẫn chưa được sử dụng, nhiều bộ lập lịch sẽ chuyển nhiệm vụ B sang bộ vi xử lý thứ hai để tối đa hóa việc sử dụng bộ vi xử lý. Nhiệm vụ B sau đó sẽ có được mối quan hệ với bộ vi xử lý thứ hai, trong khi nhiệm vụ A sẽ tiếp tục có ái lực với bộ vi xử lý gốc.
 +</p>
  
 +
 +
 +<p> Mối quan hệ của bộ vi xử lý có thể làm giảm hiệu quả các vấn đề về bộ nhớ cache, nhưng nó không làm giảm vấn đề cân bằng tải liên tục <sup id="​cite_ref-1"​ class="​reference">​[1]</​sup> ​ Cũng lưu ý rằng mối quan hệ của bộ vi xử lý trở nên phức tạp hơn trong các hệ thống có kiến ​​trúc không đồng nhất. Ví dụ, một hệ thống với hai CPU lõi kép lõi kép trình bày một thách thức đối với thuật toán lập lịch biểu.
 +</​p><​p>​ Có mối quan hệ hoàn toàn giữa hai CPU ảo được triển khai trên cùng một lõi thông qua siêu luồng, mối quan hệ một phần giữa hai lõi trên cùng một bộ xử lý vật lý (vì các lõi chia sẻ một số, nhưng không phải tất cả, bộ đệm) và không có mối quan hệ riêng biệt bộ xử lý vật lý. Vì các tài nguyên khác cũng được chia sẻ, nên không thể sử dụng ái lực bộ xử lý làm cơ sở cho việc gửi CPU. Nếu một quá trình gần đây đã chạy trên một CPU siêu luồng ảo trong một lõi đã cho, và CPU ảo hiện đang bận nhưng CPU đối tác của nó thì không, ái lực bộ nhớ cache sẽ gợi ý rằng quá trình sẽ được gửi đến CPU đối tác nhàn rỗi. Tuy nhiên, hai CPU ảo cạnh tranh về cơ bản tất cả các tài nguyên máy tính, bộ nhớ cache và bộ nhớ. Trong tình huống này, thường sẽ hiệu quả hơn khi gửi quy trình đến một lõi hoặc CPU khác, nếu có sẵn. Điều này có thể phải chịu một hình phạt khi quá trình repopulates bộ nhớ cache, nhưng hiệu suất tổng thể có thể cao hơn khi quá trình sẽ không phải cạnh tranh cho các nguồn lực trong CPU.
 +</p>
 +<​h2><​span class="​mw-headline"​ id="​Specific_operating_systems">​ Hệ điều hành cụ thể </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h2>​
 +<p> Trên Linux, mối quan hệ CPU của một quá trình có thể được thay đổi với chương trình taskset (1) <sup id="​cite_ref-2"​ class="​reference">​[2]</​sup> ​ và sched_setaffinity (2) gọi điện. Mối quan hệ của một sợi có thể được thay đổi với một trong các hàm thư viện: pthread_setaffinity_np (3) hoặc pthread_attr_setaffinity_np (3).
 +</​p><​p>​ Trên hệ thống SGI, dplace liên kết một quá trình với một bộ CPU <sup id="​cite_ref-3"​ class="​reference">​ [3] </​sup>​ </​p><​p>​ NetBSD 5.0, FreeBSD 7.2 và các phiên bản mới hơn có thể sử dụng pthread_setaffinity_np và pthread_getaffinity_np. <sup id="​cite_ref-4"​ class="​reference">​[4]</​sup> ​ Trong NetBSD, tiện ích psrset <sup id="​cite_ref-5"​ class="​reference">​[5]</​sup> ​ để đặt mối quan hệ của luồng vào một bộ CPU nhất định. Trong FreeBSD, tiện ích cpuset <sup id="​cite_ref-6"​ class="​reference">​[6]</​sup> ​ được sử dụng để tạo các bộ CPU và gán các quy trình cho các bộ này.
 +</​p><​p>​ Trên Windows NT và những người thừa kế của nó, các mối quan hệ CPU và quy trình có thể được thiết lập riêng bằng cách sử dụng các lệnh gọi SetThreadAffinityMask <sup id="​cite_ref-7"​ class="​reference">​[7]</​sup> ​ và SetProcessAffinityMask <sup id="​cite_ref-8"​ class="​reference">​[8]</​sup> ​ hoặc thông qua giao diện Task Manager (chỉ dành cho mối quan hệ quy trình).
 +</​p><​p>​ macOS trưng ra API ái lực <sup id="​cite_ref-9"​ class="​reference">​[9]</​sup> ​ cung cấp gợi ý cho hạt nhân cách lập lịch trình theo tập hợp sở thích.
 +</​p><​p>​ Trên Solaris, có thể kiểm soát các ràng buộc của các quy trình và các LWP tới bộ xử lý bằng chương trình pbind (1) <sup id="​cite_ref-10"​ class="​reference">​[10]</​sup>​ . Để kiểm soát ái lực có lập trình processor_bind (2) <sup id="​cite_ref-11"​ class="​reference">​[11]</​sup> ​ có thể được sử dụng. Có nhiều giao diện chung hơn có sẵn như pset_bind (2) <sup id="​cite_ref-12"​ class="​reference">​[12]</​sup> ​ hoặc lgrp_affinity_get (3LGRP) <sup id="​cite_ref-13"​ class="​reference">​[13]</​sup> ​ sử dụng các bộ xử lý và khái niệm nhóm địa phương.
 +</p>
 +<​h2><​span class="​mw-headline"​ id="​See_also">​ Xem thêm </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h2>​
 +<​h2><​span class="​mw-headline"​ id="​References">​ Tham khảo </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h2>​
 +
 +
 +<​!-- ​
 +NewPP limit report
 +Parsed by mw1326
 +Cached time: 20181114202236
 +Cache expiry: 1900800
 +Dynamic content: false
 +CPU time usage: 0.120 seconds
 +Real time usage: 0.192 seconds
 +Preprocessor visited node count: 612/1000000
 +Preprocessor generated node count: 0/1500000
 +Post‐expand include size: 5173/​2097152 bytes
 +Template argument size: 1152/​2097152 bytes
 +Highest expansion depth: 11/40
 +Expensive parser function count: 0/500
 +Unstrip recursion depth: 1/20
 +Unstrip post‐expand size: 8082/​5000000 bytes
 +Number of Wikibase entities loaded: 0/400
 +Lua time usage: 0.056/​10.000 seconds
 +Lua memory usage: 1.42 MB/50 MB
 +-->
 +<!--
 +Transclusion expansion time report (%,​ms,​calls,​template)
 +100.00% ​ 159.437 ​     1 Template:​Reflist
 +100.00% ​ 159.437 ​     1 -total
 + ​46.10% ​  ​73.506 ​     1 Template:​Cite_web
 + ​26.97% ​  ​43.000 ​     1 Template:​Webarchive
 + ​11.19% ​  ​17.843 ​     4 Template:​Man
 +  8.53%   ​13.600 ​     4 Template:​Man/​format
 +  3.41%    5.434      1 Template:​Main_other
 +  1.90%    3.024      3 Template:​Man/​Linux
 +  1.66%    2.649      6 Template:​Man/​NetBSD
 +  1.53%    2.435      3 Template:​Man/​FreeBSD
 +-->
 +
 +<!-- Saved in parser cache with key enwiki:​pcache:​idhash:​216752-0!canonical and timestamp 20181114202236 and revision id 833637178
 + ​-->​
 +</​div><​noscript><​img src="​http://​en.wikipedia.org/​wiki/​Special:​CentralAutoLogin/​start?​type=1x1"​ alt=""​ title=""​ width="​1"​ height="​1"​ style="​border:​ none; position: absolute;"/></​noscript></​div></​pre>​
 + </​HTML>​
m-i-quan-h-c-a-b-vi-x-l-wikipedia.txt · Last modified: 2018/11/23 17:13 (external edit)