4T2F / ThinkBig2

🌟씽크빅 2팀 스터디 🌟
2 stars 0 forks source link

운영체제의 역할과 iOS에서의 운영체제 구조에 대해 설명해주세요. #2

Open Phangg opened 8 months ago

Phangg commented 8 months ago

운영체제의 역할과 iOS에서의 운영체제 구조에 대해 설명해주세요.

Phangg commented 8 months ago

OS - 운영체제

Operating System - 소프트웨어 유저에게 편한 인터페이스 환경을 제공 유저가 직접적으로 자원에 접근 하는 것을 보호 시스템 자원을 효율적으로 관리

os

크게 커널 Kernel인터페이스 Interface( GUI, CLI 등.. ) 로 구성

커널 - Kernel


iOS 구조

ios

Core OS

Core Service

Media

Cocoa Touch


프로세스와 스레드

프로세스 - Process

스레드 - Thread

thread

프로세스와 스레드의 차이점

프로세스도 IPC, LPC 등을 이용하여 정보를 공유 할 수 있지만, 자원 부담이 큼


iOS 의 스레드 Thread

Main Thread

Global Thread == Backgroun Thread


메모리 관리 기법 중 iOS 에서 사용되는 방식과 그 특징

ARC - Auto Reference Counting

과거 Objective-C 에서는 MRC 라고.. RC 를 수동으로 관리해주었음

순환참조 - retain cycle

동적으로 관리해준다고 했는데 run time 이 아닌, compile time 에서 어떻게 다 이루어지지?


iOS 의 샌드박스 ( Sandbox )

App Sandbox - Apple Developer

커널 수준에서 강제 적용되는 접근 제어 기술 iOS 에서 기본적으로 앱마다 별도의 파일을 생성해서 공유되지 않도록 함 앱이 손상되는 것을 방지하기 위함 ( 피해를 최소화하기 위한 장치 ) -> 앱이 가진 모든 리소스, 데이터에 접근이 불가능하도록 함

SandBox는 앱에 대한 파일, 네트워크 리소스, 환경설정, 하드웨어 등에 대한 앱의 접근을 제한하는 세분화된 제어 집합 SandBox 밖의 데이터에 접근하기 위해서는 SandBox 정책에 따라 접근 권한을 부여받아야 함 앱은 아래 이미지처럼 각각 SandBox 화 되어있음

appSandbox sandbox

키체인 - Keychain : iOS 앱 간 데이터 공유 방법

iOS 장치상에서 암호화 정보를 저장하기 위해 제공되는 Framework 안전하게 저장하고 싶은 작은 데이터를 저장하는 암호화된 데이터베이스 Keychain 에 저장된 정보는 앱의 삭제와 상관없이 저장 유지가 됨

Keychain



Keychain services API

여러 정보들이 저장되는 키체인은 하나의 암호화된 컨테이너라고 할 수 있는데, 이러한 컨테이너에 저장된 정보를 암호화하고 복호화해서 안전하게 사용할 수 있도록 하는 서비스

kmh5038 commented 8 months ago

iOS에서 mainThread에서 UI관련 작업, globalThread에서는 네트워크 요청, 데이터 다운 등을 처리한다고 이해하면 될까요?

Hminchae commented 8 months ago

iOS 구조에서 중간을 이루고 있는 Core Service, Core OS 등은 프레임워크라고 보면 될까요? 하드웨어와 iOS App 사이에서 어떻게 동작하는지 궁금합니다.

Phangg commented 8 months ago

iOS에서 mainThread에서 UI관련 작업, globalThread에서는 네트워크 요청, 데이터 다운 등을 처리한다고 이해하면 될까요?

네 그렇게 생각하고 있어요! 직접적으로 화면에 영향을 주지 않는 작업들은 백그라운드에서 global 로 돌리는게 맞다고 생각해요!

Phangg commented 8 months ago

iOS 구조에서 중간을 이루고 있는 Core Service, Core OS 등은 프레임워크라고 보면 될까요? 하드웨어와 iOS App 사이에서 어떻게 동작하는지 궁금합니다.

Core OS 같은 경우는 하드웨어와의 연결을 해주는 하나의 계층으로서의 작동을 해요. 장치 드라이버, 보안, 메모리 관리, 파일 시스템, 네트워크 등 을 관리하고, 이런 기본적인 역할을 전달해주면서 더 상위에 있는 앱과의 연결에 안정성을 부여하는 역할을 해요.

Core Service 와 나머지는 각각 위에서 예시로 들어놓은 프레임워크를 사용하는 계층이자 프레임워크라고 생각하시면 될 것 같아요!