2010-11-29 4 views
3

그래서 개발 및 테스트 모두에서 가상화의 장단점에 대해 묻는 질문은 많이 있습니다.가상화 응용 프로그램에 대한 프로그래밍 고려 사항

내 질문에 약간의 차이가 있습니다 - 가상화가 보편화 된 세계에서 프로그래머는 가상화 된 환경에 배포 할 수있는 소프트웨어를 작성할 때 고려해야 할 사항은 무엇입니까? 내 최초의 생각의 일부는 다음과 같습니다 응용 프로그램의 다른 인스턴스가 하드웨어와 통신

  • 를 실행중인 경우

    1. 가 검출 (가상/물리적)
    2. 자원 (응용 프로그램이 멀티 코어 CPU가 단일 실행 용으로 작성 조절 CPU VM)

    다른 건 없습니까?

  • 답변

    3

    대부분의 기본 사항은 세 가지 넓은 의미로 다루어집니다. 조심해 :

    • 하드웨어 통신 관련 문제. 디스크 액세스 속도는 매우 다릅니다 (디스크 쓰기 도중에 3 일 동안 종료되는 VM을 상상해보십시오). 비정상적인 응답으로 네트워크 액세스가 중단 될 수 있습니다.
    • 멋진 포인터 연산. 그것을 피하려고 시도하십시오
    • 비정상적으로 드문 낮은 레벨/조립 지침에 크게 의존하십시오
    • 기계 시계에 의지하십시오. VM을
    • 단일 CPU 응용 프로그램에서 실행할 때 어떤 당신이 시계를 만들고있어 통화 및 시간 간격, 정기적으로 자체 Work Stealing
    • 처럼 펑키 일을 여러 CPU 시스템에서 실행 찾을 수 있습니다 특별한 값을 반환 할 수 있음을 기억하라 코너 케이스 및 비정상적인 고장 모드가 훨씬 더 일반적입니다. 가상 머신처럼 통신 할 때 네트워크 카드가 사라지는 것에 대해 걱정할 필요가 없습니다.
    • 리소스 (메모리, 디스크 등)를 수동으로 관리하십시오. 자동화 된 작업 일수록 가상 환경을보다 잘 처리 할 수 ​​있습니다. 예를 들어 C 언어로 응용 프로그램을 작성하는 대신 메모리 관리 유형의 언어/환경을 사용하는 것이 더 나을 것입니다.
    +0

    우수 답변, 이것들은 모두 좋은 지적이며, 타이밍/클럭 문제와 같이 이전에는 고려하지 않은 것들이 있습니다. – Jazza

    1

    제 경험상 실제로 신경 써야 할 몇 가지 사항이 있습니다.

    • CPU 시간 부족 (예 :너무 꽉 시간 제한)

    • 가 가
    • 시계를 실행할 수있는 배경에서 작업을 수행하는 프로세스를 항상 실행 낮은 우선 순위를 사용하지 마십시오 고르지

    • 트러스하지 마십시오 OS의 말씀을 사용하여 시스템 부하에 대한

    는 거의 모든 다른 문제는 응용 프로그램이 아니라 버츄얼 호스트 OS 또는

    :-) 원하는 SYS-관리자에 의해 처리되어서는 안된다