얘기하자 우선순위에 대해 Windows 프로세스 . 대부분의 경우 우선순위를 설정하여 "놀이"할 필요는 없지만 때로는 유능한 시스템 관리자시스템이 실행 중인 작업 간에 프로세서 시간을 보다 정확하게 분배하는 데 도움이 될 수 있습니다. 단일 레시피는 없지만 "선택 및 검색"을 통해 상당히 실현 가능합니다. 이것이 어디에 필요할 수 있습니까? 예를 들어, 1C-SQL 조합에서는 리소스가 가장 중요한 프로세스인 1C 및 SQL에 더 많은 프로세서 시간을 제공할 수 있습니다.

일반적으로 작업 관리자를 통해 실행 중인 프로세스의 우선 순위를 보고 변경할 수 있습니다.

윈도우NT/2000/7 /2008

윈도우 2012의 경우좀 더 깊게 "묻혀" 있었어요

위의 예에서 볼 수 있듯이 6가지 우선순위만 사용할 수 있습니다(나중에 밝혀지듯이 이는 다음과 같습니다). 우선순위 수업). 충분한? 마이크로소프트는 그렇게 생각한다. 하지만 "640KB의 RAM이면 모든 사람에게 충분하다"고 말한 Bill Geist의 "전설적인" 문구를 기억해 봅시다. 그러나 시간은 이것이 사실과 거리가 멀다는 것을 보여주었습니다. :)

이제 그것이 실제로 어떤지 알아 봅시다.

실제로 Windows에는 0부터 31까지 32개의 우선순위 수준이 있습니다.

그들은 다음과 같이 그룹화됩니다:

  • 31 — 16 실시간 수준;
  • 15 — 1 동적 수준;
  • 0 - 제로 페이지 스레드를 위해 예약된 시스템 수준입니다.

프로세스가 생성되면 6개 중 하나가 할당됩니다. 우선순위 수업:

  1. 실시간 수업(값 24),
  2. 고급(값 13),
  3. 일반 등급 이상(값 10),
  4. 일반 클래스(값 8),
  5. 일반 등급 이하(값 6),
  6. 또는 유휴 클래스(값 4).

위에서 설명한 대로 작업 관리자를 사용하여 프로세스 우선순위를 볼 수 있습니다.

메모: 보통 이상 및 보통 이하 우선 순위는 Windows 2000부터 도입되었습니다.

각 스레드의 우선순위( 기본 스레드 우선순위)는 프로세스의 우선순위와 상대적 우선순위스트림 그 자체. 7개의 상대적 스레드 우선순위가 있습니다.

  1. 정상: 프로세스와 동일합니다.
  2. 정상 이상: 처리 우선순위에 +1;
  3. 정상 이하 : -1;
  4. 최고: +2;
  5. 최저: -2;
  6. 시간 중요: 실시간 클래스의 기본 스레드 우선순위를 31로 설정하고 다른 클래스의 기본 스레드 우선순위를 15로 설정합니다.
  7. 유휴: 실시간 클래스의 기본 스레드 우선순위를 16으로 설정하고 기타 클래스의 우선순위를 1로 설정합니다.

다음 표에는 프로세스, 상대 및 기본 스레드 우선순위가 나와 있습니다.

스레드 우선순위 프로세스 클래스 프로세스 클래스
유휴 수업 일반등급 이하 일반 수업 보통급 이상 고급 실시간 수업
1 게으른게으른게으른게으른게으른
2 최저
3 아래에...
4 유휴 수업 정상최저
5 위에...아래에...
6 일반등급 이하 제일 높은정상최저
7 위에...아래에...
8 일반 수업 제일 높은정상최저
9 위에...아래에...
10 보통급 이상 제일 높은정상
11 위에...최저
12 제일 높은아래에...
13 고급 정상
14 위에...
15 제일 높은
15 시간이 중요함시간이 중요함시간이 중요함시간이 중요함시간이 중요함
16 게으른
17
18
19
20
21
22 최저
23 아래에...
24 실시간 수업 정상
25 위에...
26 제일 높은
27
28
29
30
31 시간이 중요함

이제 우리는 이 모든 것을 알았으니, 이에 대해 무엇을 할 수 있을까요? 예를 들어 사용을 시작하십시오.

"비표준" 우선순위로 프로세스를 실행하거나 변경할 수 있는 다른 방법은 무엇입니까?

방법 1. 작업/프로세스를 시작하고 작업 관리자를 통해 우선순위를 변경합니다.

이 방법의 단점:

  • 6개의 우선순위만 사용 가능
  • 우선순위 전환은 마우스로 수행되며 자동화되지 않습니다.

방법 2. 적절한 키와 함께 START 명령을 사용할 수 있습니다

사용 가능한 우선순위 키는 다음과 같습니다(의도적으로 키를 생략하고 있습니다) 명령줄시작설명된 우선순위 작업 프로세스와 관련이 없음):

C:\>시작 /?
지정된 프로그램이나 명령을 실행하기 위해 별도의 창을 시작합니다.
시작 ["제목"]


낮은 IDLE 우선순위 클래스에서 애플리케이션을 시작합니다.
정상 NORMAL 우선순위 클래스에서 애플리케이션을 시작합니다.
높은우선순위가 높은 클래스로 신청을 시작하세요.
실시간 REALTIME 우선순위 클래스에서 애플리케이션을 시작합니다.
비정상 ABOVENORMAL 우선순위 클래스에서 애플리케이션을 시작합니다.
보통 이하 BELOWNORMAL 우선순위 클래스에서 애플리케이션을 시작합니다.

보시다시피 START 명령을 사용하면 작업 관리자를 통해 사용할 수 있는 것과 동일한 6가지 우선 순위로 프로세스를 시작할 수 있습니다.

방법의 단점:

  • 6개의 우선순위만 사용 가능

방법 3: wmic.exe 유틸리티 사용

위에 표시된 것처럼 작업 관리자와 START 명령은 우선순위 할당 작업에 있어 상당히 투박합니다. 이를 좀 더 유연하게 사용하는 방법을 살펴보겠습니다. 우리는 유틸리티를 사용할 것입니다 wmic.exe.

명령줄:

name="AppName" CALL이 우선순위를 설정한 wmic 프로세스 ProcessIDLevel

name="calc.exe"인 wmic 프로세스 CALL setpriority 32768

name="calc.exe" CALL 우선 순위가 "정상 이상"으로 설정된 wmic 프로세스

우선순위(미리 정의됨):

  • 유휴: 64
  • 정상 미만: 16384
  • 일반: 32
  • 정상 이상: 32768
  • 높은 우선순위: 128
  • 실시간: 256

후퇴. 같은 이름의 프로세스가 여러 개 있으면 어떻게 해야 합니까? 프로세스의 우선순위는 프로세스 이름이나 프로세스의 PID(Process ID)를 사용하여 변경할 수 있습니다.

다음은 필요한 정보를 얻기 위해 wmic.exe를 실행하는 간단한 예입니다.

우리는 다음 명령을 사용합니다.

메모: 이 명령을 실행하는 예는 제시하지 않겠습니다. 프로세스 목록이 너무 큽니다. 원한다면 스스로 할 수 있습니다.

당신은 당신의 컴퓨터에서 실행중인 프로세스 목록을 얻을 것입니다 로컬 컴퓨터. 이제 다음 명령을 실행하십시오.

wmic 프로세스 목록 개요 | "cmd.exe"를 찾으세요

결과:

그림을 더욱 완벽하게 만들기 위해 특별히 cmd.exe의 여러 복사본을 시작했습니다.

이제 프로세스 목록은 실행 가능한 모듈 이름에 "cmd.exe" 문자열이 포함된 프로세스로만 제한됩니다. 프로세스의 PID에 주의하세요.

이제 표준 명령줄 도구를 사용하지 않고 WMI를 직접 사용하여 관심 있는 프로세스를 선택해 보겠습니다. 이렇게 하려면 간단히 다음과 같이 작성하세요.

설명="cmd.exe" 목록이 간략한 wmic 프로세스

결과:

결과를 비교해보세요. CMD.EXE 프로세스의 PID를 기억하십시오.

wmic.exe를 실행하는 명령줄

processid="XXXX" CALL이 우선순위를 설정하는 wmic 프로세스 ProcessIDLevel

이제 특정 프로세스의 우선순위를 변경할 수 있습니다(예: PID=8476).

processid="8476" CALL이 우선순위 32768로 설정된 wmic 프로세스

processid="8476" CALL이 우선순위를 "정상보다 높게" 설정한 wmic 프로세스

지침

"Ctrl+Alt+Delete" 키 조합을 누르세요. 수행할 수 있는 작업 목록이 화면에 나타납니다.

열리는 작업 관리자 창에서 "응용 프로그램" 탭으로 이동합니다.

우선순위를 변경하려는 프로그램을 선택하세요. 그것을 클릭하세요 오른쪽 클릭마우스를 클릭하고 드롭다운 메뉴에서 "프로세스로 이동" 항목을 클릭합니다. 컴퓨터에서 실행되는 모든 프로그램에는 자체 프로세스가 있으며 우선 순위가 설정됩니다.

드롭다운 메뉴에서 우선순위를 중간, 높음, 낮음 또는 기타로 설정합니다.

유용한 조언

당신은 볼 수 있습니다 추가 정보작업 관리자에서 실행 중인 프로세스에 대해 이렇게 하려면 해당 항목을 마우스 오른쪽 버튼으로 클릭하고 "속성" 명령을 선택하십시오. 표시되는 대화 상자에는 배치 및 크기를 포함하여 프로세스에 대한 세부 정보가 표시됩니다. 세부정보 탭을 클릭하면 프로세스에 대한 자세한 정보를 볼 수 있습니다.

작업 표시줄을 마우스 오른쪽 버튼으로 클릭하고 드롭다운 메뉴에서 "작업 관리자"를 선택하면 작업 관리자를 시작할 수 있습니다.

출처:

  • 우선순위를 바꾸는 방법

UNIX의 프로세스 스케줄링은 우선순위를 기반으로 합니다. 일반적으로 각 프로세스에는 두 가지 우선순위 속성이 있습니다. Windows에는 32개의 우선순위 수준이 있습니다. 컴퓨터에서 운영 체제에 있는 프로그램의 작업 속도를 높일 수 있습니다. 이렇게 하려면 프로세스의 우선순위를 높이면 됩니다.

지침

"작업 관리자"로 이동해야 합니다. 이렇게 하려면 "작업 표시줄" 섹션을 마우스 오른쪽 버튼으로 클릭하세요. 안에 상황에 맞는 메뉴"작업 관리자"를 선택하십시오. "프로세스" 탭으로 이동합니다. 실행 중인 모든 프로세스 목록이 표시됩니다. 원하는 것을 찾아 마우스 오른쪽 버튼으로 클릭하세요. 다음으로 "우선순위" 명령을 선택합니다. 이제 프로세스의 우선순위를 높일 수 있습니다. "작업 관리자"가 가능합니다.

InqSoft Speedballs 유틸리티를 사용하여 우선순위를 높일 수도 있습니다. 이는 모든 프로세스를 모니터링합니다. 그것을 실행하십시오. 프로세스 우선순위를 자동으로 높입니다. 설정으로 이동하시면 설정을 변경할 수 있습니다. "우선순위 높이기" 메뉴에서 높음 확인란을 선택하고 "적용"을 클릭하세요.

제어판에서 설정 섹션으로 이동합니다. 성능 및 유지 관리를 선택합니다. 시스템 메뉴로 이동하여 성능 탭으로 전환합니다. 애플리케이션 성능 섹션을 찾아 화살표를 사용하여 설치하세요. 요구되는 수준프로세스 우선순위.

Linux에서도 프로세스의 우선순위를 높일 수 있습니다. 이는 콘솔을 통해 수행됩니다. 상단 명령을 누르면 텍스트가 앞에 나타납니다. 이제 다양한 작업을 수행할 수 있습니다. 우선순위를 높이려면 키보드의 r 키를 누르세요.

게임에서 프로세스의 우선순위를 높여야 하는 경우 다음을 수행하십시오. 예를 들어 게임월드워크래프트의. "시작"을 열고 "메모장" 프로그램을 엽니다. 다음 텍스트를 붙여넣습니다: @echo off cd /d "C:/Program Files/World of Warcraft"start/high wow.exe. 이 경로를 "C:/Program Files/World of Warcraft"라는 새로운 경로로 변경하세요. 이전에 작성한 텍스트를 메모장에 .bat 형식으로 저장합니다. 이 파일을 통해 게임을 실행하세요. 우선순위가 높아지는 것을 확인할 수 있습니다.

출처:

  • 우선순위를 변경하는 방법

컴퓨터의 자원 보유량이 아무리 강력하더라도 여전히 끝이 없습니다. 특수 OS 구성 요소는 실행 중인 모든 시스템과 응용 프로그램 간에 RAM 및 그래픽 메모리, 프로세서에 대한 액세스 우선 순위 및 빈도, 캐시 메모리 및 일부 기타 리소스를 배포합니다. 그는 기본적으로 자신이 직접 작성하는 우선순위 테이블에 따라 이를 수행합니다. 사용자는 실행 중인 프로세스의 중요성 분포에 개입할 기회가 있습니다.

지침

디스패처 실행 Windows 작업. 예를 들어 Ctrl + Alt + Delete 키 조합을 눌러 이 작업을 수행할 수 있습니다. Windows 7에서는 "작업 관리자 시작"을 선택해야하는 추가 메뉴가 화면에 나타납니다. 윈도우 버전중간 단계가 없습니다. 작업 관리자를 여는 또 다른 방법은 Win + R 키 조합을 눌러 프로그램 시작 창을 연 다음 taskmgr 명령을 입력하고 확인 버튼을 클릭하는 것입니다.

원하는 프로세스가 있는 라인을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 "우선순위" 섹션을 확장합니다. 기본적으로 모든 프로세스에는 "보통" 우선 순위가 있습니다. 나열된 6개 옵션 중 하나를 선택하여 이를 변경하세요. 동시에, 어떤 경우에는 응용 프로그램의 우선 순위(“높음” 및 “실시간” 항목)를 과도하게 높이면 응답이 느려질 수 있다는 점을 잊지 마십시오. 운영 체제키 누름, 마우스 움직임 등 우선순위가 너무 낮으면 동일한 문제가 발생할 수 있습니다. 시스템 프로세스(예: Explorer라는 프로세스)

정의에 따르면 Windows는 멀티태스킹 운영 체제입니다. 즉, 여러 작업을 동시에 수행할 수 있습니다. 그러나 임무는 다릅니다. 그리고 차이점은 우선순위에 있습니다. 즉, 어떤 작업을 수행할 때 윈도우 프로그램프로세스(프로그램)의 우선순위에 따라 특정 방식으로 리소스를 배포합니다. 앞으로는 프로그램을 프로세스라고 부르겠습니다. 더 쉽습니다. Windows에서 실행되는 모든 프로그램은 프로세스입니다. 우선순위는 크고 작습니다. 그러나 이에 대해서는 나중에 자세히 설명합니다. 이것이 우리에게 어떻게 도움이 됩니까? 여기에 내용이 있습니다. 많은 사람들이 Vb 프로그램의 실행 속도가 느리다고 불평합니다. 한때 나는 가장 분명한 예를 통해 이것을 발견했습니다. 특정 시간 간격으로 어떤 작업을 수행해야 하는 프로그램을 상상해 보세요. 예를 들어 사용자에게 무언가를 표시하는 것입니다. 간단합니다. 타이머를 잡고 계속하세요. 이 외에도 프로그램이 주기적으로 다른 항목을 한 번 이상 계산해야 하고 타이머가 많으면 어떻게 될까요? 속도가 느려질 것입니다. Windows가 아니라 프로그램뿐입니다. 불공정? 예. 이는 Windows가 프로그램에 리소스를 거의 할당하지 않는다는 것을 의미하며 이는 확실히 충분하지 않습니다. 그렇다면 Windows에 더 많은 것을 요청하세요. 하지만 어떻게 해야 할까요?

이와 같이

그래서 우선순위를 바꿔야 합니다. 이제 그들에 대해 이야기할 시간입니다. Windows "98에는 Windows Me나 2000보다 우선순위가 적지만 여전히 존재합니다. 여기에 있습니다.

실시간 우선 순위 - 프로그램은 마치 Windows의 목적인 것처럼 실행됩니다. 모든 자원이 그녀에게 주어졌습니다.

높은 우선순위(높음) - 다른 응용 프로그램을 위해 약간의 시간을 남겨두는 방식으로 프로그램이 실행됩니다.

일반 - 실행이 일반적인 방식으로 진행됩니다.

낮음(유휴) - 실행이 발생하면 Windows에서 할 일이 없을 때만 발생합니다.

실행 중인 프로그램은 먼저 보통 우선순위를 받고 평소대로 실행됩니다. 이 우선 순위를 사용하면 프로그램이 무엇을 하든 Windows가 중단될 정도로 많은 리소스를 소비할 수 없습니다. 이론적으로는. 그러나 그것은 우리에게 적합하지 않습니다. 우리는 높은 우선순위가 필요하며, 모든 것이 매우 스트레스가 많은 경우에는 실시간이 필요합니다. 그러나 실시간은 위험한 것입니다. 마우스라도 쉽게 느려질 수 있습니다. 나머지 프로그램에 대해서는 이야기하고 싶지 않습니다. 그냥 개자식이고 그게 다야. 그렇다면 우선순위를 어떻게 바꿀 수 있을까요?

API를 다시

예, SetPriorityClass 함수는 우선순위 설정을 담당합니다. 즉, 이를 호출하고 필요한 모든 것을 전달함으로써 원하는 우선순위를 받게 됩니다.

비공개 선언 함수 SetPriorityClass _ Lib "kernel32"(ByVal hProcess As Long, _ ByVal dwPriorityClass As Long)

  • hProcess는 프로세스의 핸들입니다. 아래에 그에 대해.
  • dwPriorityClass - 우선순위. 그것이 우리에게 필요한 것입니다.

우선순위 상수:

비공개 Const REALTIME_PRIORITY_CLASS = &H100 비공개 Const HIGH_PRIORITY_CLASS = &H80 비공개 Const NORMAL_PRIORITY_CLASS = &H20 비공개 Const IDLE_PRIORITY_CLASS = &H40

간단합니다. 상수를 가져와서 진행하세요. 하지만 프로세스 핸들을 가져와야 합니다. 즉, Windows의 프로세스와 창은 거의 동의어이지만 항상 그런 것은 아닙니다. 창 핸들은 하나이고 프로세스 핸들은 완전히 다릅니다. 즉, 프로세스에는 여러 개의 창이 있을 수 있지만 창에는 프로세스 소유자가 하나만 있습니다. 이는 프로세스 자체의 핸들을 찾는 방법을 배워야 함을 의미합니다. OpenProcess 함수는 매개변수를 전달한 후 프로세스에 어떤 핸들이 있는지 알려줍니다.

개인 선언 함수 OpenProcess _ Lib "kernel32"(ByVal dwDesiredAccess As Long, _ ByVal bInheritHandle As Long, ByVal dwProcessId As Long)

dwDesiredAccess - 우리가 알고 싶은 것(프로세스의 핸들은 다릅니다. 하나는 프로세스를 종료하기 위한 것이고, 하나는 정보를 수신하기 위한 것입니다 - 다른 것). PROCESS_QUERY_INFORMATION 상수, 즉 프로세스를 쿼리하는 상수를 사용합니다.

개인 Const PROCESS_QUERY_INFORMATION = &H400

bInheritHandle은 부울 변수입니다. True를 전달하면 결과 핸들은 나중에 다른 프로세스에서 사용될 수 있습니다. 하지만 우리는 그럴 필요가 없습니다. 거기에 False를 전달합니다.

DwProcessId - 예, 이것은 또 다른 것입니다 - 프로세스의 식별자(id)입니다. 우리도 그것을 얻어야 합니다. 어떻게? 단지! 매개 변수 없이 호출되는 GetCurrentProcessId 함수(감사합니다)는 단순히 현재 프로세스의 ID를 반환합니다.

비공개 선언 함수 GetCurrentProcessId _ Lib "kernel32" 별칭 "GetCurrentProcessId"() 길이

모두. 당신은 숨을 쉬고 모든 것을 아름답게 할 수 있습니다.

일부 코드

옵션 명시적 비공개 선언 함수 SetPriorityClass _ Lib "kernel32"(ByVal hProcess As Long, _ ByVal dwPriorityClass As Long) Private Const REALTIME_PRIORITY_CLASS = &H100 Private Const HIGH_PRIORITY_CLASS = &H80 Private Const NORMAL_PRIORITY_CLASS = &H20 Private Const IDLE_PRIORITY _CLAS S = &H40 개인 선언 함수 OpenProcess _ Lib "kernel32" (ByVal dwDesiredAccess As Long, _ ByVal bInheritHandle As Long, ByVal dwProcessId As Long) Private Const PROCESS_QUERY_INFORMATION = &H400 개인 선언 함수 GetCurrentProcessId Lib "kernel32" () As Long Private Sub SetPriority(Priority As Long) Dim ProcId As Long "프로세스 ID에 대한 변수 Dim ProcHandle As Long" 프로세스 핸들에 대한 변수 ProcId = GetCurrentProcessId "id 가져오기 ProcHandle = OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcId) "수신된 핸들 호출 SetPriorityClass(ProcHandle, Priority) " 우선순위 설정 End Sub Private Sub Form_Load() "우선순위 설정 SetPriority HIGH_PRIORITY_CLASS End Sub

우리는 사전을 사용합니다. 프로그램이 닫히지 않으면 컴퓨터 리소스를 사용합니다. 특별한 Windows OS 프로그램에서 실제로 무슨 일이 일어나고 있는지 확인할 수 있습니다. 그러나 성능을 향상시키기 위해 단지 보기만 하는 것이 아니라 리소스 분배를 관리해야 합니다. Windows 작업 관리자에서 우선 순위를 높이는 방법을 살펴 보겠습니다.

많은 프로그램을 사용할 때 컴퓨터는 특정 순서에 따라 프로그램을 전환합니다. 그가 가장 중요하다고 생각하는 것이 먼저 실행됩니다. 중요도를 우선순위라고 합니다. 일반적으로 프로그램 코드 자체에 의해 제어됩니다. 그러나 사용자는 기본 매개변수를 다른 매개변수로 변경할 수 있으므로 현재 그에게 중요한 매개변수를 더 빠르게 만들 수 있습니다.

대기열 유형

중요도에는 다음과 같은 등급이 있습니다.

  • 실시간 우선 순위는 모든 컴퓨터 리소스가 선택된 프로세스에 부여됨을 의미합니다. 심지어 시스템 프로세스용 리소스라도 해당 정도까지 끌어올리기 전에 생각해야 합니다.
  • 높은;
  • 평균 이상;
  • 평범한;
  • 평균 이하;
  • 짧은.

우선순위 값 변경

작업 관리자에서 우선순위를 설정하는 방법을 살펴보겠습니다.


중요한. 하나의 프로그램에 대한 높은 값은 기계 전체의 성능을 크게 저하시킬 수 있다는 점을 기억하십시오. 점차적으로 늘려가며, 경험을 통해 작업이 편안해지는 정도를 찾아보세요.

언제 적용되나요? 주로 임시 작업을 해결하는 데 사용됩니다. 예를 들어, 영화를 시청하는 동시에 인터넷에서 일부 데이터를 다운로드하면 비디오가 주기적으로 중단됩니다. 플레이어의 중요성을 높이면 이 문제가 해결될 것입니다. 이는 인터넷을 탐색할 때 브라우저 성능을 향상시키는 데에도 자주 사용됩니다.

이미 언급했듯이 변경 사항은 프로그램이 실행되는 동안 특정 시점에만 유효합니다. 다시 시작하면 기본 값으로 돌아갑니다. 최대한 많이 생각해보자 편리한 방법으로 Windows 작업의 우선순위를 변경합니다.

성능을 활용하는 다른 방법

매번 설정을 실험하는 것은 매우 불편합니다. 있다 특별 프로그램, 이는 절차를 단순화합니다. 예를 들어 프로세스 탐색기 및 Mz CPU 가속기가 있습니다. 우리는 그것들에 대해 자세히 설명하지 않을 것이며 단지 그들의 작업의 본질에 주목할 것입니다.

Mz CPU Accelerator를 사용하면 활성 창 프로그램의 값을 자동으로 늘려 매우 효율적으로 수행할 수 있습니다. 또한 이를 통해 프로세서 리소스 할당을 제어할 수 있습니다. 예를 들어 전체 코어 대신 하나 또는 두 개의 코어를 프로그램에 할당할 수 있습니다. 일반적으로 프로그램을 사용하면 응용 프로그램 속도를 높일 수 있습니다.

프로세스 탐색기를 사용하면 다음을 얻을 수 있습니다. 자세한 정보컴퓨터에서 발생하는 모든 프로세스에 대해 설명하고 그보다 더 고급 설정을 지정합니다. 표준 치료법창문.

따라서 작업 관리자에서 우선 순위 수준을 변경하는 방법을 알면 컴퓨터 속도를 높이고 오류와 정지를 방지할 수 있습니다. Windows에서 작업할 때 특정 상황에서 이 설정을 변경하는 방법에 대한 팁이 있으면 아래에 댓글을 남겨 다른 사용자와 공유하세요.

답변 7개

실시간 우선순위 스레드는 타이머 인터럽트로 인해 결코 방지될 수 없으며 시스템의 다른 스레드보다 높은 우선순위로 실행됩니다. 이러한 CPU 바인딩된 실시간 우선 순위 스레드는 시스템을 완전히 파괴할 수 있기 때문입니다.

실시간 우선순위 스레드를 생성하려면 권한(SeIncreaseBasePriorityPrivilege)이 필요하므로 관리자만 수행할 수 있습니다.

Vista 이상의 경우 실시간 우선 순위로 실행해야 하는 응용 프로그램에 대한 한 가지 옵션은 멀티미디어 클래스 스케줄러 서비스(MMCSS)를 사용하여 스레드의 우선 순위를 관리하도록 하는 것입니다. MMCSS는 애플리케이션이 너무 많은 CPU 시간을 사용하는 것을 방지하므로 시스템이 탱킹되는 것에 대해 걱정할 필요가 없습니다.

단지 "실시간" 우선순위 클래스가 "높음" 우선순위 클래스보다 높을 뿐입니다. 나는 거기에 더 많은 것이 있다고 생각하지 않습니다. 아 예, 스레드를 Real Time 클래스에 넣으려면 SeIncreaseBasePriorityPrivilege가 있어야 합니다.

Windows는 다양한 이유로 스레드의 우선순위를 높이는 경우가 있지만 다른 우선순위 클래스에서는 스레드의 우선순위를 높이지 않습니다. 또한 실시간 우선순위 클래스의 스레드 우선순위는 증가하지 않습니다. 따라서 우선순위가 높은 스레드는 실시간 우선순위 클래스로 자동 임시 승격되지 않습니다.

Windows가 우선 순위를 처리하는 방법에 대한 Russinovich의 "Windows 내부" 장은 Windows의 작동 방식을 배울 수 있는 훌륭한 리소스입니다.

일반 Windows 시스템에서 실시간 우선 순위를 갖는 스레드에는 전혀 문제가 없습니다. 전용 시스템에서 실행되는 특수 프로세스에는 필요하지 않습니다. 나는 미디어 드라이버 및/또는 프로세스에 실시간 우선 순위 스레드가 필요할 수 있다고 생각합니다. 그러나 그러한 스레드에는 다음이 필요하지 않습니다. 대량 CPU - 정상적인 시스템 이벤트가 처리될 수 있도록 대부분의 시간을 차단해야 합니다.

이는 사용 가능한 가장 높은 우선순위 설정이며 일반적으로 해당 특정 프로그램을 실행하려는 현장에서만 사용됩니다. 실제로 키보드와 마우스 스레드가 응답하지 않을 정도로 부족해질 수 있을 만큼 충분히 높습니다.

그러니 꼭 물어봐야 한다면 사용하지 마세요 :)

실시간으로 이는 프로세스에 사용할 수 있는 가장 높은 우선순위 클래스입니다. 따라서 한 단계 크다는 점에서 '하이', 두 단계 크다는 점에서 '보통 이상'과 다르다.

마찬가지로 실시간에도 스레드 우선순위 수준이 있습니다.

프로세스의 우선순위 클래스는 프로세스에 있는 스레드의 모든 유효 우선순위를 높이거나 낮추므로 "기본 우선순위"로 간주됩니다.

따라서 프로세스는 다음과 같습니다.

  • 기본 프로세스 우선순위 클래스.
  • 개별 스레드 우선순위, 변위 기본 클래스우선 사항.

실시간 애플리케이션은 백업되어야 하며 실행 중인 다른 프로세스보다 절대적으로 선점되어야 하기 때문에 실수로 사용하는 것을 방지하기 위한 특별한 보안 권한이 있습니다. 이는 보안 정책에 따라 결정됩니다.

NT6+(Vista+)에서는 Vista 미디어 클래스 스케줄러를 사용하는 것이 라이브 OS가 아닌 곳에서 실시간 작업을 수행하는 올바른 방법입니다. OS가 실시간 작업용으로 설계되지 않았기 때문에 완벽하지는 않지만 대부분 작동합니다.

Microsoft는 이 우선 순위를 매우 위험하다고 생각하며 당연히 그렇습니다. 어떤 응용 프로그램도 특별한 상황을 제외하고는 이 기능을 사용해서는 안 되며, 그런 경우라도 일시적인 필요에 따라 사용을 제한하려고 노력해야 합니다.

Windows에서는 프로그램이 더 높은 우선 순위를 사용하고 있음을 알게 되면 프로세스의 우선 순위를 제한하는 것으로 보입니다.

IDLE에서 REALTIME으로 우선순위를 설정해도 CPU 사용량은 변경되지 않습니다.

멀티프로세서에서 찾았어요 AMD 프로세서 CPU 중 하나를 LAST로 버리면 CPU 사용량이 MAX OUT이 되고 마지막 CPU는 유휴 상태로 유지됩니다. Quad AMD에서는 CPU 속도가 최대 75% 향상됩니다.

작업 관리자 사용 -> 프로세스 선택 -> 프로세스 마우스 오른쪽 버튼 클릭 -> 선택 -> 선호도 설정을 제외하고 모두 클릭 마지막 프로세서. 비디오 처리가 증가하면 남은 프로세서 및 프레임 수에서 CPU 사용량이 MAX로 증가합니다.