MacOS: 두 판 사이의 차이

편집 요약 없음
(사용자 4명의 중간 판 16개는 보이지 않습니다)
1번째 줄: 1번째 줄:
{{소문자}}
[[File:스크린샷 2020-07-27 오후 1.20.17.jpg|섬네일|macOS Big Sur의 바탕 화면]]
'''macOS'''는 [[애플(기업)| 애플]] 사의 [[운영체제]]이다.


[[파일:sierra.jpg|섬네일|현지 시각으로 {{날짜/출력|2016-9-20}} 출시된, macOS Sierra]]
{{소문자}}'''macOS'''는 [[애플 (기업)| 애플]]에서 개발한 매킨토시 컴퓨터 전용 [[운영 체제]]이다. 2016년 6월 13일 macOS 시에라 공개와 함께 제품명을 OS X에서 macOS로 변경하였다.
[[파일:sierra_screen.png|섬네일|macOS Sierra의 바탕화면 모습]]


==개요==
==개요==
macOS는 [[미국]]의 [[컴퓨터]] [[기업]]인 [[애플(기업)| 애플]]이 만든  [[운영체제]]를 말한다. 2018년 12월 현재 macOS Mojave가 최신 버전이며, macOS는 모바일 기기 운영체제에 [[iOS]]라는 이름으로 이식<ref>예전 이름은 Mac OS X for iPhone 이었으나, 나중에 iOS로 이름을 갈아타게 된다.</ref>되어 있다. macOS는 당연하게 [[매킨토시]]에서 동작한다.
macOS는 모바일 기기 운영 체제에 [[iOS]]라는 이름으로 이식<ref>예전 이름은 Mac OS X for iPhone이었으나, 나중에 iOS로 이름을 갈아타게 된다.</ref>되어 있다. macOS는 당연하게 [[매킨토시]]에서 동작한다.


다른 메인보드에서 동작할 수 있도록, 많은 사람들이 [[해킨토시]]라는 프로젝트를 진행하기도 한다.{{ㅊ|대부분의 사람들이 하다가 망한다}} 자세한 것은 해당 항목 참조.
다른 [[메인보드]]에서 동작할 수 있도록, 많은 사람들이 [[해킨토시]]라는 프로젝트를 진행하기도 한다.{{ㅊ|대부분의 사람들이 하다가 망한다}}


macOS의 예전 이름인 OS X, Mac OS X에서 'X'는 알파벳 X가 아니라 로마문자로 '10'을 뜻하는 숫자이다. 따라서 읽을 때는 '오에스 텐'이라고 읽어야 한다.
macOS의 예전 이름인 OS X, Mac OS X에서 'X'는 알파벳 X가 아니라 로마자로 '10'을 뜻하는 숫자이다. 따라서 읽을 때는 '오에스 텐'이라고 읽어야 한다.


이전 macOS는 버전 별 이름을 고양이과 동물로 정하는 것이 전통이었다. OS X 10.8 Mountian Lion을 마지막으로, 더 이상 고양이과 동물의 이름을 사용하지 않고 [[캘리포니아 주]]의 지명 이름을 사용하고 있다. 그래서 이후 나온 OS X 10.9, 10.10은 각각 Mavericks, Yosemite 라는 이름이 선택되었다. 그후 OS X 10.11 El Capitan을 거쳐서 macOS 10.12 Sierra와 10.13 High Sierra 가 나왔고, 10.14 Mojave가 나왔다.
이전 macOS는 버전 별 이름을 고양이과 동물로 정하는 것이 전통이었다. OS X 10.8 Mountian Lion을 마지막으로, 더 이상 고양이과 동물의 이름을 사용하지 않고 [[캘리포니아주]]의 지명 이름을 사용하고 있다. 사용법은 [[시리즈:쉬운 맥|시리즈]]를 참고


==역사==
==역사==
[[애플(기업)| 애플]]의 [[CEO]]였던 [[스티브 잡스]]는, [[제록스]] 사의 연구소에서 세계 최초의 GUI 운영체제를 보고 향후 모든 컴퓨터에 [[GUI]]를 채택하기로 결정한다. [[1984]]오리지널 128KB [[매킨토시]]용으로 개발된 운영체제를 '''[[Mac OS]]'''라고 부른다.  
애플의 [[CEO]]였던 [[스티브 잡스]]는, [[제록스]]연구소에서 세계 최초의 GUI 운영 체제를 보고 향후 모든 컴퓨터에 [[그래픽 유저 인터페이스]](GUI)를 채택하기로 결정한다. [[1984년]] 오리지널 128KB [[매킨토시]]용으로 개발된 운영 체제를 '''[[Mac OS]]'''라고 부른다.  


한 때 GUI 운영체제의 대명사였던 Mac OS는, [[1990년]]대 중반에 들어서는  [[Windows 95]], [[OS/2]] 등 강력한 경쟁 제품이 등장하기 시작했고, 시대적으로 새로운 강력한 운영체제가 필요해졌다. 결국 애플은 Mac OS의 [[API]]와 [[UI]]를 유지한 채로 새로운 운영체제를 계획하는 <[[코플랜드 프로젝트]]>를 [[1994년]]에 시작했다. 물론 이 프로젝트는 애플의 엄청난 노력(홍보, 관련 서적 판매 등)에도 불구하고 [[1996년]]까지 이렇다 할 성과를 내지 못했다.
한 때 GUI 운영 체제의 대명사였던 Mac OS는, 1990년대 중반에 들어서는  [[Windows 95]], [[OS/2]] 등 강력한 경쟁 제품이 등장하기 시작했고, 시대적으로 새로운 강력한 운영 체제가 필요해졌다. 결국 애플은 Mac OS의 [[API]]와 [[UI]]를 유지한 채로 새로운 운영 체제를 계획하는 <[[코플랜드 프로젝트]]>를 [[1994년]]에 시작했다. 물론 이 프로젝트는 애플의 엄청난 노력(홍보, 관련 서적 판매 등)에도 불구하고 [[1996년]]까지 이렇다 할 성과를 내지 못했다.


애플은 곧 Mac OS를 버리고, 새로운 운영체제를 찾아나섰다. 더 이상 자신들이 만든 운영체제로는 경쟁이 불가능함을 알았기 때문에, 외부 업체에서 운영체제를 구입, 매킨토시와의 호환성을 유지한 채 자사의 독자적인 새 운영체제로 개조하려는 계획을 펼쳤다. 초기에는 [[BeOS]]와 약간의 협상이 있었지만 결국 [[1985년]] 스티브 잡스가 애플을 떠나고 세웠던 [[NeXT]]의 운영체제 [[NeXTSTEP]]을 이용하기로 한다.
애플은 곧 Mac OS를 버리고, 새로운 운영 체제를 찾아나섰다. 더 이상 자신들이 만든 운영 체제로는 경쟁이 불가능함을 알았기 때문에, 외부 업체에서 운영 체제를 구입, 매킨토시와의 호환성을 유지한 채 자사의 독자적인 새 운영 체제로 개조하려는 계획을 펼쳤다. 초기에는 [[BeOS]]와 약간의 협상이 있었지만 결국 [[1985년]] 스티브 잡스가 애플을 떠나고 세웠던 [[NeXT]]의 운영 체제 [[NeXTSTEP]]을 이용하기로 한다.


NeXTSTEP은 Mach 커널에 기반한 UNIX 의 일종이었다. Mach 커널은 [[카네기 멜론 대학]]에서 실행했던 프로젝트로, [[UNIX]]와 [[BSD]]커널의 복잡성 증가에 대응하기 위해 진행된 프로젝트이다. '''세계 최초의 마이크로 커널'''(!)이며, 그만큼 커널 내부에는 최소한의 명령들 만이 집합해 있었다. 그 이외의 파일 관리, 네트워크, 보안 등은 몽땅 유저 공간의 "서버"에서 구현되어야 했다. 그 당시에는 상당히 생소했던 개념인데, 이러한 방식은 기존의 모놀리식 커널의 문제점을 보완하는 효과가 있다.(자세한 사항은 해당 항목 참조.)
NeXTSTEP은 Mach 커널에 기반한 UNIX 의 일종이었다. Mach 커널은 [[카네기 멜론 대학]]에서 실행했던 프로젝트로, [[UNIX]]와 [[BSD]] 커널의 복잡성 증가에 대응하기 위해 진행된 프로젝트이다. '''세계 최초의 마이크로 커널'''(!)이며, 그만큼 커널 내부에는 최소한의 명령들 만이 집합해 있었다. 그 이외의 파일 관리, 네트워크, 보안 등은 몽땅 유저 공간의 "서버"에서 구현되어야 했다. 그 당시에는 상당히 생소했던 개념인데, 이러한 방식은 기존의 모놀리식 커널의 문제점을 보완하는 효과가 있다.


NeXTSTEP은 상술한 Mach 커널의 장점만을 이용하기 위해 이 커널을 개조한 것이다. 4.3 BSD커널에서 코어 부분을 들어내고 그 부분을 Mach 커널 위에 때려박은 것.{{ㅊ|무슨 소리인지 몰라도 된다}} 이 방식은 아주 대단해서, 최초의 선점형 멀티태스킹, 메모리 보호, 유닉스 호환성까지 가지는 [[데스크탑]] 운영체제인 동시에 GUI 운영체제가 되도록 NEXTSTEP을 이끌었다. 처음에는 68K 기반 컴퓨터에서만 동작했지만 OpenStep이라는 이름으로 외부 회사들이 NeXT의 라이선스를 사용하기 시작해 SPARC, PA-RISC, [[i386]] 등 다양한 프로세서에서의 이식력까지 가지게 된다. 심지어 애플이 인수하던 해인 [[1997년]]에는 PowerPC도 지원하게 되었다.{{ㅊ|근데 i386을 제외한 다른 프로세서에 대한 지원을 중단했다...}} i386에 대한 지원만을 남겨둔 것은 후일 [[매킨토시]]가 PowerPC에서 i386으로 넘어가는데 중요한 작용을 한다.
NeXTSTEP은 상술한 Mach 커널의 장점만을 이용하기 위해 이 커널을 개조한 것이다. 4.3 BSD 커널에서 코어 부분을 들어내고 그 부분을 Mach 커널 위에 때려박은 것.{{ㅊ|무슨 소리인지 몰라도 된다}} 이 방식은 아주 대단해서, 최초의 선점형 멀티태스킹, 메모리 보호, 유닉스 호환성까지 가지는 [[데스크탑]] 운영 체제인 동시에 GUI 운영 체제가 되도록 NEXTSTEP을 이끌었다. 처음에는 68K 기반 컴퓨터에서만 동작했지만 OpenStep이라는 이름으로 외부 회사들이 NeXT의 라이선스를 사용하기 시작해 SPARC, PA-RISC, [[i386]] 등 다양한 프로세서에서의 이식력까지 가지게 된다. 심지어 애플이 인수하던 해인 [[1997년]]에는 PowerPC도 지원하게 되었다.{{ㅊ|근데 i386을 제외한 다른 프로세서에 대한 지원을 중단했다...}} i386에 대한 지원만을 남겨둔 것은 후일 매킨토시가 PowerPC에서 i386으로 넘어가는데 중요한 작용을 한다.


이후 OpenStep에 다양한 툴킷, API, 가상 머신 등을 추가해 "Rhapsody"를 개발하고, 계속된 개발 끝에 오늘에 이르게 된다.
이후 OpenStep에 다양한 툴킷, API, 가상 머신 등을 추가해 "Rhapsody"를 개발하고, 계속된 개발 끝에 오늘에 이르게 된다.
68번째 줄: 66번째 줄:
| macOS10.13 || 하이 시에라 || x86-64 || {{날짜/출력|2017-6-5}} || {{날짜/출력|2017-9-25}} || 10.13.6 ({{날짜/출력|2018-7-9}})
| macOS10.13 || 하이 시에라 || x86-64 || {{날짜/출력|2017-6-5}} || {{날짜/출력|2017-9-25}} || 10.13.6 ({{날짜/출력|2018-7-9}})
|-
|-
| macOS 10.14 || 모하비 || x86-64 || {{날짜/출력|2018-6-4}} || {{날짜/출력|2018-9-24}} || 10.14.4 ({{날짜/출력|2019-3-26}})
| macOS 10.14 || 모하비 || x86-64 || {{날짜/출력|2018-6-4}} || {{날짜/출력|2018-9-24}} || 10.14.6 ({{날짜/출력|2019-7-22}})
|-
|-
| macOS 10.15 || 카탈리나 || x86-64 || {{날짜/출력|2018-6-4}} || - || -
| macOS 10.15 || 카탈리나 || x86-64 || {{날짜/출력|2019-6-4}} || {{날짜/출력|2019-10-7}} || -
|}
|}


10.8까진 전통적으로 쓰인 고양잇과 이름을 쓰였지만, 10.9부터 {{--|적당한 고양잇과 동물의 이름을 찾을 수 없어서}} [[캘리포니아 주]]에 있는 지명을 따온 이름을 쓰고 있다.<ref>사실 크레이그 패더리기가 10.9를 발표할때 농담으로 "고양잇과 동물의 이름을 찾느라 새 OS의 발표가 늦어지는 것을 막기 위해" 새 OS에 메버릭스라는 이름을 붙였다고 하긴 했다. </ref> 10.12 시에라부터 이름을 OS X에서 macOS로 바꿨다.
10.8까진 전통적으로 쓰인 고양잇과 이름을 쓰였지만, 10.9부터 {{--|적당한 고양잇과 동물의 이름을 찾을 수 없어서}} [[캘리포니아주]]에 있는 지명을 따온 이름을 쓰고 있다.<ref>사실 크레이그 패더리기가 10.9를 발표할 때 농담으로 "고양잇과 동물의 이름을 찾느라 새 OS의 발표가 늦어지는 것을 막기 위해" 새 OS에 메버릭스라는 이름을 붙였다고 하긴 했다. </ref> 10.12 시에라부터 이름을 OS X에서 macOS로 바꿨으며, 2019년 카탈레나부터 32비트 앱의 지원을 완벽하게 끊어버렸다. 그래서 오래된 앱같은 경우엔 아예 동작하지 않는다.<ref>실행시 bad CPU type in executable라는 메시지를 띄우며, GUI로도 메시지를 띄운다.</ref> [[스팀]]의 경우, 32비트와 64비트의 구별을 자동화 하지 않고, [https://partner.steamgames.com/doc/store/application/platforms 개발자가 일일히 체크하게 만들었다]


== 갤러리 ==
== 갤러리 ==
94번째 줄: 92번째 줄:
=== OS 아키텍처 ===
=== OS 아키텍처 ===
[[파일:Osx architecture-layers 2x.png|thumb|center|애플에서 내놓은 macOS 레이어]]
[[파일:Osx architecture-layers 2x.png|thumb|center|애플에서 내놓은 macOS 레이어]]
맥 OS의 아키텍처를 간단하게 본다면 다음과 같다. 당연하게 커널과 디바이스 드라이버(+kext 같은 커널 확장 모듈)이 맨 아래 있고, 그 위에 코어 OS와 코어 서비스, 미디어, 그다음에 응용 프로그램이 올라가 있다. [[iOS]]는 코코아 자리에 스마트폰에 맞게 개조한 코코아 터치가 들어가 있다.<br />
맥 OS의 아키텍처를 간단하게 본다면 다음과 같다. 당연하게 커널과 디바이스 드라이버(+kext 같은 커널 확장 모듈)이 맨 아래 있고, 그 위에 코어 OS와 코어 서비스, 미디어, 그다음에 응용 프로그램이 올라가 있다. [[iOS]]와 [[iPadOS]]는 코코아 자리에 스마트폰에 맞게 개조한 코코아 터치가 들어가 있다.<br />


[[파일:MacOS Architecture v2.svg|thumb|center|700px|2017년 기준 macOS 레이어 내용 총 집합편]]
[[파일:MacOS Architecture v2.svg|thumb|center|700px|2017년 기준 macOS 레이어 내용 총 집합편]]
104번째 줄: 102번째 줄:


=== 애플리케이션 번들 ===
=== 애플리케이션 번들 ===
NeXTStep에서 사용하던 애플리케이션 번들 개념을 macOS에서도 그대로 사용하고 있다. 간단하게 말해서, 폴더를 일종의 파일로 처리해 버리는 방식. 그래서 프로그램이나 프레임워크 설치나 삭제를 엄청나게 쉽게 할수 있다. 이런 구조로 인해서 윈도나 리눅스에 비해 프로그램의 리소스 변경이 매우 쉽다는 특징이 있으며, 프로그램의 한국어 화<ref>macOS 프로그램의 Resource에 <언어별>.lproj가 들어가 있다. 이 언어별 lproj 폴더안의 내용물을 수정하면 프로그램에서 나오는 값도 그에 따라 바뀐다. 덤으로, 개발자가 모르면 [[Xcode]]를 깔아서 하드코딩을 해야 하고(xib), 개발자가 다국어에 관심이 있으면 스트링 파일을 넣어서 번역하는걸 쉽게 하기도 한다.</ref>도 엄청나게 쉬워지는 특성을 갖고 있다.
NeXTStep에서 사용하던 애플리케이션 번들 개념을 macOS에서도 그대로 사용하고 있다. 애플리케이션 번들 개념은 간단하게 말해서, 폴더를 일종의 파일로 처리해 버리는 방식으로, 프로그램이나 프레임워크 설치나 삭제를 엄청나게 쉽게 할 수 있다. 이런 구조로 인해서 윈도나 리눅스에 비해 프로그램의 리소스 변경이 매우 쉽다는 특징이 있으며, 프로그램의 한국어 화<ref>macOS 프로그램의 Resource에 <언어별>.lproj가 들어가 있다. 이 언어별 lproj 폴더안의 내용물을 수정하면 프로그램에서 나오는 값도 그에 따라 바뀐다. 덤으로, 개발자가 안해준다면 [[Xcode]]를 깔아서 하드코딩을 해야 하고(xib), 개발자가 다국어에 관심이 있으면 스트링 파일을 넣어서 번역하는걸 쉽게 하기도 한다.</ref>도 엄청나게 쉬워지는 특성을 갖고 있다. 제일 좋은 특성은 앱을 그냥 쓰레기 통에 넣어서 삭제하는 것<ref>여러 리소스가 남지만, 시스템에 별로 영향도 안준다. 물론, 이를 제거하는 프로그램도 존재한다.</ref>


=== 메모리 관리 ===
=== 메모리 관리 ===
111번째 줄: 109번째 줄:
* 와이어드 메모리: 디스크에 캐시할 수 없는 메모리로, 현재 실행중인 애플리케이션의 실행코드가 올라와 있는 상태이다.
* 와이어드 메모리: 디스크에 캐시할 수 없는 메모리로, 현재 실행중인 애플리케이션의 실행코드가 올라와 있는 상태이다.
* 캐시 파일: RAM의 App에서 사용할 수 있는 것으로 표시된 공간으로, 최근에 사용된 파일이 포함되어 있는 상태. 즉 언제든지 비울수 있는 상태
* 캐시 파일: RAM의 App에서 사용할 수 있는 것으로 표시된 공간으로, 최근에 사용된 파일이 포함되어 있는 상태. 즉 언제든지 비울수 있는 상태
* 압축된 메모리: 현재 앱에서 쓰는 메모리 중에서 압축해두고 있는 용량. 압축을 할때 Wkdm이라는 알고리즘을 사용한다. 자기가 첫번째라고 광고하지만 사실 리눅스의 zRam이 먼저 나왔다.
* 압축된 메모리: 현재 앱에서 쓰는 메모리 중에서 압축해두고 있는 용량. 압축을 할 때 Wkdm이라는 알고리즘을 사용한다. 자기가 첫 번째라고 광고하지만 사실 리눅스의 zRam이 먼저 나왔다.
* 비활성: 최근에 종료한 앱이 사용했던 공간.
* 비활성: 최근에 종료한 앱이 사용했던 공간.
* 여유 공간: 남아있는 공간.
* 여유 공간: 남아있는 공간.


일반적인 상황에서도 macOS의 메모리는 보통 1기가를 넘지 않는다. 그리고 메모리 정리 프로그램은 App 메모리나 와이어드 메모리를 늘려서 OS의 메모리 정리 기능을 실행시키는 역할밖에 되지 않는다. 즉, 그냥 가만히 놔둬도 알아서 돌아간다. Mac의 메모리에서 중요한건 비활성+여유공간이 아니라 메모리 부하가 더 중요하다.
일반적인 상황에서도 macOS의 메모리는 보통 1기가를 넘지 않는다. 그리고 메모리 정리 프로그램은 App 메모리나 와이어드 메모리를 늘려서 OS의 메모리 정리 기능을 실행시키는 역할밖에 되지 않는다. 즉, 그냥 가만히 놔둬도 알아서 돌아간다. Mac의 메모리에서 중요한 건 비활성+여유공간이 아니라 메모리 부하가 더 중요하다.


=== OS 부트 과정 ===
=== OS 부트 과정 ===
[[파일:MacOS booting.jpg|thumb|500px|center]]
[[파일:MacOS booting.jpg|thumb|500px|center]]
# 전원 버튼이 눌러지고 Mac에 전원이 공급된다.
# 전원 버튼이 눌러지고 Mac에 전원이 공급된다.
# POST(Power on Self Test)가 실행된다. 이 와중 EFI 가 실행된다. 이와중 몇몇 시스템 확인이 들어가게 되고, 펌웨어 비번을 묻는다.
# POST(Power on Self Test)가 실행된다. 이 와중 EFI가 실행된다. 이 와중 몇몇 시스템 확인이 들어가게 되고, 펌웨어 비번을 묻는다.
# EFI는 NVRAM 값을 기반으로 하여 SMC, NVMe/SATA/USB, 썬더볼트를 초기화 한다. 그후 그래픽카드를 초기화 한다.
# EFI는 NVRAM 값을 기반으로 하여 SMC, NVMe/SATA/USB, [[썬더볼트 (인터페이스)|썬더볼트]]를 초기화한다. 그 후 그래픽 카드를 초기화 한다.
# 디스크 드라이브를 인식하는 단계에서 암호화된 디스크인지 확인이 들어간다.
# 디스크 드라이브를 인식하는 단계에서 암호화된 디스크인지 확인이 들어간다.
# 그후 부팅하고자 하는 디스크를 선택한다. - {{키눌림|Opt}}키가 여기서 먹힌다.
# 그후 부팅하고자 하는 디스크를 선택한다. - {{키눌림|Opt}}키가 여기서 먹힌다.
# macOS 로 부팅할때는 Boot.efi를 불려온다.
# macOS 로 부팅할 때는 Boot.efi를 불려온다.
# 시큐어부트에서 Boot.efi 항목을 검사한다(보안 정도에 따라)
# 시큐어부트에서 Boot.efi 항목을 검사한다(보안 정도에 따라).
# Boot.efi를 불러온다. 여기서 다른 운영체제, 예를들어 [[부트캠프 (소프트웨어)|부트캠프]]를 불러오거나, IODeviceTree를 생성하고, 커널의 여러 파라메터를 설정한다. 여기서 {{키눌림|cmd}} + {{키눌림|R}}, {{키눌림|S}}, {{키눌림|V}}, {{키눌림|Shift}}등이 먹힌다.
# Boot.efi를 불러온다. 여기서 다른 운영 체제, 예를 들어 [[부트캠프 (소프트웨어)|부트캠프]]를 불러오거나, IODeviceTree를 생성하고, 커널의 여러 파라메터를 설정한다. 여기서 {{키눌림|cmd}} + {{키눌림|R}}, {{키눌림|S}}, {{키눌림|V}}, {{키눌림|Shift}}등이 먹힌다.
# 커널캐시를 불러오고 실행한다. 여기서 사용자가 허가한 커널 확장을 불러오고 실행한다.
# 커널 캐시를 불러오고 실행한다. 여기서 사용자가 허가한 커널 확장을 불러오고 실행한다.


{{주석}}
{{주석}}
[[분류:운영 체제]]
[[분류:MacOS| ]]
[[분류:MacOS| ]]
[[분류:BSD]]
[[분류:2001년 소프트웨어]]
[[분류:애플]]

2020년 7월 27일 (월) 13:29 판

macOS Big Sur의 바탕 화면

틀:소문자macOS 애플에서 개발한 매킨토시 컴퓨터 전용 운영 체제이다. 2016년 6월 13일 macOS 시에라 공개와 함께 제품명을 OS X에서 macOS로 변경하였다.

개요

macOS는 모바일 기기 운영 체제에 iOS라는 이름으로 이식[1]되어 있다. macOS는 당연하게 매킨토시에서 동작한다.

다른 메인보드에서 동작할 수 있도록, 많은 사람들이 해킨토시라는 프로젝트를 진행하기도 한다.대부분의 사람들이 하다가 망한다

macOS의 예전 이름인 OS X, Mac OS X에서 'X'는 알파벳 X가 아니라 로마자로 '10'을 뜻하는 숫자이다. 따라서 읽을 때는 '오에스 텐'이라고 읽어야 한다.

이전 macOS는 버전 별 이름을 고양이과 동물로 정하는 것이 전통이었다. OS X 10.8 Mountian Lion을 마지막으로, 더 이상 고양이과 동물의 이름을 사용하지 않고 캘리포니아주의 지명 이름을 사용하고 있다. 사용법은 시리즈를 참고

역사

애플의 CEO였던 스티브 잡스는, 제록스의 연구소에서 세계 최초의 GUI 운영 체제를 보고 향후 모든 컴퓨터에 그래픽 유저 인터페이스(GUI)를 채택하기로 결정한다. 1984년 오리지널 128KB 매킨토시용으로 개발된 운영 체제를 Mac OS라고 부른다.

한 때 GUI 운영 체제의 대명사였던 Mac OS는, 1990년대 중반에 들어서는 Windows 95, OS/2 등 강력한 경쟁 제품이 등장하기 시작했고, 시대적으로 새로운 강력한 운영 체제가 필요해졌다. 결국 애플은 Mac OS의 APIUI를 유지한 채로 새로운 운영 체제를 계획하는 <코플랜드 프로젝트>를 1994년에 시작했다. 물론 이 프로젝트는 애플의 엄청난 노력(홍보, 관련 서적 판매 등)에도 불구하고 1996년까지 이렇다 할 성과를 내지 못했다.

애플은 곧 Mac OS를 버리고, 새로운 운영 체제를 찾아나섰다. 더 이상 자신들이 만든 운영 체제로는 경쟁이 불가능함을 알았기 때문에, 외부 업체에서 운영 체제를 구입, 매킨토시와의 호환성을 유지한 채 자사의 독자적인 새 운영 체제로 개조하려는 계획을 펼쳤다. 초기에는 BeOS와 약간의 협상이 있었지만 결국 1985년 스티브 잡스가 애플을 떠나고 세웠던 NeXT의 운영 체제 NeXTSTEP을 이용하기로 한다.

NeXTSTEP은 Mach 커널에 기반한 UNIX 의 일종이었다. Mach 커널은 카네기 멜론 대학에서 실행했던 프로젝트로, UNIXBSD 커널의 복잡성 증가에 대응하기 위해 진행된 프로젝트이다. 세계 최초의 마이크로 커널(!)이며, 그만큼 커널 내부에는 최소한의 명령들 만이 집합해 있었다. 그 이외의 파일 관리, 네트워크, 보안 등은 몽땅 유저 공간의 "서버"에서 구현되어야 했다. 그 당시에는 상당히 생소했던 개념인데, 이러한 방식은 기존의 모놀리식 커널의 문제점을 보완하는 효과가 있다.

NeXTSTEP은 상술한 Mach 커널의 장점만을 이용하기 위해 이 커널을 개조한 것이다. 4.3 BSD 커널에서 코어 부분을 들어내고 그 부분을 Mach 커널 위에 때려박은 것.무슨 소리인지 몰라도 된다 이 방식은 아주 대단해서, 최초의 선점형 멀티태스킹, 메모리 보호, 유닉스 호환성까지 가지는 데스크탑 운영 체제인 동시에 GUI 운영 체제가 되도록 NEXTSTEP을 이끌었다. 처음에는 68K 기반 컴퓨터에서만 동작했지만 OpenStep이라는 이름으로 외부 회사들이 NeXT의 라이선스를 사용하기 시작해 SPARC, PA-RISC, i386 등 다양한 프로세서에서의 이식력까지 가지게 된다. 심지어 애플이 인수하던 해인 1997년에는 PowerPC도 지원하게 되었다.근데 i386을 제외한 다른 프로세서에 대한 지원을 중단했다... i386에 대한 지원만을 남겨둔 것은 후일 매킨토시가 PowerPC에서 i386으로 넘어가는데 중요한 작용을 한다.

이후 OpenStep에 다양한 툴킷, API, 가상 머신 등을 추가해 "Rhapsody"를 개발하고, 계속된 개발 끝에 오늘에 이르게 된다.

버전

버전 코드 네임 지원 아키텍처 발표일 출시일 최근 버전
렙소디 개발자 릴리스 그레일1Z4 / 타이탄 1U 32비트 PowerPC 틀:날짜/출력 DR2 (틀:날짜/출력)
Mac OS X 서버 1.0 헤라 32비트 PowerPC 틀:날짜/출력 1.2 v3 (틀:날짜/출력)
Mac OS X 개발자 프리뷰 32비트 PowerPC 틀:날짜/출력 틀:날짜/출력 DP4 (틀:날짜/출력)
퍼블릭 베타 코디악 32비트 PowerPC 틀:날짜/출력
Mac OS X 10.0 치타 32비트 PowerPC 틀:날짜/출력 10.0.4 (틀:날짜/출력)
Mac OS X 10.1 퓨마 32비트 PowerPC 틀:날짜/출력 틀:날짜/출력 10.1.5 (틀:날짜/출력)
Mac OS X 10.2 재규어 32·64비트 PowerPC 틀:날짜/출력 틀:날짜/출력 10.2.8 (틀:날짜/출력)
Mac OS X 10.3 팬서 32·64비트 PowerPC 틀:날짜/출력 틀:날짜/출력 10.3.9 (틀:날짜/출력)
Mac OS X 10.4 타이거 32·64비트 PowerPC 및 x86 틀:날짜/출력 틀:날짜/출력 10.4.11 (틀:날짜/출력)
Mac OS X 10.5 레퍼드 32·64비트 PowerPC 및 x86 틀:날짜/출력 틀:날짜/출력 10.5.8 (틀:날짜/출력)
Mac OS X 10.6 스노 레퍼드 32·64비트 x86[2] 틀:날짜/출력 틀:날짜/출력 10.6.8 (틀:날짜/출력)
Mac OS X 10.7 라이언 x86-64 틀:날짜/출력 틀:날짜/출력 10.7.5 (틀:날짜/출력)
OS X 10.8 마운틴 라이언 x86-64 틀:날짜/출력 틀:날짜/출력 10.8.5 (틀:날짜/출력)
OS X 10.9 매버릭스 x86-64 틀:날짜/출력 틀:날짜/출력 10.9.5 (틀:날짜/출력)
OS X 10.10 요세미티 x86-64 틀:날짜/출력 틀:날짜/출력 10.10.3 (틀:날짜/출력)
OS X 10.11 엘 캐피탄[3] x86-64 틀:날짜/출력 틀:날짜/출력 10.11.6 (틀:날짜/출력)
macOS10.12 시에라 x86-64 틀:날짜/출력 틀:날짜/출력 10.12.6 (틀:날짜/출력)
macOS10.13 하이 시에라 x86-64 틀:날짜/출력 틀:날짜/출력 10.13.6 (틀:날짜/출력)
macOS 10.14 모하비 x86-64 틀:날짜/출력 틀:날짜/출력 10.14.6 (틀:날짜/출력)
macOS 10.15 카탈리나 x86-64 틀:날짜/출력 틀:날짜/출력 -

10.8까진 전통적으로 쓰인 고양잇과 이름을 쓰였지만, 10.9부터 적당한 고양잇과 동물의 이름을 찾을 수 없어서 캘리포니아주에 있는 지명을 따온 이름을 쓰고 있다.[4] 10.12 시에라부터 이름을 OS X에서 macOS로 바꿨으며, 2019년 카탈레나부터 32비트 앱의 지원을 완벽하게 끊어버렸다. 그래서 오래된 앱같은 경우엔 아예 동작하지 않는다.[5] 스팀의 경우, 32비트와 64비트의 구별을 자동화 하지 않고, 개발자가 일일히 체크하게 만들었다

갤러리

바탕화면

여러 차이점들

OS 아키텍처

애플에서 내놓은 macOS 레이어

맥 OS의 아키텍처를 간단하게 본다면 다음과 같다. 당연하게 커널과 디바이스 드라이버(+kext 같은 커널 확장 모듈)이 맨 아래 있고, 그 위에 코어 OS와 코어 서비스, 미디어, 그다음에 응용 프로그램이 올라가 있다. iOSiPadOS는 코코아 자리에 스마트폰에 맞게 개조한 코코아 터치가 들어가 있다.

파일:MacOS Architecture v2.svg
2017년 기준 macOS 레이어 내용 총 집합편

macOS 의 아키텍처 구조를 자세히 보자면 다음과 같다. macOS 의 커널은 XNU라는 이름으로 불리는데, XNU는 Mach 커널에 BSD 커널을 합친 하이브리드 커널이다. 그리고 XNU를 사용하는 코어 OS를 가리켜 다윈이라고 부른다. 그래서 macOS에서 터미널을 켜고 uname -a를 날리면 다음과 같은 문구가 뜬다.

Darwin 현재 컴퓨터의 네트워크 이름 18.X.0 Darwin Kernel Version 18.X.0: Mon Nov 12 20:24:46 PST 2018(빌드 완료일); root:xnu-4903.231.4~2(XNU의 버전) /RELEASE_X86_64 x86_64(아키텍처)

macOS는 오픈소스와 비공개 소스로 나뉘어져 있는데, 다윈까지가 오픈소스[6]이고 나머지는 애플 독점 비공개 소스이다.

애플리케이션 번들

NeXTStep에서 사용하던 애플리케이션 번들 개념을 macOS에서도 그대로 사용하고 있다. 애플리케이션 번들 개념은 간단하게 말해서, 폴더를 일종의 파일로 처리해 버리는 방식으로, 프로그램이나 프레임워크 설치나 삭제를 엄청나게 쉽게 할 수 있다. 이런 구조로 인해서 윈도나 리눅스에 비해 프로그램의 리소스 변경이 매우 쉽다는 특징이 있으며, 프로그램의 한국어 화[7]도 엄청나게 쉬워지는 특성을 갖고 있다. 제일 좋은 특성은 앱을 그냥 쓰레기 통에 넣어서 삭제하는 것[8]

메모리 관리

Windows와는 달리 macOS는 메모리를 6가지로 분류해서 관리한다.

  • App 메모리: 현재 App에서 사용 중인 공간의 용량.
  • 와이어드 메모리: 디스크에 캐시할 수 없는 메모리로, 현재 실행중인 애플리케이션의 실행코드가 올라와 있는 상태이다.
  • 캐시 파일: RAM의 App에서 사용할 수 있는 것으로 표시된 공간으로, 최근에 사용된 파일이 포함되어 있는 상태. 즉 언제든지 비울수 있는 상태
  • 압축된 메모리: 현재 앱에서 쓰는 메모리 중에서 압축해두고 있는 용량. 압축을 할 때 Wkdm이라는 알고리즘을 사용한다. 자기가 첫 번째라고 광고하지만 사실 리눅스의 zRam이 먼저 나왔다.
  • 비활성: 최근에 종료한 앱이 사용했던 공간.
  • 여유 공간: 남아있는 공간.

일반적인 상황에서도 macOS의 메모리는 보통 1기가를 넘지 않는다. 그리고 메모리 정리 프로그램은 App 메모리나 와이어드 메모리를 늘려서 OS의 메모리 정리 기능을 실행시키는 역할밖에 되지 않는다. 즉, 그냥 가만히 놔둬도 알아서 돌아간다. Mac의 메모리에서 중요한 건 비활성+여유공간이 아니라 메모리 부하가 더 중요하다.

OS 부트 과정

MacOS booting.jpg
  1. 전원 버튼이 눌러지고 Mac에 전원이 공급된다.
  2. POST(Power on Self Test)가 실행된다. 이 와중 EFI가 실행된다. 이 와중 몇몇 시스템 확인이 들어가게 되고, 펌웨어 비번을 묻는다.
  3. EFI는 NVRAM 값을 기반으로 하여 SMC, NVMe/SATA/USB, 썬더볼트를 초기화한다. 그 후 그래픽 카드를 초기화 한다.
  4. 디스크 드라이브를 인식하는 단계에서 암호화된 디스크인지 확인이 들어간다.
  5. 그후 부팅하고자 하는 디스크를 선택한다. - ⌥ Opt키가 여기서 먹힌다.
  6. macOS 로 부팅할 때는 Boot.efi를 불려온다.
  7. 시큐어부트에서 Boot.efi 항목을 검사한다(보안 정도에 따라).
  8. Boot.efi를 불러온다. 여기서 다른 운영 체제, 예를 들어 부트캠프를 불러오거나, IODeviceTree를 생성하고, 커널의 여러 파라메터를 설정한다. 여기서 ⌘ Cmd + R, S, V, ⇧ Shift등이 먹힌다.
  9. 커널 캐시를 불러오고 실행한다. 여기서 사용자가 허가한 커널 확장을 불러오고 실행한다.

각주

  1. 예전 이름은 Mac OS X for iPhone이었으나, 나중에 iOS로 이름을 갈아타게 된다.
  2. PowerPC용 응용 프로그램 지원을 위한 Rosetta가 탑재된 마지막 버전이다.
  3. El Capitan 출시 당시 이름의 발음법에 대해서 말이 많았다. 엘 카피탠, 엘 캐피탠, 심지어는 엘 꺼삐딴으로도 불렸다(...). 발음을 들어보면 알겠지만 저렇게 들으려고 하면 저렇게 들린다 엘 꺼삐딴 빼고
  4. 사실 크레이그 패더리기가 10.9를 발표할 때 농담으로 "고양잇과 동물의 이름을 찾느라 새 OS의 발표가 늦어지는 것을 막기 위해" 새 OS에 메버릭스라는 이름을 붙였다고 하긴 했다.
  5. 실행시 bad CPU type in executable라는 메시지를 띄우며, GUI로도 메시지를 띄운다.
  6. Apple Public Source Licnese, GPL에 호환되지 않는 라이선스이다.
  7. macOS 프로그램의 Resource에 <언어별>.lproj가 들어가 있다. 이 언어별 lproj 폴더안의 내용물을 수정하면 프로그램에서 나오는 값도 그에 따라 바뀐다. 덤으로, 개발자가 안해준다면 Xcode를 깔아서 하드코딩을 해야 하고(xib), 개발자가 다국어에 관심이 있으면 스트링 파일을 넣어서 번역하는걸 쉽게 하기도 한다.
  8. 여러 리소스가 남지만, 시스템에 별로 영향도 안준다. 물론, 이를 제거하는 프로그램도 존재한다.