로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

Mac OS X and IOS Internals: To the Apple's Core

   
지은이 Jonathan Levin   |   출판사 WROX PRESS  |   발행일 2012년 11월 06일   |   언어 : English
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 70,000원52,500원 25%
마일리지 0% 0원
발행일 2012-11-06 | 중량: 1.42 kg
ISBN 1118057651 | 9781118057650
기타정보 원서 | 984쪽 | $ 49.99 | Paperback
예상입고일 15~20일 소요예정 (근무일기준)
배송비 무료배송
    정가, 판매가는 항공 운임료 포함
프로그래밍
종합지수 0p
   
주의사항
  • - 현지사정에 의해 지연, 품절 될 수 있습니다.
  • - 해외주문원서는 취소 및 반품이 불가능합니다.(단, 파본이나 오발송은 제외 입니다.)
  • - 수입절차/입고소요기간 자세히
  •  

    An in-depth look into Mac OS X and iOS kernels
    Powering Macs, iPhones, iPads and more, OS X and iOS are becoming ubiquitous. When it comes to documentation, however, much of them are shrouded in mystery. Cocoa and Carbon, the application frameworks, are neatly described, but system programmers find the rest lacking. This indispensable guide illuminates the darkest corners of those systems, starting with an architectural overview, then drilling all the way to the core.

    •Provides you with a top down view of OS X and iOS
    •Walks you through the phases of system startup—both Mac (EFi) and mobile (iBoot)
    •Explains how processes, threads, virtual memory, and filesystems are maintained
    •Covers the security architecture
    •Reviews the internal Apis used by the system—BSD and Mach
    •Dissects the kernel, XNU, into its sub components: Mach, the BSD Layer, and I/o kit, and explains each in detail
    •Explains the inner workings of device drivers
    From architecture to implementation, this book is essential reading if you want to get serious about the internal workings of Mac OS X and iOS.
    INTRODUCTION xxv
    PART I: FOR POWER USERS

    CHAPTER 1: DARWINISM: THE EVOLUTION OF OS X 3

    The Pre-Darwin Era: Mac OS Classic 3

    The Prodigal Son: NeXTSTEP 4

    Enter: OS X 4

    OS X Versions, to Date 5

    10.0 — Cheetah and the First Foray 5

    10.1 — Puma — a Stronger Feline, but . . . 6

    10.2 — Jaguar — Getting Better 6

    10.3 — Panther and Safari 6

    10.4 — Tiger and Intel Transition 6

    10.5 — Leopard and UNIX 7

    10.6 — Snow Leopard 7

    10.7 — Lion 8

    10.8 — Mountain Lion 9

    iOS — OS X Goes Mobile 10

    1.x — Heavenly and the First iPhone 11

    2.x — App Store, 3G and Corporate Features 11

    3.x — Farewell, 1st gen, Hello iPad 11

    4.x — iPhone 4, Apple TV, and the iPad 2 11

    5.x — To the iPhone 4S and Beyond 12

    iOS vs. OS X 12

    The Future of OS X 15

    Summary 16

    References 16

    CHAPTER 2: E PLURIBUS UNUM: ARCHITECTURE OF OS X AND IOS 17

    OS X Architectural Overview 17

    The User Experience Layer 19

    Aqua 19

    Quicklook 20

    Spotlight 21

    Darwin — The UNIX Core 22

    The Shell 22

    The File System 23

    UNIX System Directories 24

    OS X–Specifi c Directories 25

    iOS File System Idiosyncrasies 25

    Interlude: Bundles 26

    Applications and Apps 26

    Info.plist 28

    Resources 30

    NIB Files 30

    Internationalization with .lproj Files 31

    Icons (.icns) 31

    CodeResources 31

    Frameworks 34

    Framework Bundle Format 34

    List of OS X and iOS Public Frameworks 37

    Libraries 44

    Other Application Types 46

    System Calls 48

    POSIX 48

    Mach System Calls 48

    A High-Level View of XNU 51

    Mach 51

    The BSD Layer 51

    libkern 52

    I/O Kit 52

    Summary 52

    References 53

    CHAPTER 3: ON THE SHOULDERS OF GIANTS: OS X

    AND IOS TECHNOLOGIES 55

    BSD Heirlooms 55

    sysctl 56

    kqueues 57

    Auditing (OS X) 59

    Mandatory Access Control 62

    OS X- and iOS-Specifi c Technologies 65

    User and Group Management (OS X) 65

    System Confi guration 67

    Logging 69

    Apple Events and AppleScript 72

    FSEvents 74

    Notifi cations 78

    Additional APIs of interest 79

    OS X and iOS Security Mechanisms 79

    Code Signing 80

    Compartmentalization (Sandboxing) 81

    Entitlements: Making the Sandbox Tighter Still 83

    Enforcing the Sandbox 89

    Summary 90

    References 90

    CHAPTER 4: PARTS OF THE PROCESS: MACH-O,

    PROCESS, AND THREAD INTERNALS 91

    A Nomenclature Refresher 91

    Processes and Threads 91

    The Process Lifecycle 92

    UNIX Signals 95

    Executables 98

    Universal Binaries 99

    Mach-O Binaries 102

    Load Commands 106

    Dynamic Libraries 111

    Launch-Time Loading of Libraries 111

    Runtime Loading of Libraries 122

    dyld Features 124

    Process Address Space 130

    The Process Entry Point 130

    Address Space Layout Randomization 131

    32-Bit (Intel) 132

    64-Bit 132

    32-Bit (iOS) 133

    Experiment: Using vmmap(1) to Peek Inside a Process’s

    Address Space 135

    Process Memory Allocation (User Mode) 138

    Heap Allocations 139

    Virtual Memory — The sysadmin Perspective 140

    Threads 143

    Unraveling Threads 143

    References 146

    CHAPTER 5: NON SEQUITUR:

    PROCESS TRACING AND DEBUGGING 147

    DTrace 147

    The D Language 147

    dtruss 150

    How DTrace Works 152

    Other Profi ling mechanisms 154

    The Decline and Fall of CHUD 154

    AppleProfi leFamily: The Heir Apparent 155

    Process Information 156

    sysctl 156

    proc_info 156

    Process and System Snapshots 159

    system_profi ler(8) 159

    sysdiagnose(1) 159

    allmemory(1) 160

    stackshot(1) 160

    The stack_snapshot System Call 162

    kdebug 165

    kdebug-based Utilities 165

    kdebug codes 166

    Writing kdebug messages 168

    Reading kdebug messages 169

    Application Crashes 170

    Application Hangs and Sampling 173

    Memory Corruption Bugs 174

    Memory Leaks 176

    heap(1) 177

    leaks(1) 177

    malloc_history(1) 178

    Standard UNIX Tools 178

    Process listing with ps(1) 179

    System-Wide View with top(1) 179

    File Diagnostics with lsof(1) and fuser(1) 180

    Using GDB 181

    GDB Darwin Extensions 181

    GDB on iOS 182

    LLDB 182

    Summary 182

    References and Further Reading 182

    CHAPTER 6: ALONE IN THE DARK:

    THE BOOT PROCESS: EFI AND IBOOT 183

    Traditional Forms of Boot 183

    EFI Demystifi ed 185

    Basic Concepts of EFI 186

    The EFI Services 188

    NVRAM Variables 192

    OS X and boot.efi 194

    Flow of boot.efi 195

    Booting the Kernel 201

    Kernel Callbacks into EFI 203

    Boot.efi Changes in Lion 204

    Boot Camp 204

    Count Your Blessings 204

    Experiment: Running EFI Programs on a Mac 206

    iOS and iBoot 210

    Precursor: The Boot ROM 210

    Normal Boot 211

    Recovery Mode 212

    Device Firmware Update (DFU) Mode 213

    Downgrade and Replay Attacks 213

    Installation Images 214

    OS X Installation Process 214

    iOS File System Images (.ipsw) 219

    Summary 225

    References and Further Reading 225

    CHAPTER 7: THE ALPHA AND THE OMEGA — LAUNCHD 227

    launchd 227

    Starting launchd 227

    System-Wide Versus Per-User launchd 228

    Daemons and Agents 229

    The Many Faces of launchd 229

    Lists of LaunchDaemons 241

    GUI Shells 246

    Finder (OS X) 247

    SpringBoard (iOS) 248

    XPC (Lion and iOS) 253

    Summary 257

    References and Further Reading 258

    PART II: THE KERNEL

    CHAPTER 8: SOME ASSEMBLY REQUIRED:

    KERNEL ARCHITECTURES 261

    Kernel Basics 261

    Kernel Architectures 262

    User Mode versus Kernel Mode 266

    Intel Architecture — Rings 266

    ARM Architecture: CPSR 267

    Kernel/User Transition Mechanisms 268

    Trap Handlers on Intel 269

    Voluntary kernel transition 278

    System Call Processing 283

    POSIX/BSD System calls 284

    Mach Traps 287

    Machine Dependent Calls 292

    Diagnostic calls 292

    XNU and hardware abstraction 295

    Summary 297

    References 297

    CHAPTER 9: FROM THE CRADLE TO THE GRAVE —

    KERNEL BOOT AND PANICS 299

    The XNU Sources 299

    Getting the Sources 299

    Making XNU 300

    One Kernel, Multiple Architectures 302

    The XNU Source Tree 305

    Booting XNU 308

    The Bird’s Eye View 309

    OS X: vstart 310

    iOS: start 310

    [i386|arm]_init 311

    i386_init_slave() 313

    machine_startup 314

    kernel_bootstrap 314

    kernel_bootstrap_thread 318

    bsd_init 320

    bsdinit_task 325

    Sleeping and Waking Up 328

    Boot Arguments 329

    Kernel Debugging 332

    “Don’t Panic” 333

    Implementation of Panic 334

    Panic Reports 336

    Summary 340

    References 341

    CHAPTER 10: THE MEDIUM IS THE MESSAGE: MACH PRIMITIVES 343

    Introducing: Mach 344

    The Mach Design Philosophy 344

    Mach Design Goals 345

    Mach Messages 346

    Simple Messages 346

    Complex messages 347

    Sending Messages 348

    Ports 349

    The Mach Interface Generator (MIG) 351

    IPC, in Depth 357

    Behind the Scenes of Message Passing 359

    Synchronization Primitives 360

    Lock Group Objects 361

    Mutex Object 362

    Read-Write Lock Object 363

    Spinlock Object 364

    Semaphore Object 364

    Lock Set Object 366

    Machine Primitives 367

    Clock Object 378

    Processor Object 380

    Processor Set Object 384

    Summary 388

    References 388

    CHAPTER 11: TEMPUS FUGIT — MACH SCHEDULING 389

    Scheduling Primitives 389

    Threads 390

    Tasks 395

    Task and Thread APIs 399

    Task APIs 399

    Thread APIs 404

    Scheduling 408

    The High-Level View 408

    Priorities 409

    Run Queues 412

    Mach Scheduler Specifi cs 415

    Asynchronous Software Traps (ASTs) 423

    Scheduling Algorithms 427

    Timer Interrupts 431

    Interrupt-Driven Scheduling 431

    Timer Interrupt Processing in XNU 432

    Exceptions 436

    The Mach Exception Model 436

    Implementation Details 437

    Experiment: Mach Exception Handling 440

    Summary 446

    References 446

    CHAPTER 12: COMMIT TO MEMORY:

    MACH VIRTUAL MEMORY 447

    Virtual Memory Architecture 447

    The 30,000-Foot View of Virtual Memory 448

    The Bird’s Eye View 449

    The User Mode View 452

    Physical Memory Management 462

    Mach Zones 467

    The Mach Zone Structure 468

    Zone Setup During Boot 470

    Zone Garbage Collection 471

    Zone Debugging 473

    Kernel Memory Allocators 473

    kernel_memory_allocate() 473

    kmem_alloc() and Friends 477

    kalloc 477

    OSMalloc 479

    Mach Pagers 480

    The Mach Pager interface 480

    Universal Page Lists 484

    Pager Types 486

    Paging Policy Management 494

    The Pageout Daemon 495

    Handling Page Faults 497

    The dynamic_pager(8) (OS X) 498

    Summary 499

    References 500

    CHAPTER 13: BS”D — THE BSD LAYER 501

    Introducing BSD 501

    One Ring to Bind Them 502

    What’s in the POSIX Standard? 503

    Implementing BSD 503

    XNU Is Not Fully BSD 504

    Processes and Threads 504

    BSD Process Structs 504

    Process Lists and Groups 507

    Threads 508

    Mapping to Mach 510

    Process Creation 512

    The User Mode Perspective 512

    The Kernel Mode Perspective 513

    Loading and Executing Binaries 516

    Mach-O Binaries 522

    Process Control and Tracing 525

    ptrace (#26) 525

    proc_info (#336) 527

    Policies 527

    Process Suspension/Resumption 529

    Signals 529

    The UNIX Exception Handler 529

    Hardware-Generated Signals 534

    Software-Generated Signals 535

    Signal Handling by the Victim 536

    Summary 536

    References 537

    CHAPTER 14: SOMETHING OLD, SOMETHING NEW:

    ADVANCED BSD ASPECTS 539

    Memory Management 539

    POSIX Memory and Page Management System Calls 540

    BSD Internal Memory Functions 541

    Memory Pressure 545

    Jetsam (iOS) 546

    Kernel Address Space Layout Randomization 548

    Work Queues 550

    BSD Heirlooms Revisited 552

    Sysctl 552

    Kqueues 555

    Auditing (OS X) 556

    Mandatory Access Control 558

    Apple’s Policy Modules 560

    Summary 563

    References 563

    CHAPTER 15: FEE, FI-FO, FILE: FILE SYSTEMS AND THE VFS 565

    Prelude: Disk Devices and Partitions 565

    Partitioning Schemes 567

    Generic File System Concepts 577

    Files 577

    Extended Attributes 577

    Permissions 577

    Timestamps 578

    Shortcuts and Links 578

    File Systems in the Apple Ecosystem 579

    Native Apple File Systems 579

    DOS/Windows File Systems 580

    CD/DVD File Systems 581

    Network-Based File Systems 582

    Pseudo File Systems 583

    Mounting File Systems (OS X only) 587

    Disk Image Files 589

    Booting from a Disk Image (Lion) 590

    The Virtual File System Switch 591

    The File System Entry 591

    The Mount Entry 592

    The vnode Object 595

    FUSE — File Systems in USEr Space 597

    File I/O from Processes 600

    Summary 605

    References and Further Reading 605

    CHAPTER 16: TO B (-TREE) OR NOT TO BE —

    THE HFS+ FILE SYSTEMS 607

    HFS+ File System Concepts 607

    Timestamps 607

    Access Control Lists 608

    Extended Attributes 608

    Forks 611

    Compression 612

    Unicode Support 617

    Finder integration 617

    Case Sensitivity (HFSX) 619

    Journaling 619

    Dynamic Resizing 620

    Metadata Zone 620

    Hot Files 621

    Dynamic Defragmentation 622

    HFS+ Design Concepts 624

    B-Trees: The Basics 624

    Components 630

    The HFS+ Volume Header 631

    The Catalog File 633

    The Extent Overfl ow 640

    The Attribute B-Tree 640

    The Hot File B-Tree 641

    The Allocation File 642

    HFS Journaling 642

    VFS and Kernel Integration 645

    fsctl(2) integration 645

    sysctl(2) integration 646

    File System Status Notifi cations 647

    Summary 647

    References 648

    CHAPTER 17: ADHERE TO PROTOCOL: THE NETWORKING STACK 649

    User Mode Revisited 650

    UNIX Domain Sockets 651

    IPv4 Networking 651

    Routing Sockets 652

    Network Driver Sockets 652

    IPSec Key Management Sockets 654

    IPv6 Networking 654

    System Sockets 655

    Socket and Protocol Statistics 658

    Layer V: Sockets 660

    Socket Descriptors 660

    mbufs 661

    Sockets in Kernel Mode 667

    Layer IV: Transport Protocols 668

    Domains and Protosws 669

    Initializing Domains 673

    Layer III: Network Protocols 676

    Layer II: Interfaces 678

    Interfaces in OS X and iOS 678

    The Data Link Interface Layer 680

    The ifnet Structure 680

    Case Study: utun 682

    Putting It All Together: The Stack 686

    Receiving Data 686

    Sending Data 690

    Packet Filtering 693

    Socket Filters 694

    ipfw(8) 696

    The PF Packet Filter (Lion and iOS) 697

    IP Filters 698

    Interface Filters 701

    The Berkeley Packet Filter 701

    Traffi c Shaping and QoS 705

    The Integrated Services Model 706

    The Diff erentiated Services Model 706

    Implementing dummynet 706

    Controlling Parameters from User Mode 707

    Summary 707

    References and Further Reading 708

    CHAPTER 18: MODU(LU)S OPERANDI — KERNEL EXTENSIONS 711

    Extending the Kernel 711

    Securing Modular Architecture 712

    Kernel Extensions (Kexts) 713

    Kext Structure 717

    Kext Security Requirements 718

    Working with Kernel Extensions 719

    Kernelcaches 719

    Multi-Kexts 723

    A Programmer’s View of Kexts 724

    Kernel Kext Support 725

    Summary 735

    References 735

    CHAPTER 19: DRIVING FORCE — I/O KIT 737

    Introducing I/O Kit 738

    Device Driver Programming Constraints 738

    What I/O Kit Is 738

    What I/O Kit Isn’t 741

    LibKern: The I/O Kit Base Classes 742

    The I/O Registry 743

    I/O Kit from User Mode 746

    I/O Registry Access 747

    Getting/Setting Driver Properties 749

    Plug and Play (Notifi cation Ports) 750

    I/O Kit Power Management 751

    Other I/O Kit Subsystems 753

    I/O Kit Diagnostics 753

    I/O Kit Kernel Drivers 755

    Driver Matching 755

    The I/O Kit Families 757

    The I/O Kit Driver Model 761

    The IOWorkLoop 764

    Interrupt Handling 765

    I/O Kit Memory Management 769

    BSD Integration 769

    Summary 771

    References and Further Reading 771

    APPENDIX: WELCOME TO THE MACHINE 773

    INDEX 793
    준비 중입니다.
    등록된 서평이 없습니다.
    Do it! 안드로이드 앱 프로그래밍...
    정재곤
    선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
     
    전체평균(0)
    회원평점   회원서평수 0
    Jonathan Levin 의 최근 저서
     
    Walt Whitman
    7,200원
    (26%↓+1%)
     
    Three Lives
    7,200원
    (26%↓+1%)
     
    Walden and Civil Disobedience
    9,300원
    (26%↓+1%)
     
    Poetics of Transition - CL
    114,300원
    (14%↓+1%)
     
    Poetics of Transition - PB
    30,000원
    (14%↓+1%)
     
    WROX PRESS 출판사의 신간
    Professional C++ 4th Edition
    Marc Gregoire 저
    67,300원
    (26%↓+1%)
     
    Programming Interviews Exposed: Coding Your Way Through the Interview
    Eric Giguere 저
    31,100원
    (26%↓+1%)
     
    Professional C# 7 and .Net Core 2.0
    Christian Nagel 저
    62,200원
    (26%↓+1%)
     
    Beginning C# 7 Programming with Visual Studio 2017
    Benjamin Perkins 저
    57,000원
    (26%↓+1%)
     
    Professional Visual Studio 2017
    Bruce Johnson 저
    67,300원
    (26%↓+1%)
     
    이메일주소수집거부