교대최소제곱법
[운영체제] 운영체제와 cpu 아키텍쳐의 관계 그리고 펭귄 본문
문제 정의
우리가 만든 pintOS는 ec2의 우분투 x86_64 환경 위에서 작동한다
amazon/ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20230329
이미지를 보면 우분투인 것은 알겠는데 뒤에 amd64가 붙어 있는 것을 볼 수 있다.
그 전에는 운영체제는 소프트웨어고 cpu아키텍쳐는 하드웨어라 연관성을 못 느꼈는데
최근 pintOS를 만들면서 이 둘의 관계가 궁금해졌다
+
사실 친구가 리눅스 마스코트인 턱스가 귀엽다는 말을 해서 리눅스가 궁금해졌다
일단 우분투란 무엇일까?
= 우분투는 debian 기반의 linux 배포판이다
그럼 debian이란?
= 커뮤니티인 데비안 프로젝트에서 개발하고 있는 linux 배포판
아무튼 우분투는 linux라는 것을 알 수 있다
그럼 리눅스란 무엇인가?
= 운영체제 커널의 일종인 linux 커널, 또는 linux 커널을 사용하는 운영체제를 가리키는 말
TMI
리눅스는 핀란드 출신 미국인 리누스 토르발스의 이름에서 따서 만들어졌다고 한다
뒤에 리누스 토르발스에 관한 내용도 나오니까 알아두자
아무튼 리눅스는 unix 계열 운영체제인 minix를 사용하던 리누스가 마음에 안 드는 점을 수정, 개선하면서 개발하였다고 한다
결국 리눅스도 unix의 가족인 것이다
??? : 리눅스도 우리 민족이었어
위의 내용을 잠깐 언급하자면
리눅스가 minix의 개선 배포판이었듯이 데비안, 우분투도 리눅스의 개선 배포판인 것이다
결국 모두의 근본은 unix다
유닉스는 조상신과 같은 존재
자 이제 마이크로 아키텍쳐를 알아보자
아키텍쳐 쪽은 용어가 복잡한데
일단 마이크로 아키텍쳐 = cpu 아키텍쳐 = 컴퓨터 시스템 이다
학술계에서는 컴퓨터 시스템이라는 용어를 사용하고 전기전자 산업계쪽에서는 마이크로 아키텍쳐라 부른다
그 전에 컴퓨터 아키텍쳐라는 큰 카테고리가 있으며
컴퓨터 아키텍쳐는 마이크로 아키텍쳐와 명령어 집합 구조(ISA)로 이루어져 있다
그리고 우리가 다룰 내용은 컴퓨터 아키텍쳐에서 명령어 집합 구조이며
명령어 집합 구조는 다들 알다시피 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
아무튼 이렇게 arm의 시대가 열렸고 개발자들은 x86 뿐만 아니라 arm도 알아야 한다
그래서 리눅스 또한 원래는 x86기반이었지만 arm을 지원하기 시작했고
이렇게 플랫폼 언어에 amd64, ARM이 모두 존재한다
pintOS는?
이제야 본론으로 돌아와서 그럼 pintOS는 뭘까?
pintOS는 x86 아키텍처를 위한 운영체제이다
TMI : x86과 x86_64
그냥 x86은 32비트 x86 아키텍쳐이며
x86_64, x64는 64비트 x86 아키텍쳐이다
왜 용어를 두 개로 쓰나요?
x64는 마이크로 소프트에서 주로 사용되는 용어로 64비트 버전의 윈도우 운영체제를 말하며
x86_64는 좀 더 정확한 용어로 amd64 아키텍쳐나 intel 64 아키텍쳐를 가리킨다
그러므로 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 만세!
'CS 기초 > 운영체제' 카테고리의 다른 글
[운영체제] 재밌는 이야기 (1) | 2023.12.04 |
---|---|
[메모리 할당] 디스크 조각모음과 단편화 (1) | 2023.11.15 |
[운영체제 part 4] 파일과 디렉토리 (0) | 2023.09.08 |
[운영체제 part 3] 메모리 할당 (0) | 2023.09.08 |
[운영체제 part 2] CPU 스케쥴링 (0) | 2023.09.08 |