This course will be available as Seminar-only, starting Jul 1, 2023.
Our Courses
PTR/INT Oracle Solaris 11 Internals
- Home /
- Infrastructure /
- PTR/INT Oracle Solaris 11 Internals
Course Content
Introduction
- Overview
- Course Goals
- Course Agenda: Day 1
- Course Agenda: Day 2
- Course Agenda: Day 3
- Course Agenda: Day 4
- Course Agenda: Day 5
- Introductions
- Your Learning Center
Oracle Solaris 11 Operating System: Introduction
- Objectives
- Lesson Agenda
- Operating System Basics
- Lesson Agenda
- Defining Processes
- Lesson Agenda
- SPARC 32-Bit Address Space
- SPARC 64-Bit Address Space
- x86 32-Bit Address Space: 64-Bit OS
- x86 64-Bit Address Space: 64-Bit OS
- Lesson Agenda
- Process Structures
- Lesson Agenda
- Kernel Mode Entry
- Lesson Agenda
- System Calls
- Interrupts
- Lesson Agenda
- clock() Routine
- LWP Accounting Scalability
- LWP Accounting
- Callout Queue
- callout Structure
- Callout Scalability
- Lesson Agenda
- Kernel Memory Allocator
- Lesson Agenda
- SunOS Evolution
- Solaris 9 +10: Features
- Solaris 11 OS: New Features
- Lesson Agenda
- Tools
- adb and kadb Tools
- mdb Tools
- kmdb Tools
- DTrace
- Lesson Agenda
- Probe Descriptions and Clauses
- Practice 2 Overview: Introducing DTrace
- Summary
Multithread Architecture
- Objectives
- Lesson Agenda
- Common Terminology
- Lesson Agenda
- Multiprocessor Architectures
- Threads in the Solaris 9 and Solaris 10 OS
- Kernel Threads
- Lesson Agenda
- Process Structures
- Fields from the proc Structure
- Fields from the user Structure
- Fields from the Kernel Lightweight Process Structure (klwp_t)
- Fields from the Kernel Thread Structure (kthread_t)
- Fields from Kernel Thread Structure
- cpu Structure
- Lesson Agenda
- Interrupts
- Interrupt Threads
- Interrupt Threads Priorities
- Lesson Agenda
- Locks
- Mutex Locks
- Adaptive Mutex
- Spin Mutex
- Acquiring a Mutex Lock
- Turnstiles
- Semaphores
- Multiple-Reader, Single-Writer Locks
- Condition Variables Structure
- Sleep Queue Properties
- Practice 3 Overview: Multithread Architecture
- Summary
Hardware Memory Management
- Objectives
- Lesson Agenda
- Main Memory
- Virtual Memory
- Process Address Space
- Memory Terminology
- Lesson Agenda
- System Memory Model
- Lesson Agenda
- Virtual-to-Physical Address Translation
- Lesson Agenda
- x86 – 32-Bit MMU
- Page Table Entry
- Page Table Entry (PTE)
- x86 with Physical Addressing Extension (PAE)
- AMD 64-Bit MMU
- Translation Lookaside Buffer (TLB)
- Large Page Sizes
- Spitfire Memory Management Unit (SFMMU)
- Translation Storage Buffer (TSB) Properties
- Translation Storage Buffer
- Table Translation Entry
- ctx Structure
- hme_blks Block
- Lesson Agenda
- Cache
- Cache Compared to Memory
- Cache Hit Rate
- Defining Types of Caches
- Virtual Address Cache
- Physical Address Cache
- Cache Aliasing on a Virtual Cache
- Direct-Mapped Cache
- Set-Associative Cache
- Set-Associative Cache Properties
- Harvard and Unified Caches
- Write-Through and Write-Back Cache
- Cache Snooping
- I/O Cache
- Lesson Agenda
- Hardware Address Translation Layer
- Practice 4 Overview: Hardware Memory Management
- Summary
Software Memory Management
- Objectives
- Lesson Agenda
- SunOS VM1: Features
- Process Address Space
- VM1 Virtual Memory System Layers
- VM2 Virtual Memory System Layers
- What Has Not Changed in Phase 1
- mmap(2) System Call
- System Calls and Services
- madvise(3C) Routine
- NUMA Locality
- Latency Topology: Example
- Ladder Topology: Example
- Address Space Layer
- as Structure
- Physical Pages
- page Structure
- sf_hment Structure
- memseg Structure
- Lesson Agenda
- Virtual Memory Segment Drivers
- seg Structure
- seg_ops Structure
- File I/O Shared-Mapping Segment Driver
- Device Segment Driver (segdev)
- Kernel Memory Segment Driver (segkmem)
- vnode Segment Driver (segvn)
- segvn_data Structure
- vpage Structure
- Anonymous Memory
- AVL Trees
- Mapping Structures
- Process Memory Data Structures
- segkp Driver
- segkp Driver Strategy
- Kernel Physical Mapping Segment Driver (segkpm)
- Practice 5 Overview: Software Memory Management
- Summary
VM2
- Objectives
- Lesson Agenda
- Motivation for VM2
- What Is in VM2 Phase 1?
- Lesson Agenda
- What Has Not Changed in Phase 1?
- VM1 Virtual Memory System Layers
- VM2 Virtual Memory System Layers
- VM2 Phase 2 and Phase 3
- VM2: The Big Picture
- VM2 Update 1
- Proposed Process Mappings
- Lesson Agenda
- Criteria for Memory Selection: mnodes
- mnode
- mnode MDB: Example
- Lesson Agenda
- Criteria for Memory Selection: Tiles
- Tiles
- Tile Sizes
- System Tiles: Example
- Tile Data Structures
- Example in mdb
- Criteria for Memory Selection: tilelets and tilechunks
- Tilelets
- System Tilelets: Example
- Example in mdb
- tilechunk_t
- Tilechunks: Example
- System Tilechunks: Example
- tilechunk_t mdb: Example
- Physical Address of Tilechunk Maps
- ::pachunk – mdb Example
- tileset_t
- ::tileset mdb Example
- Criteria for Memory Selection: Kernel Cage
- VM2
- Kernel Cage in VM2
- Lesson Agenda
- Criteria for Memory Selection: Typed Page Credits
- Typed Page Credits
- Capture
- Bounds Predictor
- Criteria for Memory Selection: memgrp
- memgrp
- memgrp – MDB Example
- System Structure
- System Structure: mdb Example
- Criteria for Memory Selection
- Page Size Codes
- ::size: mdb Example
- Page Allocation Credits
- crd Structure
- crd: mdb Examples
- Wallet
- Fed
- Fed: mdb Example
- Breadline
- Breadline: mdb Examples
- Soupline
- FLR and TCM
- SAC
- SAC: mdb Example
- FLB
- FLB: mdb Examples
- End-to-End Credit Auditing: mdb Example
- Global Page Size Statistics: mdb Examples
- Reverse Map Entry
- RM: Implementation
- RM: Important Flags
- RM: mdb Examples
- RMG
- RMG: mdb Examples
- Sparse Data Structures
- Sparse Data Structures: mdb Examples
- Sparse Data Structures
- Criteria for Memory Selection: Review
- Lesson Agenda
- VM2 Allocation
- Allocation Credits
- Wallet Types
- Freelist Buckets
- Allocation: Glue Interfaces
- Allocation: Locality
- Allocate Credits: Allocation Parameters
- Allocation: Allocate crd_ts
- Allocation: Breadlines
- Allocation: Allocate crd_ts
- Allocation: Allocate rm_ts
- Allocate rm_ts: flr_iterate_slot()
- Allocation: Allocate rm_ts
- Allocate RMs: flr_iterate_tile()
- Allocation: Allocate page_ts
- Lesson Agenda
- Predictor
- Predictor Data Types
- Predictor Threads
- Predictor Components
- Predictor Sampler
- Predictor Analyzer
- Predictor States
- Predictor Action Engine
- Predictor mdb dcmds
- VM2 Structures
- Lesson Agenda
- Procedure for a VM2 Quick Check
- Practice 6 Overview: VM2
- Summary
Paging and Swapping
- Objectives
- Lesson Agenda
- Paging: Overview
- Paging In
- Page Replacement
- Parts of the Page Daemon
- Clock Algorithm
- Defaults for SunOS 5.5.1 Through SunOS 5.8
- Paging Parameters: Updates
- schedpaging() Routine
- pageout()Routine
- pageout_scanner() Routine
- checkpage(pp, whichhand) Routine
- Lesson Agenda
- Swapper
- Swapper (sched.c)Operation
- not_swappable() Macro
- Desperate Swapper Memory Conditions
- sched() Routine, Part 1
- sched() Routine, Part 2
- CL_SWAPOUT() Macro and Routines
- CL_SWAPOUT() Routines
- CL_SWAPIN() Macro and Routines
- rt_swapin()and fx_swapin() Routines
- Lesson Agenda
- Virtual Address Lookup
- Practice 7 Overview: Paging and Swapping
- Summary
The swapfs File System
- Objectives
- Lesson Agenda
- Problems with Anonymous Memory in SunOS 4.x
- Anonymous Memory in SunOS 5.x
- Lesson Agenda
- Swap Management Structures
- anoninfo Structure
- swapinfo Structures
- anon_map Structure
- anon_hdr Structure
- anon Structure in Sun OS 5.x
- Lesson Agenda
- Swap Space Management
- Swap Area: Example
- Lesson Agenda
- Advantages of swapfs File Systems
- Practice 8 Overview: The swapfs File System
- Summary
Scheduling
- Objectives
- Lesson Agenda
- Scheduling Features
- Real-Time Scheduling
- Dispatch Latency
- Pre-Emptible Kernel
- Interactive Scheduling Class
- Fixed Priority Scheduling Class (FX)
- Fair Share Scheduling Class (FSS)
- System Duty Cycle (SDC) Scheduling Class
- SDC Scheduling Class
- Lesson Agenda
- Dispatch Priorities
- dispq_t Structure
- State Diagram
- Class Array
- Lesson Agenda
- Process Structures
- tsproc_t Structure (View 1)
- tsproc_t Structure (View 2)
- rtproc_t Structure
- classfunc Structure
- Lesson Agenda
- Kernel Mode Priority Assignment
- Timesharing Dispatch Parameter Table (View 1)
- Timesharing Dispatch Parameter Table (View 2)
- Timesharing/Interactive Dispatch Parameter Table
- Real-Time Dispatch Parameter Table
- priocntl(1) Command
- dispadmin(1) Command
- Calculating a Thread’s Priority
- Lesson Agenda
- Kernel Scheduling-Related Variables
- Kernel Scheduling-Related Functions
- ts_tick() Routine
- ts_tick() Routine (View 2)
- rt_tick() Routine
- preempt() Routine
- CL_PREEMPT()
- setbackdq(kthread_t *tp)
- ts_preempt(tspp) Routine
- rt_preempt() Routine
- setfrontdq() and setbackdq() Routines
- disp() and swtch()
- disp() Routine
- dispgetwork()
- CMT
- Lesson Agenda
- Priority Inversion
- Callout Queue Processing
- Bounded Priority Inversion
- Unbounded Priority Inversion
- Priority Inheritance
- Blocking Chains
- turnstile_t Structure
- Practice 9 Overview: Scheduling
- Summary
Process Lifetime
- Objectives
- Lesson Agenda
- Process Creation Routines
- Process Structures
- Process Creation System Calls
- Fork Return values
- Fork Extensions
- posix_spawn(3C)Routine
- cfork()
- cfork() Routine
- getproc() and pid_allocate() Routines
- pid_allocate() Routine
- getproc() Routine (View 1)
- getproc() Routine (View 2)
- Process Structures After getproc()
- cfork() and as_dup() Routines
- Return to the cfork() Routine
- Process Structures After as_dup()
- forklwp()and lwp_create() Routines
- thread_create() Routine
- Process Structures After thread_create() and forklwp()
- cfork() and CL_FORKRET() Routines
- Return to cfork()
- Lesson Agenda
- exec Routines
- exec_common() Routine
- execsw Array
- gexec() Routine
- Executable and Linking Format (ELF)
- Elf32_Phdr Program Header Table
- Elf64_Phdr Program Header Table
- Process Segments
- elfexec() Routine
- elfexec() Routine (View 1)
- Auxiliary Vector
- elfexec() Routine (View 2)
- mapelfexec() Routine
- execmap() Routine
- The Initial Process Stack
- proc_exit(why, what) Routine
- waitid (idtype, id, ip, options) Routine
- waitid(idtype, id, ip, options) Routine
- waitid() Routine (View 1)
- waitid() Routine (View 2)
- Practice 10 Overview: Process Lifetime
- Summary
Signals
- Objectives
- Lesson Agenda
- Solaris 10 OS Signals
- Kernel Signal Bitmasks
- Kernel Signal Bitmask: k_sigset_t
- Interrupt and Trap Signals
- Lesson Agenda
- Signal Delivery
- Signal Actions
- Signal Actions: Ignoring
- Signal Actions: Holding
- Kernel-Signal-Related Variables
- Signal Mask Routines
- Assigning a Signal Disposition
- sigaction(sig, *actp, *oactp) System Call
- sigaction(sig, *actp, *oactp): System Call
- sigtoproc(p, t, sig) Routine
- issig(why) Routine
- issig_forreal() Routine
- fsig() Routine
- psig() Routine
- sendsig() Routine
- Calling the Handler
- Practice 11 Overview: Signals
- Summary
- A Appendix A
- A-2
- sysdc_update() A-3
- sysdc_update_pri() A-4
Related Courses
S Oracle Enterprise Manager Cloud Control 13c: Install & Upgrade Ed 2
In the Oracle Enterprise Manager Cloud Control 13c: Install &..
2 Days
5 Lectures
Oracle Database Appliance Release 18c Overview
This course provides an overview of Oracle Database Appliance Release..
2 Days
14 Lectures
Oracle Exadata Database Machine: Implementation and Administration
After completing this course, you should be able to: Describe..
5 Days
23 Lectures
Oracle Linux 8: System Administration I
The course covers the following topics: Install and complete initial..
5 Days
1 Lectures
Oracle Linux 8: System Administration II
The Oracle Linux 8: System Administration II course is designed..
5 Days
18 Lectures
Oracle Linux 8: System Administration III
This course teaches you how to administer and manage Oracle..