2017-03-31 1 views
0

임베디드 시스템 프로그래밍을하고 있습니다. 프로세스가 기본적으로 높은 우선 순위로 설정되어 있지만 쉘 명령을 호출하는 것과 같은 일부 작업의 경우 파일을 작성하십시오. 우선 순위를 낮추고 다시 상승 할 생각이었습니다. 그래서 그것은 "setdefaultpriority"와 "우선 순위 향상"과 같은 종류의 함수 호출과 같습니다.부작용이 자주 발생하는 프로세스 우선 순위가 변경됩니다

그리고 우리의 프로세스에서 많은 쉘 명령어를 호출합니다. 한 파일에서 "setdefault ..."및 "improve .."의 수십 쌍을 호출해야 할 수도 있습니다

내 질문에 하나의 프로세스에서 많은 우선 순위 작업이 나쁜 영향을 미칩니 까?

+0

** 측정 **에서 성능에 문제가 있습니까? 그렇지 않다면, 나는 귀찮게하지 않을 것입니다. – Jens

답변

0

setpriority은 비 루트 프로세스에서만 올라갈 수 있고 (우선 순위는 낮아짐) 결코 중단 될 수 없습니다.

쉘 프로세스를 실행하기 전에 수행 할 수있는 작업은 하위 프로세스의 프로세스 우선 순위를 낮추는 것입니다.

//errror checks ommited 
#include <sys/resource.h> 
#include <sys/time.h> 
#include <stdio.h> 
#include <unistd.h> 
#include <assert.h> 
#include <sys/wait.h> 

int main() 
{ 
    pid_t pid; 
    pid=fork(); 
    assert(pid>=0); 
    if (!pid){ 
     execlp("nice", "nice", (char*)0); 
     _exit(1); 
    } 
    wait(0); 
    pid=fork(); 
    if (!pid){ 
     setpriority(PRIO_PROCESS, 0, 10); 
     execlp("nice", "nice", (char*)0); 
     _exit(1); 
    } 

} 
/* should print: 
    0 
    10 
*/ 

forkexec* 및 비용에 비해 무시할 수 있어야 setpriority만큼 간단 시스템 호출의 성능 오버 헤드.

관련 문제