2013-07-23 3 views
0

4 개의 프로세스가 공통의 세마포를 공유하고 있으며, 모든 프로세스가 동일한 우선 순위를 가지고 있습니다. 잠금 내부의 중요한 영역에는 fflush() 호출을 포함하여 읽기/쓰기 작업이 있습니다.프로세스 간 컨텍스트 스위칭 시간을 단축하십시오.

로그에서 특정 프로세스의 세마포를 제공 한 후 잠금을 획득하는 데 다른 프로세스가 걸리는 데 상당한 시간이 걸리는 것을 관찰했습니다.

4 개의 프로세스가 모두 같은 지점에서 잠기므로 내장 된 장치에 성능 문제가 있습니다. pthread_cond_t는 잠금이 스레드간에 공유되는 경우 전환 시간을 최소화하는 데 사용할 수 있습니다. 이제 프로세스 간 전환 시간을 최소화하기 위해 수행 할 수있는 작업은 무엇입니까?

답변

1

커널 내부에서 처리되는 컨텍스트 전환. 컨텍스트 스위칭을 수행하는 것은 커널 스케줄러의 일이므로 스케줄러 컨텍스트 스위칭 경로의 속도를 높이는 것 외에도 많은 일을 할 수는 없습니다. 또 다른 방법은 문제를 파악하고 잠금 경합 (아마도)을 줄임으로써 앱을 개선하는 것입니다.

+0

커널이 프로세스를 스케줄하는 것으로 알고 있습니다. 그러나 pthread의 조건 변수가 커널에 대기 중 프로세스로 전환하는 것을 알 수 있도록 사용할 수 있는지 궁금합니다. 순환 링크 된 목록에서 대기중인 프로세스를 찾으십시오. –

+0

어떤 식 으로든 수행하지 않고 이런 식으로 말하기가 정말 어렵습니다. 광범위한 연구에서 스케줄러는 다양한 특성을 지닌 다양한 종류의 프로세스를 처리해야하며 스케줄러는 커널의 다른 부분에 영향을 미치지 않는다는 것을 알고있는 사람들 사이에서 공정하게하려고 시도합니다. –