Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Tại sao các hệ điều hành không tận dụng được đa lõi

  1. #1
    Ngày gia nhập
    11 2008
    Bài viết
    0

    Unhappy Tại sao các hệ điều hành không tận dụng được đa lõi

    Em muốn hỏi tại sao khi mà 2 tập đoàn lớn là AMD và Intel liên tục ra mắt những CPU đa lõi mới mà vấn đề lập trình đa lõi vẫn còn hạn hẹp. Em gửi thư cho một bác nào đó bên Intel(bác này chắc người Việt Kiều) thì bác ấy trả lời là:
    Basically, in order to take advantage of multiple cores, you will need to thread your application (multithreaded programming). The best way to do is to detect how many cores available in the computer and generate that many threads. For example, if you want to run your application on a 4-core machine, then generate 4 threads in your application. Hope this helps. It is not too difficult.
    Khang
    Nhưng vấn đề đặt ra ở đây là nhiều thread nhưng hệ điều hành không hỗ trợ việc chạy mỗi thread trên một nhân thì làm gì có tác dụng. Em từng xem một cuộc tranh luận trên ddth.com thì anh tề thiên nói rằng:
    Một chương trình giải 01 bài toán A. Có thể chia thành các bài toán con A1,A2,A3 .... A100.
    + Nếu chương trình luôn thực hiện lần lượt A1 xong mới tới A2 rồi A3 .... A100 thì không phải là chương trình có khả năng xử lý //.
    + Nếu chương trình có khả năng thực hiện A1 cùng lúc với A2, A3 .... A100 thì là chương trình có khả năng xử lý //. Có thể chia làm 2 trường hợp :
    - Trường hợp chương trình xử lý A1, trên 01 hệ thống, A2 trên hệ thống khác ... thì đó là xử lý // thực thụ.
    - Trường hợp chương trình xử lý tất cả trên 1 hệ thống thì đó là multithread. Tất nhiên việc thực hiện được multithread phải có sự hỗ trợ của hệ điều hành. Trường hợp này nếu hệ thống có nhiều nhân hay nhiều CPU thì HDH sẽ chia các thread này ra chạy trên nhiều nhân khác nhau nên sẽ là xử lý //. Còn nếu chỉ có 01 nhân thì HDH chẳng qua chỉ phân chia thời gian CPU cho nhiều thread khác nhau thôi.
    Với tôi chương trình multithread chỉ là trường hợp riêng của xử lý //.
    Vậy tại sao các hệ điều hành không giúp được các application trong việc chia bài toán của mình ra thành 100 phần mà phải do lập trình viên tự lập cho application của mình. Em hỏi anh larry bên vnlinux.org thì anh ấy bảo là các HDH sẽ không bao giờ giúp được. Có phải là do các nhà thiết kế không thể làm được hay là do việc này là không bao giờ có thể làm được. Ý em nói ở đây theo anh tề thiên nghĩa là xử lý thực sự, chứ không phải chỉ lập trình multithread. Nếu em có hiểu sai điều gì mong các anh thông cảm
    Có ai có thể trả lời giúp em được rằng:
    "Việc lập trình multicore là do lập trình viên quyết định trong application của mình và hệ điều hành sẽ không bao giờ giúp chia nhỏ từng phần của application hay hệ điều hành có thể giúp được nhưng giờ thì theo em biết là chưa có hệ điều hành nào như thế".
    Như thế rất lãng phí và lập trình viên sẽ rất vất vả trong việc lập trình đa lõi(Intel và Microsoft đã phải hỗ trợ 2 trường đại học là California và Illinol trong việc giảng dạy lập trình đa lõi).
    Em có ngu kiến thế này:
    "Khi thiết kế hệ điều hành ta tạo ra cho nó 1 trình nhận diện signal, khi các application chạy tạo ra 1 thread thì hệ điều hành sẽ biết và chuyển việc chạy thread đó trên core khác".
    Nếu em có hiểu sai điều gì mong các anh chỉ bảo ^^.
    Đã được chỉnh sửa lần cuối bởi ThomasAnderson : 08-04-2009 lúc 05:28 PM.

  2. #2
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Uh, bạn phải tự quản lí lấy.

    P/S Bạn viết đọc nhói mắt quá. Bạn có thể xuống dòng, tách câu ra cho nó gọn gẽ tí ko ? Đâu phải dân IT là viết bựa thế này được.

  3. #3
    Ngày gia nhập
    12 2008
    Bài viết
    198

    Việc sử lý ngắt chính là thực hiện nhiều tác vụ cùng lúc đó,nói rằng chip đa lõi mà lại không sử dụng hết công dụng của nó là không phải,trên cả 2 lõi đều sử lý song song các việc đó,chúng được ngắt liên tục trong khoảng thời gian 1/1024 miligiay

  4. #4
    Ngày gia nhập
    11 2008
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi Cpro Xem bài viết
    Việc sử lý ngắt chính là thực hiện nhiều tác vụ cùng lúc đó,nói rằng chip đa lõi mà lại không sử dụng hết công dụng của nó là không phải,trên cả 2 lõi đều sử lý song song các việc đó,chúng được ngắt liên tục trong khoảng thời gian 1/1024 miligiay
    Nhưng vấn đề là nó xử lý những cái đó có cùng trong 1 application hay của nhiều application khác nhau. Như thế thì có thể tận dụng đối với việc chạy đa ứng dụng. Nhưng với việc chạy 1 ứng dụng thì em chưa thấy application nào mà nó được hệ điều hành chạy trên hai lõi mỗi lõi 50% mà toàn 95% và 5%

  5. #5
    Ngày gia nhập
    11 2008
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi kidkid Xem bài viết
    Uh, bạn phải tự quản lí lấy.
    Thế tại sao các hệ điều hành không làm được việc này?

  6. #6
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Mặc định Tại sao các hệ điều hành không tận dụng được đa lõi

    PHP Code:
    hệ điều hành sẽ không bao giờ giúp chia nhỏ từng phần của application 
    Biết Application của người ta viết như thế nào mà chia ?

Các đề tài tương tự

  1. Thi công cửa sắt, cổng sắt, cửa nhôm, cửa nhựa lõi thép, cửa cuốn giá ưu đãi
    Gửi bởi vanthanhphat trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 09-08-2013, 09:26 PM
  2. Bài tập C++ lõi }
    Gửi bởi newhoc trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 08-07-2013, 05:43 PM

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