iOS는 Apple에서 개발한 운영체제로, 주로 iPhone, iPad 등 Apple 제품에 사용되는 운영체제로 크게 아래와 같은 4가지 구성 요소로 이루어져 있다.
iOS 운영체제의 계층 구조
Core OS
- 하드웨어와 가장 가까이 있는 최하위 계층
- 시스템의 핵심 기능을 관리
Core Service
- GPS, 가속도, 자이로스코프 하드웨어적 기능들
- 내부 데이터 / 위치(GPS), Sensor 등의 기능을 제공
Media
- 그래픽, 오디오, 비디오, 멀티미디어 기능 제공
- C 와 Objective-C와 혼합
Cocoa Touch
- 화면의 그래픽 UI
- UIKit, MapKit
- 실제 개발할 때 가장 많이 접하게 되는 계층
Application
- 사용자와 가장 맞닿아 있는 계층
- Apple App, Third-Party App이 포함.
다음으로는 iOS 운영체제의 구성요소에 대해 알아보겠습니다.
iOS 운영체제의 구성요소
Kernel(커널)
- XNU 커널, macOS, iOS에 모두 사용되는 하이브리드 커널
- 메모리 관리 (가상 메모리. 페이지 관리)
- 멀티태스킹 및 멀티 스레딩
System Frameworks
- Cocoa Touch 계층에 해당하는 System Frameworks
- UIKit을 활용하여 User Interface 구축,
- 데이터 관리 및 기타 핵심 기능 제공
System Application
- 다양한 시슨템 애플리케이션
- 메시지, 카메라, 사진, 설정 등 기본 앱
iOS 앱 샌드박스(App sandbox)
- sandbox 란 어린아이를 보호하기 위해 모래통에서만 놀도록 하는데서 유래한 접근 보안 모델
- App마다 sandbox를 두고 공유되지 않도록 하여 접근에 대해 보호
App SandBox의 원칙 다음 리소스를 사용하기 위해서는 그 의도가 명시.
- 하드웨어 (카메라, 마이크, USB, 프린터)
- 네트워크 연결 (인바운드 또는 아웃바운드)
- 앱 데이터 (캘린더, 위치, 연락처)
- 사용자 파일 (다운로드, 사진, 음악, 영화, 사용자 선택 파일)
Unity에서 iOS로 빌드하게 되었을 때 각 카메라, 마이크 등의 권한을 설정할 때 그 의도에 대해 기입하는 이유.
Kernel의 역할
- 보안
- 커널은 컴퓨터 하드웨어와 프로세스의 보안을 책임진다.
- 자원 관리
- 한정된 시스템 자원을 효율적으로 관리 프로그램 실행을 원할하게, 스케줄링
- 추상화
- 하드웨어 추상화들을 구현 (공통 명령어의 집합)
커널의 종류
- 단일형 커널 (하드웨어 추상화를 하나의 덩어리로 묶음)
- 마이크로 커널 (하드웨어 추상화를 간결한 작은 집합으로 제공)
- 혼합형 커널 (성능향상을 위해 추가적인 코드를 커널 공간에 넣음)
- 나노 커널 (실질적으로 모든 서비스를 책임짐)
- 엑소 커널 (라이브러리가 단일형 커널 수준의 추상을 제공)