Tech News

제목애플 Rosetta Translation 환경에 대해서2020-12-03 09:44
작성자 Level 10

https://developer.apple.com/documentation/apple_silicon/about_the_rosetta_translation_environment 


- Rosetta 는 애플실리콘에서 x86_64 명령으로 된 앱들을 실행할수 있게 해주는 번역 프로세스

- 사용자에게 Rosetta는 보이지 않음. 실행파일이 인텔 명령어들만 가지고 있을때 macOS가 자동으로 Rosetta를 실행해서 번역을 시작

- 번역이 끝나면 시스템이 오리지널 대신 번역된 실행파일을 실행함. 이 번역시간은 실행이 걸리므로 앱이 실행/동작하는게 느릴 수 있음

- 시스템은 앱의 arm64 명령어 실행을 선호함. 바이너리가 arm64 와 x86_64를 둘다 가지고 있을때 사용자는 강제로 Rosetta 로 실행되도록 지정 가능. 예를 들어 특정 플러그인이 arm64를 지원 안하거나 할때

- 시스템은 같은 프로세스 안에서 arm64 와 x86_64 코드를 섞는 것을 방지함. Rosetta 는 동적로딩 하는 코드 모듈을 포함해서 전체적으로 적용됨.


번역 될수 없는 것

- JIT를 컴파일러를 포함한 앱들을 다 번역하지만 아래 것들은 번역하지 않음

ㅤ→ 커널 확장

ㅤ→ x86_64 컴퓨터플랫폼을 가상화하는 Virtual Machine

- 로제타는 모든 x86_64 명령어를 번역하지만, AVX,AVX2, AVX512 같은 최신 또는 프로세서 기능들은 지원 안함.

ㅤ→ 이런 함수들이 코드에 있다면, sysctlbyname 함수 등으로 실제 가능한지 확인 후에 호출해야함.


- 로제타로 번역된 바이너리로 실행되는지 확인하려면 sysctlbyname 함수에 sysctl.proc_translated 플래그를 줘서 확인 가능

댓글
자동등록방지
(자동등록방지 숫자를 입력해 주세요)