1장 - Prio를 이용해 프로세스 우선순위 고정시키기
2장 - 우선순위란 무엇인가?
Prio를 이용해 프로세스 우선순위 고정시키기
많이 알려져 있는 프로그램은 아니다. 하지만, 나 같은 성능 낮은 컴퓨터에는 체감 성능이 있는 것 같고 작업관리자를 띄우면 몇가지 추가 메뉴가 있어 시스템 내부의 동태를 파악하는데 도움이 된다.
여튼 프로세스 우선 순위를 높게 설정하면 미세하게 끊기는 게임이나 동영상이 부드러워지는 효과를 볼 수도(못볼 수도) 있습니다. 그런데 프로그램 자체에서 옵션을 통해 프로세스 우선순위를 설정할 수 있도록 지원하지 않는 한 프로그램을 새로 실행시킬 때마다 우선순위를 새로 지정해야하는 번거러움이 있습니다. 이런 번거러움을 해결할 수 있는 프로그램을 소개해드리려 합니다.
* 이 프로그램은 개인 사용자의 경우 자유롭게 사용할 수 있습니다. (Free for personal use.)
* XP / VISTA 에서 사용 가능한 것 같습니다.
우선 아래 사이트에 가셔서 prio.exe 파일을 다운받으시구요.
(첨부 파일로 올려둿음)
설치하시면 간단하게 설치가 끝납니다. 재부팅을 해야 하는지는 까먹었네요. 시스템 관련한 내용이니 재부팅 하시는게 좋겠죠.
프로그램과 관련된 설명은 http://www.prnwatch.com/prio.html 여기 보시면 잘 나와 있습니다.
중요한 거 몇가지만 설명드리자면 원하는 프로그램을 실행시킨 후에 Ctrl + Shift + ESC 를 누르시면 작업 관리자가 뜨는데요.
원하는 프로그램에 대고 마우스 오른쪽을 클릭하면 우선순위를 설정할 수 있는 메뉴가 뜨구요. 기존과는 다르게 Save Priority 가 추가되어 있습니다.처음 한번만 설정해주면 같은 프로그램을 또 띄웠을 때 알아서 기존에 설정한 우선순위로 고정되어 실행이 됩니다.
프로세스 우선순위란?
운영체제는 여러 쓰레드(Thread)에게 돌아가면서 CPU를 할당해주는 방식으로 멀티태스킹을 지원합니다. 예를들면 운영체제가 A쓰레드에게 0.002초 동안 CPU를 할당해주고 다시 B 쓰레드에게 0.002초, 다시 A에게... 이런 식입니다. 이를 라운드 로빙 (round-robin) 방식이라고 합니다.
"우선순위"는 운영체제가 한 쓰레드에게 CPU를 할당한 후에 다음 쓰레드에게 CPU를 할당할 때 어떤 쓰레드에게 CPUI를 넘길 것인지 결정하는 기준이 됩니다. 예를들어 A, B 두 개의 쓰레드가 있고 A, B 모두 같은 우선순위를 갖는다면 운영체제는 A -> B -> A -> B 이런 식으로 CPU를 할당합니다.
그런데 만약 A가 우선순위가 높다면 A에게 CPU를 할당한 후 A, B 두 개의 쓰레드 중 A가 우선순위가 높으므로 A에게 다시 CPU를 할당해 주게 됩니다.
쓰레드란 실행흐름입니다. 우리가 흔히 프로그램이라고 하는 .exe 파일은 실행되게 되면 메모리에 적재되게 되는데 이를 프로세스라고 합니다. 모든 프로세스는 하나(싱글 쓰레드) 혹은 여러 개의 쓰레드(멀티 쓰레드)를 갖고 있습니다. 그리고 각 쓰레드는 우선순위를 가지고 있습니다. 운영체제는 쓰레드 목록을 가지고 있다가 우선순위에 따라 CPU를 할당해 줍니다.
[프로세스를 프로세서에서 실행하는 순서를]이 조금 더 맞는 말일 것 같군요. 정확히는 실행 순서라기보다는 프로세서를 점유하는 시간, 선점권 등에서 우선 순위가 올라간다고 표현하는게 더 맞겠네요.
김진원님이 말하신 실시간 우선 순위는 실질적인 의미의 실시간의 의미를 가지지는 않습니다. 저 프로그램을 사용해보지는 않아서 잘 모르겠습니다만 일부 프로세스 등을 임의적으로 우선순위를 변경하는 행위는 조금 위험한 행위입니다.
또, 일부 프로그램에서는 우선순위 등을 올리는 행위를 인정하지 않습니다.
본문에서 언급된 멀티태스킹을 하면 하나의 프로세스만을 처리하는게 아니라 여러 프로세스를 처리하게 되는데 한 프로세스의 우선 순위의 상승으로 다른 프로세스의 처리가 느려지면서 시스템 전체적으로 느려질 수 있는 가능성도 있을 수 있겠지요
실시간은 우선권에서 최고의 우선권을 가진다는 뜻이지 실시간 처리를 말하는게 아니죠.
예를들어 실시간 우선권을 가진 프로세스가 CPU의 처리능력을 다 사용하지 않을때는 남는 능력으로 다른 프로세스를 처리 할 수 있습니다.
가령 MPEG1 같은 저화질의 동영상을 E6600 에서 실시간 우선권을 주어 재생한다면 CPU는 우선적으로 해당 동영상 처리하는데 처리 능력을 배당하겠지만 어차피 MPEG1 동영상은 E6600이 제시간에 충분히 처리하고도 남기 때문에 남는 능력을 다른 프로세스에 배당할수 있게 되어 동영상 재생을 실시간 순위로 설정해도 무리가 없습니다.
문제는 E6600으로도 처리하기 벅찬 프로세스에 실시간 우선 순위를 설정해 주면 해당 프로세스의 처리가 다른 모든 프로세스 처리보다 우선하기 때문에 CPU가 다른 프로세스들을 처리할 겨를이 없게 되죠. 한마디로 제 먼저 댓글에 쓴대로 시스템이 먹통이 되게 됩니다. 다운은 아니지만 실시간 우선권을 가진 프로세스 처리가 끝날때까지는 다른 모든 작업은 중지되죠.
희원님 말씀처럼 우선 순위를 마구잡이로 조정하는 것은 바람직하지 못하지만 자신이 자주 사용하는 몇가지 프로그램의 우선 순위를 적당히 설정해 주면 보다 쾌적한 컴퓨팅 환경을 구축할수 있습니다.
출처 http://www.sunslife.com/bbs/zboard.php?id=2001&no=274
---------------------------------------------------------------------------------------
여기까지가 본글입니다.
글자체를 지우고 다시썻는데요 어던분이 비스타 실행안된다 그래서 찾다가 더좋은글을 발견해서 바꾸었습니다.
월래 어제 수정할려햇는데 윈도우 7 설치때문에 늦었네요 죄송합니다.
비스타 실행문제는 실행 권한? 그걸 바꿔주면 된다그러구요 맨 위에 스샷도 비스타이고요
파일은 전 글꺼 썻구요 출처는 위에다 썻는데 전체적으로 제가 손봣습니다 대화형식으로 된걸 고친거라서 어색한 부분도 있을거구요
일반인이 듣기에 헤롱헤롱한 전문용어들은 대체적으로 제거햇습니다 맞춤법 틀린거있으면 예기해주시고요 폰트를 다른거 썻는데
눈아프시면 그냥 굴림으로 바꿀게요
댓글좀 써주세요 하나하나 댓글 올라올떄마다 기분이 얼마나 좋은지 모르겠어요 눈팅만 하고가시지말고 욕이라도 또는 ㅇㅇ 라도 써주세요
ps. 맨위 스샷에서 초록색은 필요 있는 프로세스이고 빨간색은 필요없는것 (알수없는 이름인경우 바이러스 일수도?!) 여서 빨간색은 프로세스 종료로 날려줘도 되는것입니다. 시작프로그램 같은거 관리 안하시는분은 컴퓨터 게임하기 전에 한번씩 빨간거 지워주고 하시면 좋을듯?