2010-12-15 6 views
0

필자의 요구 사항은 입력으로 시스템 호출 목록을 취한 다음 파일 목록에서 이러한 시스템 호출의 발생을 검색하는 도구를 작성하는 것입니다. 지금은 227 개의 시스템 호출 목록을 확인했습니다. 파일 수는 엄청날 수 있습니다. 지금 당장 사용했던 알고리즘은 for 중첩 된 간단한 루프입니다. 그리고 당연히이 프로그램은 처리하는데 아주 오랜 시간이 걸립니다. 나는 이것을 달성하기 위해 쉘 스크립트를 사용하고있다.쉘 스크립트를 사용한 검색 도구

아무에게도이 작업을 수행하는 데 더 나은/효율적인 알고리즘을 제안 할 수 있습니까?

감사합니다. Aditya.

답변

0

어떤 유형의 파일입니까? 소스 코드? 실행 파일? 또한 syscall은 자체 수정 코드를 사용하여 런타임에 구성 될 수 있으며 대부분의 경우 syscall은 잠재적 인 동적 "데이터"인 syscall 번호와 함께 일반 커널 항목이므로 정적 파일 분석이 불완전 할 수도 있습니다 심지어 유용?

시스템 콜을 일반적으로 파일의 다른 내용과 구별 할 수있는 것을 식별 할 수 있다면, 먼저 그것을 체크하고 어느 것이 든간에 무차별 대입이나 어떤 종류의 트리 검색.

또 다른 아이디어는 grep을 사용하여 시스템 호출을 식별하고 파일 이름과 행 번호 또는 원하는대로 출력 할 수 있는지 알아 보는 것입니다. 그런 다음 시스템에서 해당 파일에 대한 정렬을 간단하게 사용할 수 있는지 확인하십시오. 요구.

멋진 해시 관련 기능이있는 perl과 같은 언어를 사용하여 살펴볼 수도 있습니다.

+0

필자가 작성한 도구는 한 플랫폼에서 다른 플랫폼으로 응용 프로그램을 마이그레이션 할 때 필요한 견적에 사용됩니다. Solaris에서 HP UX로 말하십시오. 견적은 모두 거칠고 정확하지 않습니다. 이 도구는 필요한 시스템 변경 사항을 식별 한 후에 필요한 변경 사항을 제공합니다. – Aditya

+0

여기 내 문제는 성능입니다. 필자는 다소 포괄적 인 시스템 호출 목록 (내장 된 코드 목록)과 주어진 코드 조각에 대한 소스 파일 목록을 가지고 있습니다. 두 개의 for 루프를 사용하는 것 외에 다른 하나는 다른 루프 내부에 있습니다. 이 작업을 수행하는보다 효율적인 방법이 있습니까? – Aditya

0

시스템 호출은 한 줄에 하나씩 calls 파일에 있습니다. 파일 목록은 한 줄에 하나씩 list_of_files 파일에 있습니다.

cat list_of_files | xargs grep -f calls 
관련 문제