Chapter-13 Secondary Storage Management

Download Report

Transcript Chapter-13 Secondary Storage Management

13.6
Representing Block and Record Addresses
Deepika Verma
CS257 Section 1
ID: 106
Outline
 13.6.1 Addresses in Client-Server Systems
 13.6.2 Logical and Structured Addresses
 13.6.3 Pointer Swizzling
 13.6.4 Returning Blocks to Disk
 13.6.5 Pinned Records and Blocks
 13.6.6 Exercises for Section 13.6
Introduction
 Address of a block and Record
 In Main Memory
 Address of the block is the virtual memory address of the first
byte
 Address of the record within the block is the virtual memory
address of the first byte of the record
 In Secondary Memory
 Sequence of Bytes describe the location of the block : the
device Id for the disk, Cylinder number, etc.
13.6.1 Addresses in Client-Server
Systems
 Physical Addresses:
 Byte strings referring to the place within the secondary storage
system where the record can be found.
 Physical Address bits are used to indicate:





Host to which the storage is attached
Identifier for the disk
Number of the cylinder
Number of the track
Offset of the beginning of the record
 Logical Addresses:
 arbitrary string of bytes of some fixed length that maps to physical
address
Map Table
 Stored on disk in a known location, relates logical addresses to
physical addresses.
Logical
Physical
Logical Address
Physical Address
13.6.2 Logical and Structured
Addresses
 Purpose of logical address:
 Gives more flexibility, when we
 Move the record around within the block
 Move the record to another block
 Easy updating of records
 Structured address
 Gives us an option of deciding what to do when a record is deleted
Unused
Record 4
Offset table
Header
Record 3
Record 2
Record 1
13.6.3 Pointer Swizzling
 Having pointers is common in an object-relational database
systems
 Every data item (block, record, etc.) has two addresses:
 database address: address on the disk
 memory address, if the item is in virtual memory
 When block is moved from secondary storage to main memory
pointers within block are “swizzled”,i.e translated from database
address space (Server) to virtual address space (Client)
Pointer Swizzling (Contd…)
 Translation Table: Maps database address to memory address
Dbaddr
Mem-addr
Database address
Memory Address
 All addressable items in the database have entries in the map table,
while only those items currently in memory are mentioned in the
translation table
Pointer Swizzling (Contd…)
 Pointer consists of the following two fields
 Bit indicating the type of address
 Database or memory address
Disk
 Example 13.17
Memory
Swizzled
Block 1
Block 1
Unswizzled
Block 2
Example 13.7
 Block 1 has a record with pointers to a second record
on the same block and to a record on another block
 If Block 1 is copied to the memory
 The first pointer which points within Block 1 can be
swizzled so it points directly to the memory address of
the target record
 Since Block 2 is not in memory, we cannot swizzle the
second pointer
Types of Swizzling
 Automatic Swizzling
 As soon as block is brought into memory, swizzle all
relevant pointers.
 Swizzling on Demand
 Only swizzle a pointer if and when it is actually followed.
 No Swizzling
 Pointers are not swizzled they are accesses using the
database address.
Programmer Control of Swizzling
 Unswizzling
 When a block is moved from memory back to disk, all
pointers must go back to database (disk) addresses
 Use translation table again
 Important to have an efficient data structure for the
translation table
13.6.4 Returning Blocks to Disk
 When a block is moved from memory back to disk,
any pointers within that block must be unswizzled,
i.e. memory address must be replaced by database
address.
13.6.5 Pinned records and Blocks
 A block in memory is said to be pinned if it cannot be
written back to disk safely
 If block B1 has swizzled pointer to an item in block B2,
then B2 is pinned
 Unpin a block, we must unswizzle any pointers to it
 Keep in the translation table the places in memory
holding swizzled pointers to that item
 Unswizzle those pointers (use translation table to
replace the memory addresses with database (disk)
addresses
Thank You