[네이버클라우드] AIaaS 개발자 과정/웹 프로그래밍

[네이버클라우드캠프] 2023.5.23 웹 프로그래밍(2) - 기계어, OS, CPU의 관계

_꼬마돌 2023. 5. 23. 19:20
반응형

기계어, OS, CPU 의 관계

처음부터 기계어를 App Store에 올려놓으면 안 되나?

기계어를 바로 App Store나 Play Store에 올리는 것은 일반적으로 권장되지 않는다.
다음과 같은 이유로 인한 문제가 발생할 수 있기 때문이다:
1. 호환성 문제
기계어는 특정 하드웨어 아키텍처에서 실행되도록 설계되어 있다. 다양한 기기와 운영 체제에서 동작하는 앱을 개발하기 위해서는 기계어로 작성된 코드를 해당 플랫폼에 맞는 컴파일러나 인터프리터를 통해 변환해야 한다. 

2. 보안 문제
기계어 코드를 직접 공개하면 앱의 소스 코드가 외부에 노출될 수 있다. 이는 악의적인 사용자가 앱의 취약점을 악용하거나 해킹할 수 있는 위험성을 가지게 된다. 일반적으로 App Store는 소스 코드의 보안을 유지하기 위해 앱을 패키징하고, 앱 바이너리만을 제출하는 것을 요구한다. 

3. 사용자 경험 문제
기계어로 작성된 앱은 일반 사용자들이 직접 이해하고 조작하기 어려울 수 있다. 일반적으로 사용자는 직관적이고 사용하기 쉬운 인터페이스를 갖춘 앱을 선호한다. 고수준 프로그래밍 언어를 사용하여 앱을 개발하면 사용자 경험을 개선하고 유지보수를 용이하게 할 수 있다. 

따라서 일반적으로 앱 스토어에는 앱을 개발하기 위한 고수준 프로그래밍 언어로 작성된 앱을 제출하고, 해당 플랫폼에 맞는 실행 파일로 패키징하여 배포하는 것이 일반적이다. 

 

기계어, OS, CPU

운영체제(Operating System), 기계어(Machine Language), 그리고 중앙처리장치(CPU)는 컴퓨터 시스템에서 서로 긴밀하게 관련된 개념들로, 컴퓨터 시스템이 동작하는 데 필수적인 역할을 수행한다. 
운영체제는 CPU를 관리하고, CPU는 기계어 명령어를 실행하여 운영체제와 응용 프로그램을 실행한다. 운영 체제는 응용 프로그램을 실행하기 위해 CPU 자원을 할당하고, 응용 프로그램이 CPU를 사용할 수 있는 시간을 제어한다. 응용 프로그램은 운영 체제가 제공하는 인터페이스를 통해 하드웨어 리소스와 상호작용하며, CPU는 기계어 명령어를 해석하고 실행하여 응용 프로그램의 동작을 수행한다. 

서로 다른 Windows, Linuw, Mac 운영체제에 동일한 CPU 아키텍쳐를 사용.

OS는 달라도 CPU가 같으니 컴파일된 기계어가 그대로 사용될 수 있지 않을까??
불가능하다. (기계어 배치 포맷(형식)이 다르다.)

다른 운영체제에서는 같은 CPU 아키텍쳐를 사용하더라도 기계어를 그대로 실행할 수 있는 것은 아니다. 이는 운영체제가 기계어를 해석하고 실행하는 방식이 다르기 때문이다. 따라서, 같은 CPU 아키텍쳐를 사용하더라도 서로 다른 운영 체제에서는 운영 체제에 맞는 형태로 프로그램을 작성하고 컴파일해야 한다. 

삼성, LG, SK 기업이 모두 한국어를 사용한다고 해서 한국어로 작성된 동일한 내용(형식)의 이력서를 제출하면 안 되는 것과 같다.

Windows용 Compiler와 Linux용 Compiler, MacOs용 Compiler의 CPU가 모두 Intel일 경우 기계어는 같지만 각각의 운영체제가 다르므로 기계어의 배치형식이 다르다.
Intel CPU인 Mac OS용 Compiler와 M2 CPU인 Mac OS 용 Compiler는 운영체제가 Mac으로 동일하지만 CPU가 다르므로 기계어가 다르다. 
위 그림과 같이 각각의 환경에 맞게 컴파일해줘야 한다.

반응형