Thông báo

Collapse
No announcement yet.

Làm thế nào để ưu tiên một tiến trình?

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Làm thế nào để ưu tiên một tiến trình?

    Khi lập trình trong WINDOWS(VB,VC chẳng hạn), thì làm thế nào để ưu tiên một tiến trình nào đó chạy ở mức ưu tiên hơn?
    Ví dụ:em muốn ưu tiên timer, hay ưu tiên cổng nối tiếp, và làm như vậy có khó quá sức ko?có phải can thiệp gì vào Kernel ko?
    Rất mong các anh chỉ bảo!


  • #2
    Lập tình multi-thread trong tập 5 sách của Samis về VC++ có nói rất rõ vấn đề này
    Vẫn biết mỗi lần xa là một lần về lại...

    Comment


    • #3
      Nguyên văn bởi thaithutrang
      Khi lập trình trong WINDOWS(VB,VC chẳng hạn), thì làm thế nào để ưu tiên một tiến trình nào đó chạy ở mức ưu tiên hơn?
      Ví dụ:em muốn ưu tiên timer, hay ưu tiên cổng nối tiếp, và làm như vậy có khó quá sức ko?có phải can thiệp gì vào Kernel ko?
      Rất mong các anh chỉ bảo!
      IO của hệ thống không có khái niệm ưu tiên vì OS không cho phép 2 tiền trình đồng thời sử dụng IO. Ưu tiên chỉ áp dụng với khái niệm task-switch time thôi.
      Cô bé này ham muốn nhiều quá, sợ!!!!!!!!!!
      Nếu muốn 2 process cùng truy cập vào cổng COM thì vẫn có thể thực hiện bằng software chứ OS không hỗ trợ. Cô bé thân yêu hãy làm theo anh

      1. Tạo 1 service bound lấy một hay nhiều cổng COM.
      2. Tạo các process cần thiết connect tới service kia.
      3. Khi cần truy cập vào cổng COM nào thì process sẽ đưa yêu cầu sử dụng cổng COM đó đến service, service sẽ có nhiệm vụ đưa dữ liệu ra cổng nối tiếp và tránh xung đột với các yêu cầu của các process khác.


      Comment


      • #4
        Nguyên văn bởi thaithutrang
        Khi lập trình trong WINDOWS(VB,VC chẳng hạn), thì làm thế nào để ưu tiên một tiến trình nào đó chạy ở mức ưu tiên hơn?
        Ví dụ:em muốn ưu tiên timer, hay ưu tiên cổng nối tiếp, và làm như vậy có khó quá sức ko?có phải can thiệp gì vào Kernel ko?
        Rất mong các anh chỉ bảo!
        IO của hệ thống không có khái niệm ưu tiên vì OS không cho phép 2 tiền trình đồng thời sử dụng IO. Ưu tiên chỉ áp dụng với khái niệm task-switch time thôi.

        Cô bé này ham muốn nhiều quá, sợ!!!!!!!!!!

        Nếu muốn 2 process cùng truy cập vào cổng COM thì vẫn có thể thực hiện bằng software chứ OS không hỗ trợ. Cô bé thân yêu hãy làm theo anh

        1. Tạo 1 service bound lấy một hay nhiều cổng COM.
        2. Tạo các process cần thiết connect tới service kia.
        3. Khi cần truy cập vào cổng COM nào thì process sẽ đưa yêu cầu sử dụng cổng COM đó đến service, service sẽ có nhiệm vụ đưa dữ liệu ra cổng nối tiếp và tránh xung đột với các yêu cầu của các process khác.


        Comment


        • #5
          Để ưu tiên một tác vụ nào đó ngoài cách lập trình multitask còn cách sau, trong chương trình của bạn thì dùng ý tưởng của multitask để ưu tiên một nhiệm vụ nào đó.
          Còn chương trình chình thì set quyền ưu tiên cho nó nên mức highest, bạn nhấn alt+ctrl+delete vào taskmanager, bấm phải chuột vào một chương trình nào đó có cái prioty, chọn highest. Lúc này chương trình của bạn được quan tâm nhất, thâm chí làm treo các chương trình khác.
          Code để set quyền ưu tiên thì tui đã làm được bằng borland delphi, để về chuyển sang VB giúp bạn.

          Comment


          • #6
            Mình xin có vài ý kiến trong phần kiến thức hổ lốn của minh về vấn đề này:

            1. Khi lập trình trong WINDOWS(VB,VC chẳng hạn), thì làm thế nào để ưu tiên một tiến trình nào đó chạy ở mức ưu tiên hơn?

            Ngày xưa khi mình làm bằng VC mình hay dùng API
            AfxBeginThread
            CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );

            trong đó có tham số đặt mức độ ưu tiên

            2. Timer hay COM là các tài nguyên của máy tính - hình như không có khái niệm ưu tiên - khái niệm ưu tiên hình như chỉ có trong process (mình hay nhầm lẫn giữa task, process, thread ). Khi làm việc với tài nguyên thì hình như theo mình biết không phải như bạn Cường nói : OS không cho phép 2 tiền trình đồng thời sử dụng IO
            Vẫn có thể cho phép hai hay nhiều tiến trình đồng thời sử dụng IO nhưng mình phải có cơ chế quản lí và đồng bộ tốt, và cũng nói kỹ hơn đa số OS support chứ không phải tất cả

            Mong được học hỏi nhiều từ các bác

            Comment


            • #7
              IO tôi muốn nói đến là các cổng vào ra như COM, LPT. Hệ điều hành không cho phép 2 tiến trình cùng mở đồng thời 1 cổng COM hay LPT thì làm sao có khái niệm ưu tiên cho chúng được. Còn các tài nguyên khác thì được như ShareMem, FileIO, bus ...
              nad nick rất quen, có phải nad bên hva không nhỉ?

              Comment


              • #8
                Hic! Dạ em la nad ở bên HVA, do hoàn cảnh bắt buộc em bây giờ phải đi học phần cứng cùng làm firmware nên nên đăng ký qua đây để học hỏi các bác, mong được các bác giúp đỡ

                Comment


                • #9
                  Nguyên văn bởi thaithutrang
                  Khi lập trình trong WINDOWS(VB,VC chẳng hạn), thì làm thế nào để ưu tiên một tiến trình nào đó chạy ở mức ưu tiên hơn?
                  Ví dụ:em muốn ưu tiên timer, hay ưu tiên cổng nối tiếp, và làm như vậy có khó quá sức ko?có phải can thiệp gì vào Kernel ko?
                  Rất mong các anh chỉ bảo!
                  khi lập trình cho multiThread thì đặt chế độ ưu tiên vào tham số khi tạo Thread . còn các thiết bị ngoại vi như timer , COM thì làm việc thông qua ngắt , chắc là chị phải can thiệp vào bộ xử lý ngắt ưu tiên dành cho PC , bình thường ở chế độ mặc định thì timer là có mức ưu tiên cao nhất
                  -> không biết có cách viết chương trình điều khiển thay đổi chế độ mặc định này không nhỉ?
                  bác nào biết chỉ cho em với
                  how to begin with Embedded system???

                  Comment


                  • #10
                    Sao các bạn không sử dụng ngắt nhỉ ( nếu giao tiếp thiết bị ) ?
                    Mạch nạp Little Programmer
                    MSC-51,AVR,EEPROM ... etc

                    Site Fukusei shop :

                    Comment


                    • #11
                      Có thể sử dụng API sau, nếu tiến trình đang chạy

                      BOOL SetPriorityClass(
                      HANDLE hProcess,
                      DWORD dwPriorityClass
                      );

                      Với API đơn thuần thì không lập trình ngắt được cho Windows mà phải dùng Hook, thậm chí bây dừ họ cũng không dùng đến hook nữa mà chỉ sử dụng event đơn thuần thôi thì phải.

                      Dùng sevice riêng là đúng đấy nhưng ứng dụng có cần tới mức hoành tráng như vậy không?

                      Comment

                      Về tác giả

                      Collapse

                      thaithutrang Tìm hiểu thêm về thaithutrang

                      Bài viết mới nhất

                      Collapse

                      • tuyennhan
                        Trả lời cho Tiếng Anh cho người Việt
                        bởi tuyennhan
                        Cái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
                        Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .
                        hôm nay, 07:44
                      • vi van pham
                        Trả lời cho Tiếng Anh cho người Việt
                        bởi vi van pham
                        Cám ơn những lời chúc tốt đẹp của em.

                        Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.

                        Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....
                        hôm nay, 02:00
                      • nhathung1101
                        Trả lời cho Tiếng Anh cho người Việt
                        bởi nhathung1101
                        Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.

                        Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.

                        Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...
                        Hôm qua, 22:18
                      • dinhthuong80
                        Trả lời cho Tiếng Anh cho người Việt
                        bởi dinhthuong80
                        Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

                        Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
                        Hôm qua, 14:51
                      • dinhthuong80
                        Trả lời cho Tiếng Anh cho người Việt
                        bởi dinhthuong80
                        Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

                        Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
                        Hôm qua, 14:39
                      • dinhthuong80
                        Trả lời cho Tiếng Anh cho người Việt
                        bởi dinhthuong80
                        Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

                        Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
                        Hôm qua, 14:28
                      • bqviet
                        Trả lời cho Tiếng Anh cho người Việt
                        bởi bqviet
                        Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
                        21-02-2025, 20:26
                      • mèomướp
                        Trả lời cho Tiếng Anh cho người Việt
                        bởi mèomướp
                        Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
                        21-02-2025, 12:32
                      • vi van pham
                        Trả lời cho Tiếng Anh cho người Việt
                        bởi vi van pham
                        Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

                        Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
                        20-02-2025, 21:31
                      • bqviet
                        Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
                        bởi bqviet
                        Thiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.
                        20-02-2025, 17:22
                      Đang tải...
                      X