macOSμ iOS
Appleμ macOSμ΄μ체μ λ μ£Όλ‘ λ°μ€ν¬ν± λ° λ©ν± μ»΄ν¨ν° μμ€ν μμ μ€νλλλ‘ μ€κ³λμμΌλ©° iOSλ iPhone μ€λ§νΈν° λ° iPad νλΈλ¦Ώ μ»΄ν¨ν°μ©μΌλ‘ μ€κ³λ λͺ¨λ°μΌ μ΄μ체μ μ λλ€. ꡬ쑰μ μΌλ‘ macOSμ iOSλ 곡ν΅μ μ΄ λ§μΌλ―λ‘ κ³΅μ νλ λ΄μ©κ³Ό μλ‘ λ€λ₯Έ μ μ κ°μ‘°νμ¬ ν¨κ» μ μν©λλ€. μ΄ λ μμ€ν μ μΌλ°μ μΈ μν€ν μ²λ μλμ μ΄λ―Έμ§μ κ°μ΅λλ€.
λ€μν μΈ΅μ μ£Όμ νΉμ§μ λ€μκ³Ό κ°μ΅λλ€.
- μ¬μ©μ κ²½ν μΈ΅: μ΄ μΈ΅μ μ¬μ©μκ° μ»΄ν¨ν μ₯μΉμ μνΈ μμ©ν μ μλ μννΈμ¨μ΄ μΈν°νμ΄μ€λ₯Ό μ μν©λλ€. macOSλ λ§μ°μ€ λλ νΈλν¨λ μ©μΌλ‘ μ€κ³λ Aqua μ¬μ©μ μΈν°νμ΄μ€λ₯Ό μ¬μ©νλ λ°λ©΄, iOSλ ν°μΉ μ₯μΉμ©μΌλ‘ μ€κ³λ Springboard μ¬μ©μ μΈν°νμ΄μ€λ₯Ό μ¬μ©ν©λλ€.
- μμ© νλ‘κ·Έλ¨ νλ μμν¬ μΈ΅: μ΄ μΈ΅μλ Cocoa λ° Cocoa Touch νλ μμν¬κ° ν¬ν¨λλ©° Objective-C λ° Swift νλ‘κ·Έλλ° μΈμ΄μ λν APIλ₯Ό μ 곡ν©λλ€. Cocoaμ Cocoa Touchμ μ£Όμ μ°¨μ΄μ μ μ μλ macOS μμ© νλ‘κ·Έλ¨ κ°λ°μ μ¬μ©λκ³ νμλ iOSκ° ν°μΉμ€ν¬λ¦°κ³Ό κ°μ λͺ¨λ°μΌ μ₯μΉμ κ³ μ ν νλμ¨μ΄ κΈ°λ₯μ μ§μνλ λ° μ¬μ©νλ€λ κ²μ λλ€.
- ν΅μ¬ νλ μμν¬: μ΄ μΈ΅μ Quicktime λ° OpenGLμ ν¬ν¨ν κ·Έλν½ λ° λ―Έλμ΄λ₯Ό μ§μνλ νλ μμν¬λ₯Ό μ μν©λλ€.
- 컀λ νκ²½: Darwinμ΄λΌκ³ λΆλ¦¬λ μ΄ νκ²½μλ Mach λ§μ΄ν¬λ‘컀λκ³Ό BSD UNIX 컀λμ΄ ν¬ν¨λ©λλ€.
μ μ΄λ―Έμ§μ λμλ κ²μ²λΌ μμ© νλ‘κ·Έλ¨μ μ¬μ©μ κ²½ν κΈ°λ₯μ μ΄μ©νκ±°λ μ΄ κΈ°λ₯μ μ°ννμ¬ μμ© νλ‘κ·Έλ¨ νλ μμν¬ λλ ν΅μ¬ νλ μμν¬μ μ§μ μνΈ μμ©νλλ‘ μ€κ³λ μ μμ΅λλ€. λν μμ© νλ‘κ·Έλ¨μ νλ μμν¬λ₯Ό μμ ν λ²λ¦¬κ³ 컀λ νκ²½κ³Ό μ§μ ν΅μ ν μ μμ΅λλ€.(μ΄ νμμ κ²½μ°μ μλ μ¬μ©μ μΈν°νμ΄μ€ μμ΄ POSIX μμ€ν μ½μ μννλλ‘ μμ±λ C νλ‘κ·Έλ¨μ λλ€.)
macOSμ iOSμ μ€μν μ°¨μ΄μ μ λ€μκ³Ό κ°μ΅λλ€.
macOSλ λ°μ€ν¬ν± λ° λ©ν± μ»΄ν¨ν° μμ€ν μ©μ΄λ―λ‘ Intel μν€ν μ²μμ μ€νλλλ‘ μ»΄νμΌλ©λλ€. iOSλ λͺ¨λ°μΌ μ₯μΉμ©μΌλ‘ μ€κ³λμμΌλ―λ‘ ARM κΈ°λ° μν€ν μ²μ©μΌλ‘ μ»΄νμΌλ©λλ€.(μ΄μ m1 μν€ν μ²λ μΆκ°λμμΌλ λ°λμ΄μΌ ν κ² κ°μ΅λλ€.) λ§μ°¬κ°μ§λ‘ iOS 컀λμ μ μ κ΄λ¦¬ λ° κ³΅κ²©μ μΈ λ©λͺ¨λ¦¬ κ΄λ¦¬μ κ°μ λͺ¨λ°μΌ μμ€ν μ νΉμ κΈ°λ₯κ³Ό μꡬλ₯Ό ν΄κ²°νκΈ° μν΄ μ½κ° μμ λμμ΅λλ€. λν iOSμλ macOSλ³΄λ€ λ μ격ν 보μ μ€μ μ΄ μμ΅λλ€.- iOS μ΄μ체μ λ μΌλ°μ μΌλ‘ macOSλ³΄λ€ κ°λ°μμκ² ν¨μ¬ λ μ νμ μ΄λ©° λ νμμ μΌ μλ μμ΅λλ€. μλ₯Ό λ€μ΄, iOSλ iOSμμ POSIX λ° BSD APIμ λν μ‘μΈμ€λ₯Ό μ ννλ λ°λ©΄ macOSμμ κ°λ°μλ 곡κ°μ μΌλ‘ μ¬μ©ν μ μμ΅λλ€.
μ΄μ Darwinμ μ΄μ μ λ§μΆ°λ³΄κ² μ΅λλ€. Darwinμ μ£Όλ‘ Mach λ§μ΄ν¬λ‘컀λκ³Ό BSD UNIX 컀λλ‘ κ΅¬μ±λ κ³μΈ΅νλ μμ€ν μ λλ€. Darwinμ ꡬ쑰λ μλμ μ΄λ―Έμ§μ κ°μ΅λλ€.
μ΄μ체μ λλΆλΆμ UNIX λ° Linux μμ€ν μμ νμ€ C λΌμ΄λΈλ¬λ¦¬λ₯Ό ν΅νλ κ²μ²λΌ 컀λμ λν΄ νλμ μμ€ν μ½ μΈν°νμ΄μ€λ₯Ό μ 곡νλ λ°λ©΄ Darwinμ Mach μμ€ν μ½(νΈλ©μ΄λΌκ³ ν¨)κ³Ό BSD μμ€ν μ½(POSIX κΈ°λ₯ μ 곡) λ κ°μ μμ€ν μ½ μΈν°νμ΄μ€λ₯Ό μ 곡ν©λλ€. μ΄λ¬ν μμ€ν μ½μ λν μΈν°νμ΄μ€λ νμ€ C λΌμ΄λΈλ¬λ¦¬λΏλ§ μλλΌ λ€νΈμνΉ, 보μ λ° νλ‘κ·Έλλ° μΈμ΄ μ§μμ μ 곡νλ λΌμ΄λΈλ¬λ¦¬λ₯Ό ν¬ν¨νλ νλΆν λΌμ΄λΈλ¬λ¦¬ μ§ν©μ λλ€.
μμ€ν μ½ μΈν°νμ΄μ€ μλμμ Machλ λ©λͺ¨λ¦¬ κ΄λ¦¬, CPU μ€μΌμ€λ§ λ° λ©μμ§ μ λ¬ λ° μ격 νλ‘μμ νΈμΆ(remote procedure call, RPC)κ³Ό κ°μ νλ‘μΈμ€ κ° ν΅μ (Inter Process Communication, IPC) κΈ°λ₯μ ν¬ν¨ν κΈ°λ³Έ μ΄μ체μ μλΉμ€λ₯Ό μ 곡ν©λλ€. Machμμ μ 곡νλ λλΆλΆμ κΈ°λ₯μ 컀λ μΆμνλ₯Ό ν΅ν΄μ μ¬μ© κ°λ₯ν©λλ€. μ΄ μΆμνμλ νμ€ν¬(Mach νλ‘μΈμ€), μ€λ λ, λ©λͺ¨λ¦¬ κ°μ²΄ λ° ν¬νΈ(IPCμ μ¬μ©)κ° ν¬ν¨λ©λλ€. μλ₯Ό λ€μ΄, μμ© νλ‘κ·Έλ¨μ BSD POSIX fork() μμ€ν μ½μ μ¬μ©νμ¬ μ νλ‘μΈμ€λ₯Ό μμ±ν μ μμ΅λλ€. Machλ 컀λ λ΄μμ νλ‘μΈμ€λ₯Ό λνλ΄κΈ° μνμ¬ νμ€ν¬ 컀λ μΆμνλ₯Ό μ¬μ©ν©λλ€.
Mach λ° BSD μΈμλ 컀λ νκ²½μ μ₯μΉ λλΌμ΄λ² λ° λμ μ μ¬ κ°λ₯ λͺ¨λ(macOSλ 컀λ νμ₯ λλ kextλΌκ³ ν¨) κ°λ°μ μν I/Oν€νΈλ₯Ό μ 곡ν©λλ€.
Apple Darwin μ΄μ체μ λ κ³΅κ° μμ€λ‘ λ°°ν¬λμμ΅λλ€. κ·Έ κ²°κ³Ό X-11 μλ μμ€ν λ° μΆκ° νμΌ μμ€ν μ§μκ³Ό κ°μ λ€μν νλ‘μ νΈκ° Darwinμ λΆκ°μ μΈ κΈ°λ₯μ μΆκ°νμμ΅λλ€. κ·Έλ¬λ Darwinκ³Ό λ¬λ¦¬ Cocoa μΈν°νμ΄μ€μ macOS μμ©νλ‘κ·Έλ¨ κ°λ°μ μ¬μ©ν μ μλ λ€λ₯Έ λ μ μ Apple νλ μμν¬λ λΉκ³΅κ° μνμ λλ€.
Android
Android μ΄μ체μ λ Open Handset Alliance (Googleμ΄ μ£Όλ)κ° μ€κ³νμμΌλ©° Android μ€λ§νΈν°κ³Ό νλΈλ¦Ώμ μν΄ κ°λ°λμμ΅λλ€. iOSκ° Appleμ λͺ¨λ°μΌ μ₯μΉμμ μ€ννκΈ° μν΄ μ€κ³λμκ³ μμ€κ° 곡κ°λμ§ μμ λ° λ°ν΄, Androidλ λ€μν λͺ¨λ°μΌ νλ«νΌμμ μ€νλλ©° κ³΅κ° μμ€μ λλ€. κ³΅κ° μμ€λΌλ μ΄μ κ° λΉ λ₯΄κ² μΈκΈ°κ° λμμ‘λ μ΄μ μ€ μΌλΆλΆμ μ°¨μ§ν©λλ€. Androidμ ꡬ쑰λ μλμ μ΄λ―Έμ§μ κ°μ΅λλ€.
Androidλ κ·Έλν½, μ€λμ€ λ° νλμ¨μ΄ κΈ°λ₯μ μ§μνλ λ€μν νλ μμν¬λ₯Ό μ 곡νλ κ³μΈ΅νλ μννΈμ¨μ΄ μ€νμ΄λΌλ μ μμ iOSμ μ μ¬ν©λλ€. κ·Έ κ²°κ³Ό μ΄λ¬ν κΈ°λ₯μ λ€μν Android μ§μ μ₯μΉμμ μ€νλλ λͺ¨λ°μΌ μμ© νλ‘κ·Έλ¨μ κ°λ°νκΈ° μν νλ«νΌμ μ 곡ν©λλ€.
Android μ₯μΉμ μννΈμ¨μ΄ μ€κ³μλ Java μΈμ΄λ‘ μμ© νλ‘κ·Έλ¨μ κ°λ°νμ§λ§ μΌλ°μ μΌλ‘ νμ€ Java APIλ₯Ό μ¬μ©νμ§ μμ΅λλ€. Googleμ Java κ°λ°μ μν΄ λ³λμ Android APIλ₯Ό μ€κ³νμμ΅λλ€. Java μμ© νλ‘κ·Έλ¨μ Android RunTime(ART)μμ μ€νν μ μλ νμμΌλ‘ μ»΄νμΌλ©λλ€. ARTλ Androidμ©μΌλ‘ μ€κ³λμ΄ λ©λͺ¨λ¦¬μ CPU μ²λ¦¬λ₯λ ₯μ΄ μ νμ μΈ λͺ¨λ°μΌ μ₯μΉμ μ΅μ νλ κ°μ λ¨Έμ μ λλ€. Java νλ‘κ·Έλ¨μ μ°μ Java λ°μ΄νΈμ½λ .class νμΌλ‘ μ»΄νμΌλ ν μ€ν κ°λ₯ν .dex νμΌλ‘ λ³νλ©λλ€. λ§μ Java κ°μ λ¨Έμ μ΄ μμ© νλ‘κ·Έλ¨ ν¨μ¨μ±μ ν₯μνκΈ° μν΄ JIT(just-in-time) μ»΄νμΌμ μννλ λ°λ©΄, ARTλ AOT(ahead-of-time) μ»΄νμΌμ μνν©λλ€. μ΄μ .dex νμΌμ μ₯μΉμ μ€μΉλ λ ν΄λΉ κΈ°κ³μ΄ μ½λλ‘ μ»΄νμΌλμ΄ ARTμμ μ€νλ μ μκ² λ©λλ€. AOT μ»΄νμΌμ λͺ¨λ°μΌ μμ€ν μ μ€μν κΈ°λ₯μΈ μ λ ₯ μλΉλ₯Ό μ€μ΄λ©΄μ λ ν¨μ¨μ μΈ μμ©νλ‘κ·Έλ¨ μ€νμ κ°λ₯νκ² ν©λλ€.
Android κ°λ°μλ κ°λ°μκ° κ°μ λ¨Έμ μ μ°νν μ μκ² νλ Java λ€μ΄ν°λΈ μΈν°νμ΄μ€(λλ JNI)λ₯Ό μ¬μ©νλ Java νλ‘κ·Έλ¨μ μμ±νμ¬ νΉμ νλμ¨μ΄ κΈ°λ₯μ μ‘μΈμ€ ν μ μλ νλ‘κ·Έλ¨μ μμ±ν μ μμ΅λλ€. JNIλ₯Ό μ¬μ©νμ¬ μμ±λ νλ‘κ·Έλ¨μ μΌλ°μ μΌλ‘ ν νλμ¨μ΄ μ₯μΉμμ λ€λ₯Έ νλμ¨μ΄ μ₯μΉλ‘ μ΄μν μ μμ΅λλ€.
Android μμ© νλ‘κ·Έλ¨μμ μ¬μ© κ°λ₯ν λ€μ΄ν°λΈ λΌμ΄λΈλ¬λ¦¬ μ§ν©μλ μΉ λΈλΌμ°μ (webkit), λ°μ΄ν°λ² μ΄μ€ μ§μ(SQLite) λ° λ€νΈμν¬ μμΌ(μ: SSL)μ κ°λ°νκΈ° μν νλ μμν¬κ° ν¬ν¨λ©λλ€.
Androidλ κ±°μ 무μ νμ νλμ¨μ΄ μ₯μΉμμ μ€νλ μ μμΌλ―λ‘ Googleμ νλμ¨μ΄ μΆμν κ³μΈ΅ λλ HALμ ν΅ν΄ 물리μ νλμ¨μ΄λ₯Ό μΆμννκΈ°λ‘ μ ννμμ΅λλ€. HALμ μΉ΄λ©λΌ, GPS μΉ© λ° κΈ°ν μΌμμ κ°μ λͺ¨λ νλμ¨μ΄λ₯Ό μΆμννμ¬ νΉμ νλμ¨μ΄μ μκ΄μμ΄ μΌκ΄λ λ·°λ₯Ό μμ© νλ‘κ·Έλ¨μ μ 곡ν©λλ€. λ¬Όλ‘ μ΄ κΈ°λ₯μ ν΅ν΄ κ°λ°μλ λ€λ₯Έ νλμ¨μ΄ νλ«νΌμμ μ΄μ κ°λ₯ν νλ‘κ·Έλ¨μ μμ±ν μ μμ΅λλ€.
Linux μμ€ν μμ μ¬μ©νλ νμ€ C λΌμ΄λΈλ¬λ¦¬λ GNU C λΌμ΄λΈλ¬λ¦¬(glibc)μ λλ€. λμ Googleμ Androidλ₯Ό μν Bionic νμ€ C λΌμ΄λΈλ¬λ¦¬λ₯Ό κ°λ°νμμ΅λλ€. Bionicμ glibcλ³΄λ€ λ©λͺ¨λ¦¬ μ¬μ©λμ΄ μ μ λΏλ§ μλλΌ λͺ¨λ°μΌ μ₯μΉλ₯Ό νΉμ§μ§λ λλ¦° CPUλ₯Ό μν΄ μ€κ³λμμ΅λλ€.(λν Bionicμ Googleμ΄ glibcμ GPL λΌμ΄μ μ€λ₯Ό μ°ννλλ‘ νμ©ν©λλ€.)
Android μννΈμ¨μ΄ μ€νμ 맨 μλμλ Linux 컀λμ΄ μμ΅λλ€. Googleμ μ μ κ΄λ¦¬μ κ°μ λͺ¨λ°μΌ μμ€ν μ νΉμν μꡬλ₯Ό μ§μνκΈ° μν΄ λ€μν μμμμ Androidμμ μ¬μ©λλ Linux 컀λμ μμ νμμ΅λλ€. λν λ©λͺ¨λ¦¬ κ΄λ¦¬ λ° ν λΉμ λ³κ²½νμΌλ©° Binderλ‘ μλ €μ§ μλ‘μ΄ ννμ IPCλ₯Ό μΆκ°νμ΅λλ€.
'ComputerScience π > μ΄μ체μ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[OS] IPC μμ€ν μ μ¬λ‘(Examples of IPC Systems) (0) | 2022.02.10 |
---|---|
[OS] νλ‘μΈμ€ κ° ν΅μ (Interprocess Communication, IPC) (0) | 2022.02.10 |
[OS] νλ‘μΈμ€μ κ°λ (Process Concept) (0) | 2022.02.08 |
[OS] μμ€ν μ½(System Calls) (0) | 2022.02.05 |
[OS] μ¬μ©μμ μ΄μ체μ μΈν°νμ΄μ€(User and Operating-System Interface) (0) | 2022.02.03 |
[OS] λΆμ°μμ€ν (Distributed Systems) μλ‘ (0) | 2022.02.02 |
λκΈ