Notice
Recent Posts
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
관리 메뉴

교대최소제곱법

[운영체제] 운영체제와 cpu 아키텍쳐의 관계 그리고 펭귄 본문

CS 기초/운영체제

[운영체제] 운영체제와 cpu 아키텍쳐의 관계 그리고 펭귄

옐라크레 2023. 12. 4. 15:28

글이 의식의 흐름대로 진행될 수 있음


문제 정의

우리가 만든 pintOS는 ec2의 우분투 x86_64 환경 위에서 작동한다

amazon/ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20230329

 

이미지를 보면 우분투인 것은 알겠는데 뒤에 amd64가 붙어 있는 것을 볼 수 있다.

그 전에는 운영체제는 소프트웨어고 cpu아키텍쳐는 하드웨어라 연관성을 못 느꼈는데

최근 pintOS를 만들면서 이 둘의 관계가 궁금해졌다

 

+

사실 친구가 리눅스 마스코트인 턱스가 귀엽다는 말을 해서 리눅스가 궁금해졌다


일단 우분투란 무엇일까?

= 우분투는 debian 기반의 linux 배포판이다

 

그럼 debian이란?

= 커뮤니티인 데비안 프로젝트에서 개발하고 있는 linux 배포판

 

아무튼 우분투는 linux라는 것을 알 수 있다

https://namu.wiki/w/Ubuntu

 

Ubuntu - 나무위키

설치 전에 Live CD 기능을 이용하여 하드웨어가 제대로 작동하는지 알아보고 설치할 것을 권장한다. 특히 일부 VGA에서는 기본 설정인 Kernel Mode Setting으로 돌아가지 않아서 CD 부팅 중에 얼른 키보

namu.wiki

 

그럼 리눅스란 무엇인가?

= 운영체제 커널의 일종인 linux 커널, 또는 linux 커널을 사용하는 운영체제를 가리키는 말

 

TMI

리눅스는 핀란드 출신 미국인 리누스 토르발스의 이름에서 따서 만들어졌다고 한다

뒤에 리누스 토르발스에 관한 내용도 나오니까 알아두자

 

아무튼 리눅스는 unix 계열 운영체제인 minix를 사용하던 리누스가 마음에 안 드는 점을 수정, 개선하면서 개발하였다고 한다

결국 리눅스도 unix의 가족인 것이다

 

??? : 리눅스도 우리 민족이었어

 

위의 내용을 잠깐 언급하자면

리눅스가 minix의 개선 배포판이었듯이 데비안, 우분투도 리눅스의 개선 배포판인 것이다

결국 모두의 근본은 unix다

유닉스는 조상신과 같은 존재

 

자 이제 마이크로 아키텍쳐를 알아보자

아키텍쳐 쪽은 용어가 복잡한데

일단 마이크로 아키텍쳐 = cpu 아키텍쳐 = 컴퓨터 시스템 이다

학술계에서는 컴퓨터 시스템이라는 용어를 사용하고 전기전자 산업계쪽에서는 마이크로 아키텍쳐라 부른다

 

그 전에 컴퓨터 아키텍쳐라는 큰 카테고리가 있으며

컴퓨터 아키텍쳐는 마이크로 아키텍쳐명령어 집합 구조(ISA)로 이루어져 있다

 

 

마이크로아키텍처 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 인텔 코어 마이크로아키텍처. 마이크로아키텍처(microarchitecture) 또는 CPU 아키텍처는 컴퓨터 과학 및 컴퓨터 공학에서 컴퓨터의 CPU 또는 이와 관련된 디지털 신

ko.wikipedia.org

 

그리고 우리가 다룰 내용은 컴퓨터 아키텍쳐에서 명령어 집합 구조이며

명령어 집합 구조는 다들 알다시피 CISC와 RISC로 나뉜다

그리고 각각의 대표주자가 x86 아키텍쳐와 arm 아키텍쳐이다

 

사실 엄밀히 따지면 이 글의 제목과 주제도 "운영체제와 cpu아키텍쳐와의 관계"보다는 "운영체제와 명령어 집합 구조의 관계"가 맞다

하지만 그냥 넘어가도록 하자 (끄덕)

 

그래서 리눅스와 ISA가 무슨 관계인가?

리눅스는 C와 어셈블리어로 이루어져 있고 이를 실행하기 위해서는 컴파일 과정을 거쳐야 한다

그 말은 x86으로 번역할지 arm으로 번역할지 선택해야 한다는 것이다

 

과거에는 arm 아키텍쳐의 cpu가 거의 사용되지 않았기 때문에 이런 일이 없었다고 한다

하지만 대 스마트폰의 시대가 열리고 스마트폰에 들어가는 cpu의 경우 arm 아키텍쳐로 만들어졌기 때문에

x86과 arm이 모두 공존하는 시대가 열렸다고 한다

 

+

대표적으로 삼성의 짱시노스(엑시노스)가 삼성의 arm 아키텍쳐 cpu이고

애플 m1도 arm 아키텍쳐 기반으로 만든 cpu라고 볼 수 있다

 

정확한 용어는 cpu가 아닌 모바일 ap이다

자세한 내용은 여기로

https://news.skhynix.co.kr/post/mobile-not-cpu

 

CPU가 아니라 모바일 AP라 불리는 이유?

스마트폰은 이제 몸의 일부분이라고 해도 과언이 아닐 정도로 우리 생활에 밀접한 전자제품입니다

news.skhynix.co.kr

 

아무튼 이렇게 arm의 시대가 열렸고 개발자들은 x86 뿐만 아니라 arm도 알아야 한다

그래서 리눅스 또한 원래는 x86기반이었지만 arm을 지원하기 시작했고 

펭귄은 귀엽다

이렇게 플랫폼 언어에 amd64, ARM이 모두 존재한다

 

 

이제는 개발자도 CPU 아키텍처를 구분해야 합니다.

Intel 천지였던 PC 분야에 ARM이 광풍을 불기 시작한지 얼마 되지 않았습니다.이에 개발자도 변화를 감지 하고 대응하기 위해 알아야 할 것들을 정리 했습니다.그동안 암묵적으로 대부분의 서버 환

velog.io


pintOS는?

이제야 본론으로 돌아와서 그럼 pintOS는 뭘까?

pintOS는 x86 아키텍처를 위한 운영체제이다

 

TMI : x86과 x86_64

그냥 x86은 32비트 x86 아키텍쳐이며

x86_64, x64는 64비트 x86 아키텍쳐이다

 

왜 용어를 두 개로 쓰나요?

x64는 마이크로 소프트에서 주로 사용되는 용어로 64비트 버전의 윈도우 운영체제를 말하며

x86_64는 좀 더 정확한 용어로 amd64 아키텍쳐나 intel 64 아키텍쳐를 가리킨다

 

x86, x64, x86_64, arm

ISA 란? 하드웨어와 소프트웨어 사이의 Interface를 정의하는 것. 하드웨어와 프로그램 사이의 매개체 역할을 하는 것이다. 세상에는 많은 ISA가 있다. 칩을 만드는 회사마다 ISA의 종류가 다르다. 회

ts2ree.tistory.com

 

그러므로 pintOS는 32비트 x86 아키텍쳐를 쓴다는 것을 알 수 있다

 

그렇기에 pintOS는 굉장히 특이한 실행 환경을 가진다

먼저 우분투를 열고 그 안에서 32비트 x86 아키텍쳐를 돌리는 에뮬레이터인 qemu(또는 Bochs)를 통해 실행할 수 있다

qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5]

 

아마 m1 노트북에서는 arm 아키텍쳐 기반이기 때문에 컴파일이 안 될 것이다 (아마?)

윈도우도 x86_64가 32비트에 대해서 역호환성을 가지기는 하지만 우분투를 통해 에뮬레이터를 돌리는 것이 안전할 것이라 예상된다

 

왜 이렇게 귀찮게 개발 환경을 설치하면서까지 pintOS를 쓰나요?

물론 베스트는 리눅스를 구현하는 것이 베스트라고 생각은 하지만

현재의 리눅스는 소스길이가 백만라인정도 되고 이를 컴파일하기 위해서는 한 시간 정도 소요된다고 한다

 

한 줄 수정하고 테스트 해보기 위해서 한 시간이 걸린다 ㅋㅋㅋㅋㅋ

pintOS 만세!