문제

WM 운영 체제는 프로세스 메모리를 서로 보호합니까?잘못 작성된 응용 프로그램이 실수로 첫 번째 메모리에 덮어쓰는 다른 응용 프로그램과 충돌할 수 있습니까?

도움이 되었습니까?

해결책

적어도 현재의 모든 버전에서 Windows Mobile은 Windows CE 5.0을 기반으로 구축되었으므로 다음을 사용합니다. CE 5.0의 메모리 모델 (CE 3.0과 동일합니다.)OS는 실제로 프로세스 메모리를 보호하기 위해 많은 일을 하지 않지만, 일반적으로 프로세스가 서로 간섭하지 않도록 합니다.그렇다고 힘들고 빠르진 않습니다.

CE 프로세스는 32개의 "슬롯"에서 실행됩니다.현재 실행 중인 프로세스는 슬롯 0으로 교체되고 주소는 0으로 재설정됩니다(따라서 실행 중인 프로세스의 모든 메모리는 실제로 2개의 주소, 즉 슬롯 0 주소와 0이 아닌 슬롯 주소를 갖습니다).이 주소는 보호되어 있습니다(비록 간단한 API 호출 경계를 넘다).이는 포인터 손상 등이 다른 앱을 밟지 않는다는 것을 의미합니다. 원하다 아직 할 수 있어요.

또한 CE에는 공유 메모리라는 개념이 있습니다.모든 프로세스는 이 영역에 접근할 수 있으며 100% 보호되지 않습니다.앱이 공유 메모리를 사용하는 경우(메모리 관리자는 할당 및 크기에 따라 특별히 묻지 않고도 공유 주소를 제공할 수 있습니다)공유 메모리가 있다면 모든 프로세스가 데이터 손상을 포함하여 해당 데이터에 액세스할 수 있으며 두 프로세스 모두에서 오류나 경고가 표시되지 않습니다.

다른 팁

WM 운영 체제는 프로세스 메모리를 서로 보호합니까?

예.

잘못 쓰여진 응용 프로그램 중 하나가 첫 번째 메모리에 실수로 글을 쓰는 다른 응용 프로그램이 충돌 할 수 있습니까?

아니요 (그러나 모든 '디스크'공간을 사용하는 것과 같은 다른 일을 할 수 있습니다).

장치 드라이버 인 경우에도 다른 프로세스가 소유 한 메모리에 쓸 수있는 권한을 얻으려면 API가있어 명시 적으로 호출해야합니다.

Chrisw의 답변은 기술적으로 정확하지만 Windows Mobile에 대한 나의 경험은 데스크탑보다 전체 장치를 응용 프로그램에서 충돌하는 것이 훨씬 쉽다는 것입니다. 이것이 몇 가지 이유를 추측 할 수있었습니다.

  • 운영 SYTEM은 종종 Windows 데스크탑보다 훨씬 더 많은 OEMED입니다. 즉 제조업체 특정 저급 코드의 양은 매우 높을 수 있으며, 이는 제조업체의 특정 버그가 불량 충돌을 일으킬 수있는 수준으로 이어집니다. 많은 장치에서 매달 새로운 펌웨어 개정판을 보는 것이 일반적이며, 수정은 이러한 버그에 대한 수정입니다.

  • 자원은 부족하며, 사용 가능한 모든 자원을 소진시키는 응용 프로그램은 충돌을 일으킬 수 있습니다.

  • 보호 메커니즘과 아키텍처는 상당히 다양합니다. 현재 작업중 인 장치는 SH4 기반이며 대부분 ARM, X86 및 Odd MIPS CPU를 볼 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top