Open Phangg opened 8 months ago
Operating System
- 소프트웨어
유저에게 편한 인터페이스 환경을 제공
유저가 직접적으로 자원에 접근 하는 것을 보호
시스템 자원을 효율적으로 관리
크게 커널 Kernel
과 인터페이스 Interface
( GUI, CLI 등.. ) 로 구성
시스템 호출 system call
와 드라이버 driver
로 구성시스템 호출
- 해당 인터페이스를 통해 커널의 자원에 접근
( 직접적으로 자원에 대한 접근을 차단하고 있기 때문에 필요 )드라이버
- 하드웨어의 인터페이스Core Data
, Core Foundation
, Foundation
등 ...AV Foundation
, Core Animation
, Core Audio
등 ...MapKit
, MessageUI
, SwiftUI
, UIKit
등 ...프로그램 : 메모리에 올라가지 않은 ( 실행되지 않은 ) 정적일 파일 그 자체
프로세스도
IPC
,LPC
등을 이용하여 정보를 공유 할 수 있지만, 자원 부담이 큼
참조 카운트 (RC)
를 관리해주는 기술과거 Objective-C 에서는 MRC 라고.. RC 를 수동으로 관리해주었음
retain : 참조 카운트를 증가 release : 참조 카운트를 감소
커널 수준에서 강제 적용되는 접근 제어 기술
iOS 에서 기본적으로 앱마다 별도의 파일을 생성해서 공유되지 않도록 함
앱이 손상되는 것을 방지하기 위함 ( 피해를 최소화하기 위한 장치 )
-> 앱이 가진 모든 리소스, 데이터에 접근이 불가능하도록 함
SandBox는 앱에 대한 파일, 네트워크 리소스, 환경설정, 하드웨어 등에 대한 앱의 접근을 제한하는 세분화된 제어 집합 SandBox 밖의 데이터에 접근하기 위해서는 SandBox 정책에 따라 접근 권한을 부여받아야 함 앱은 아래 이미지처럼 각각 SandBox 화 되어있음
iOS 장치상에서 암호화 정보를 저장하기 위해 제공되는 Framework 안전하게 저장하고 싶은 작은 데이터를 저장하는 암호화된 데이터베이스 Keychain 에 저장된 정보는 앱의 삭제와 상관없이 저장 유지가 됨
Keychain services API
여러 정보들이 저장되는 키체인은 하나의 암호화된 컨테이너라고 할 수 있는데, 이러한 컨테이너에 저장된 정보를 암호화하고 복호화해서 안전하게 사용할 수 있도록 하는 서비스
iOS에서 mainThread에서 UI관련 작업, globalThread에서는 네트워크 요청, 데이터 다운 등을 처리한다고 이해하면 될까요?
iOS 구조에서 중간을 이루고 있는 Core Service, Core OS 등은 프레임워크라고 보면 될까요? 하드웨어와 iOS App 사이에서 어떻게 동작하는지 궁금합니다.
iOS에서 mainThread에서 UI관련 작업, globalThread에서는 네트워크 요청, 데이터 다운 등을 처리한다고 이해하면 될까요?
네 그렇게 생각하고 있어요! 직접적으로 화면에 영향을 주지 않는 작업들은 백그라운드에서 global 로 돌리는게 맞다고 생각해요!
iOS 구조에서 중간을 이루고 있는 Core Service, Core OS 등은 프레임워크라고 보면 될까요? 하드웨어와 iOS App 사이에서 어떻게 동작하는지 궁금합니다.
Core OS 같은 경우는 하드웨어와의 연결을 해주는 하나의 계층
으로서의 작동을 해요.
장치 드라이버, 보안, 메모리 관리, 파일 시스템, 네트워크 등 을 관리하고,
이런 기본적인 역할을 전달해주면서 더 상위에 있는 앱과의 연결에 안정성을 부여하는 역할을 해요.
Core Service 와 나머지는 각각 위에서 예시로 들어놓은 프레임워크를 사용하는 계층이자 프레임워크라고 생각하시면 될 것 같아요!
운영체제의 역할과 iOS에서의 운영체제 구조에 대해 설명해주세요.