You are on page 1of 49

Chapter 15

Linux Operating Systems

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
1
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Learning Objectives
After completing this chapter, you should be able to describe:
• How the Linux operating system is designed
• How the Linux community keeps the software up-to-date
• The roles of the Memory, Device, File, Processor, and Network Managers
• How the strengths and weaknesses of Linux compare
• The role of software creator Linus Torvalds

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
2
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Introduction
• Linux
o Originally based on a version of UNIX
o Powerful
o Inexpensive or free to use
• Portable
o Versions for cell phones, supercomputers, and computing systems in between
• Open source
o Source code freely available to anyone for improvement
o Under constant development
o Contributors around the world: not paid for their work

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
3
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Brief History (1 of 3)
• Developed by Linus Torvalds (1991)
• Original purpose
o Maximize Intel 80386 microprocessor’s limited capabilities
o Roots
• MINIX: miniature UNIX with more functionality
• First version meant for small microcomputer
o Expensive commercial computer features
• Flexibility and functionality
o Brought UNIX features to small computer

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
4
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Brief History (2 of 3)
• User interface
o First Linux operating systems: command-driven interface
• Sometimes cryptic commands
o Recent years
• Graphical user interfaces (GUI)
• Written and distributed under the GNU General Public License
• Fedora Project responsible for the open-source development of the Linux
kernel

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
5
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Brief History (3 of 3)
(table 15.1)
Selected releases of Ubuntu Linux. Standard Ubuntu releases are scheduled every six months and are
supported for about nine months. Ubuntu LTS releases are supported for five years on both desktop and
server versions. Releases before 2010 may have had a different length of support. (Adapted from
https://www.ubuntu.com/info/release-end-of-life.)
© Cengage Learning 2018
Version Code Name Release Date End-of-Life Date
Ubuntu 10.04 LTS Lucid Lynx 2010 2015
Ubuntu 12.04 LTS Precise Pangolin 2012 2017
Ubuntu 13.10 Saucy Salamander 2013 2014
Ubuntu 14.04 LTS Trusty Tahr 2014 2019
Ubuntu 15.10 Wily Werewolf 2015 2016
Ubuntu 16.04 LTS Xenial Xerus 2016 2021
Ubuntu 18.04 LTS * 2018 2023

*As of this writing, a code name has not been released for version 18.04 LTS.
Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
6
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Design Goals (1 of 3)
• Three goals
o Modularity
o Simplicity
o Portability
• Numerous standard utilities
o Eliminate need to write special code
o Used in combination for specific tasks
• Numerous functions
• IEEE POSIX (Portable Operating System Interface) specifications conformity
o Programs’ portability

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
7
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Design Goals (2 of 3)
(table 15.2)
Select system functions supported by Linux.
© Cengage Learning 2018

Function Purpose
Multiple processes and multiple processors Linux can manage numerous processes and CPUs.
Multiple platforms Although it was originally developed to run on Intel's
processors for microcomputers, versions can now
operate on almost every platform.
Multiple users Linux allows multiple users to work on the same
machine at the same time.
Interprocess communications It supports pipes, sockets, and more.
Terminal management It conforms to POSIX standards, and also sup-ports
pseudo-terminals as well as process control systems.

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
8
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Design Goals (3 of 3)
(table 15.2)
Select system functions supported by Linux.
© Cengage Learning 2018

Function Purpose
Peripheral devices Linux supports a wide range of devices, including sound cards,
graphic interfaces, networks, SCSI, USB, and so on.
Buffers Linux supports a memory area reserved to buffer the input and
output from different processes.
Demand paging memory management Linux loads pages into memory only when they're needed.
Dynamic and shared libraries Dynamic libraries are loaded in Linux only when they're needed,
and their code is shared if several applications are using them.
Disk partitions Linux allows file partitions and disk partitions with different file
formats.
Network protocols It supports TCP/IP and other network protocols.

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
9
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Memory Management (1 of 5)
• Space allocation
o Kernel: 1 GB high order memory
o Executing processes: 3 GB memory
• Process execution
o Fixed-size segment
o System calls change segment size
• Memory protection
o Based on information type stored in address space region for process

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
10
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Memory Management (2 of 5)
• Page loading
o Least recently used algorithm (LRU)
o Maintains a dynamically managed memory area and page cache (new and old
pages inserted and deleted)
• System page tables
o Track free and busy pages
o Added flexibility with swap devices
• Virtual memory
o Managed using multiple-level table hierarchy
• 64- and 32-bit architectures

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
11
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Memory Management (3 of 5)
(figure 15.4)
Virtual memory management uses three
levels of tables—Page Directory, Page
Middle Directories, and Page Tables—to
locate the page frame with the requested
instruction or data.
© Cengage Learning 2018

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
12
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Memory Management (4 of 5)
• Buddy algorithm
o Groups and splits into equal-sized page frames
• Gives more contiguous space to job
• Page replacement algorithm
o Clock page replacement policy: expanded version
o Uses eight-bit byte to track page’s activity: “age”
o Page swap based on form of least frequently used (LFU) replacement policy

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
13
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Memory Management (5 of 5)
(figure 15.5)
Main memory is divided to accommodate jobs of different sizes. These 32 page frames in main memory
(a) are divided in half (b) to allow Job 1 to begin. In (c), a second group of 16 page frames is divided in
half to allocate 8 page frames to Job 2. In (d), after Job 2 finishes, the top two sets of page frames, which
are now empty, are combined into a single group of 16; and Job 1 continues processing.
© Cengage Learning 2018

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
14
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Processor Management
• Uses same parent-child process management design found in UNIX
• Supports “personality” concept
o Allows processes from other operating systems to be executed

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
15
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Process Table Organization
• Descriptor: referencing process
o Contains approximately 70 fields: describe process attributes
o Includes information needed to manage process
o Dynamically allocated by kernel
• Process execution time
o Organized by doubly linked lists
• “Next run” field
• “Previously run” field
o Scheduler manages and updates descriptors using macros

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
16
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Process Synchronization
• Wait queues and semaphores
o Synchronize two processes with each other
• Wait queue
o Linked circular list of process descriptors
o Problems solved
• Mutual exclusion and producers and consumers
• Semaphore structure
o Three fields (semaphore counter, number of waiting processes, list of processes
waiting for semaphore)
• Counter contains only binary values: except if several units of one resource available

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
17
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Process Management (1 of 4)
• Linux scheduler
o Scans processes list in READY state
o Chooses process to execute
• Using predefined criteria
• Four scheduling types
o Real-time processes (three)
o Normal processes (one)
• Process scheduling policy determination
o Combination of type and priority

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
18
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Process Management (2 of 4)
(table 15.3)
Each Linux process type signals a different level of priority.
© Cengage Learning 2018

Name Scheduling Policy Priority Level Process Type


SCHED_DEADLINE Earliest Deadline First Varies Processes in real-time
environments
SCHED_FIFO First-In, First-Out Highest For non-preemptible real-time
processes
SCHED_RR Round Robin and Medium For preemptible real-time
Priority processes
SCHED_OTHER Priority Only Lowest For normal processes

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
19
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Process Management (3 of 4)
• First type
o SCHED_DEADLINE
• Real-time systems that must meet critical deadlines
o Highest priority (SCHED_FIFO)
• First in, first out algorithm
o Cannot be preempted
o Runs to completion unless:
• Process goes into WAIT state
• Process relinquishes processor voluntarily
o All FIFO processes complete
• Scheduler processes lower priority types

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
20
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Process Management (4 of 4)
• Second type
o Medium priority (SCHED_RR)
• Round robin algorithm with small time quantum
o Time quantum expires
• Other higher priority processes (FIFO, RR ) selected and executed: before first
process allowed to complete
• Third type
o Low priority (SCHED_OTHER)
o Executed if no higher priority processes in READY queue

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
21
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Device Management
• Device independent
o Improves portability
• Device drivers
o Supervise data transmission
• Between main memory and peripheral unit
• Devices assigned
o Name
o Descriptors
• Further identify each device
• Stored in device directory

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
22
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Device Classifications (1 of 2)
• Device identification
o Minor device number
• Passed to device driver as an argument
• Accesses one of several identical physical devices
o Major device number
• Index to array to access appropriate code
• Configuration table for each class
o Entry point into driver
o Only connection between system code and driver
o Importance
• Allows programmers quick creation of device drivers

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
23
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Device Classifications (2 of 2)
(figure 15.6)
From the /dev directory listing, the major and minor numbers are shown in the middle of the row
separated by a comma. For the first line item in this list, the major number is 10 and the minor number is
175.
© Cengage Learning 2018

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved. 24
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Device Drivers (1 of 3)
• Support for standard classes introduced by UNIX
• Allow new device classes supporting new technology
• Device classes not rigid
o Creating large, complex, and multiple function drivers is discouraged because:
• Users share code: wider demand for simple drivers
• Modular code supports system scalability and extendibility goals
o Encouraged: drivers maximizing system’s effective device usage
• Notable feature
o Accept new device drivers on the fly
• System up and running
• No reboot necessary

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
25
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Device Drivers (2 of 3)
• Open and release: functions performed when opening a device
o Verify that the device is available and in working order
o Increase usage counter for the device by 1: alert the subsystem that the module
cannot be unloaded until its file is appropriately closed
o Initialize the device: old data is removed and the device is ready to accept new
data
o Identify the minor number and update the appropriate pointer if necessary
o Allocate any appropriate data structure

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
26
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Device Drivers (3 of 3)
• Open and release: functions performed when releasing a device
o Deallocate any resources allocated with the open function
o Shut down the device
o Reduce usage counter by 1 so the device can be released to another module

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
27
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Device Classes (1 of 4)
• Three standard classes
o Character devices
o Block devices
o Network devices

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
28
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Device Classes (2 of 4)
(figure 15.7)
This example of the three primary classes of
devices, and three typical devices in those
classes, shows how device drivers receive
direction from different Linux subsystems.
© Cengage Learning 2018

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
29
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Device Classes (3 of 4)
• Character devices
o Accessed as a stream of bytes
• Communications port, monitor, or other byte-stream-fed device
o Implement open, release, read, and write system calls
o Accessed by file system nodes
• Look like ordinary data area
o Drivers treated as ordinary files
• Exception: drivers are data channels accessed sequentially

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
30
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Device Classes (4 of 4)
• Block devices
o Host a file system (e.g., hard disk)
o Accessed by file system nodes in /dev directory
• Transfer in blocks of data
o Similarity to char driver
• Appear as ordinary files
o Dissimilarity to char driver
• Access file system in connection with device (not possible with char device)
• Network devices
o Function
• Send and receive information packets
• Directed by network subsystem
o Network device functions
• Relate to packet transmission

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
31
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
File Management
• Very similar to UNIX
o Easy transition for programmers and administrators who are familiar with one
operating system to move to the other
• Files organized in directories
o Connected in treelike structure

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
32
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
File Organization
(figure 15.9)
A sample top-down file hierarchy. The forward
slash (/ ) at the top of the figure represents the
root directory.
© Cengage Learning 2018

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
33
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Filename Conventions (1 of 3)
• Case sensitive
o Recognizes uppercase and lowercase letters
• Up to 255 characters long
• Contain alphabetic characters, underscores, and numbers
• File suffixes: optional
• Can include space
o Complications if running command-line programs
• File hierarchy
o First slash indicates an absolute path name

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
34
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Filename Conventions (2 of 3)
• Path name rules
1. Path name starting with slash: begins at root directory
2. Path name
• One name or list of names separated by slashes
• Last name on list: name of file requested
3. Two periods (..) in path name
• Move upward in hierarchy: closer to root
• Only way to go up the hierarchy

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
35
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Filename Conventions (3 of 3)
• Virtual File System (VFS)
o Kernel
• Allows processes to access files in a consistent manner
• Maintains interface between file-related system calls and file management code
o Virtual file system layer
• Receives process-initiated system call to files
• Performs file operations independent of file system format
• Redirects request to module managing the file

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
36
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Updates and New Versions (1 of 2)
• Linux operating systems: patched between version releases
o Downloaded on request or
o System setup checks for available updates
• Patch management
o Replaces or changes parts of the operating system that need to be enhanced or
replaced

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
37
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Updates and New Versions (2 of 2)
• Reasons for operating system patches
o Security precautions: constantly changing system threats
o System compliance: government regulations regarding privacy and financial
accountability
o Peak efficiency
• System manager must:
o Maintain vigilance: security vulnerabilities
o Assess patch’s criticality
• If important, apply immediately

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
38
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
User Interfaces
• Early Linux versions
o Required typed commands
• Thorough knowledge of valid commands required
• Current versions
o Include powerful and intuitive menu-driven interfaces
o Can still use Terminal mode
• Type commands similar to those used for UNIX
o Several graphical user interfaces available
• Many Linux versions
o Equipped with Windows-compatible word processors, spreadsheet, and
presentation applications

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
39
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
System Monitor
• System Monitor window
o Moment-by-moment system status
• Immediate history: CPUs, memory, and network usage
o Other information
• Supported file systems
• Currently running processes information

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
40
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
System Logs (1 of 3)
• Provide detailed description of activity on system
• Invaluable to administrators
o Tracking system malfunction
o Firewall failure
o Disabled device
• Found in /var/log directory
• Seen using a log viewer

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
41
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
System Logs (2 of 3)
(figure 15.13)
This dpkg.log viewer shows details of recent system installation and upgrade activity.
© Cengage Learning 2018

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
42
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
System Logs (3 of 3)
(table 15.6)
A few of the many available Linux log files. To explore your system, see the system documentation.
© Cengage Learning 2018

File Purpose
auth.log Lists the system authorization information.
boot.log Stores messages on which systems have successfully started up and shut
down, as well as any that have failed to do so.
dpkg.log Displays details of system installations and software updates.
kem.log A list of messages created by the kemel when the system starts up.
maillog Stores the addresses that received and sent e-mail messages in order to
detect the misuse of the e-mail system.
secure Contains lists of all attempts to log into the system, including the date, time,
and duration of each access attempt.
Adapted from https://help.ubuntu.com/community/LinuxLogfiles.
Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
43
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
File Listings (1 of 4)
(figure 15.14)
This folder listing shows directories in the left-most column and the contents of the current folder, pictures,
in the window on the right.
© Cengage Learning 2018

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
44
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
File Listings (2 of 4)
• Explore directory’s or file’s contents
o Double click its icon
• Establish the directory’s or file’s access control settings
o Right click on item’s icon
• Terminal window
o Display directory details: type command ls −l
• Network administrators
o Full control: manage access to files and directories

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
45
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
File Listings (3 of 4)
(figure 15.15)
Directory details, shown here in terminal mode, are shown in standard UNIX/Linux format with
permissions for each directory and file shown in the left-most column.
© Cengage Learning 2018

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
46
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
File Listings (4 of 4)
(figure 15.16)
Access to this file can be restricted by using the document’s Properties option.
© Cengage Learning 2018

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
47
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Conclusion (1 of 2)
• Originally designed to gain more power from a 1990s computer
o Evolved into powerful, flexible operating system: runs supercomputers, cell
phones, and many other devices
• Unparalleled popularity among programmers
o Contribute standard code set enhancements
• Supports broad range of applications
o Available for minimal cost and easy to install
o Growing acceptance among non-programmers

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
48
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Conclusion (2 of 2)
• Large organizations
o Commercial Linux products available
• Viable marketplace player
o Popularity expected to grow for many years
o Android operating system foundation

Mchoes/Flynn, Understanding Operating Systems, 8th Edition. © 2018 Cengage. All Rights Reserved.
49
May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

You might also like