Bootable Programs

Building an O/S

Basic Requirements of any O/S
• Respond to interrupts (all kinds) • Preserve user environment • Protect users and self from corruption • Handle I/O errors • Handle user errors

Responding to ANY interrupt
• Hardware loads a pre-defined state vector
– Context switch occurs – NSI is inside kernel at primary interrupt handler

• Primary handler determines type of interrupt
– – – – I/O completion Service call Program error Paging/addressing exception

• Save user’s environment (stack,

Detail interrupt handler
• Take required action
– All instructions valid – Must not cause another interrupt
• Therefore must not do I/O - one exception:
– Handling I/O errors may require I/O to device – Interrupt for this 2ndary I/O must be deleted

• Must allow for all possible (and improbable) errors

• Return to common return point

Common return to user
• Determine next thread/process to run – New user – Interrupted user • Locate PCB/TCB for selected user • Prep state vector, could be: – Old vector (in reserved RAM) from previously interrupted program – New vector data determined for a new program • Save kernel’s registers in reserved storage • Restore user’s registers & stack from PCB/TCB • Load prepared state vector for user • Context switch occurs

SOS
• A Small Operating System • “built-in” user command-line shell • Written in z/390 assembler language
– 32-bit mode – Runs in a z/390 virtual machine

• You will
– Modify it to provide service call handling – Install it as a bootable program – Boot it – Test it

SOS – bootable drive
• Virtual device at address 222 • Preformatted as a CMS disk
– Simplifies putting programs on the drive – Reserved space for the bootable program (SOS) – Boot loader (IBM supplied) installed by student – Allows seeing disk content from CMS shell

SOS – original contents
• Device address discovery
– Operator’s terminal – Boot drive

• Locate volume TOC • Locates file directory • Displays content of directory in hexadecimal • Terminates

SOS - Lab 1
• Copy the SOSSAMP file to your “adisk” • Rename it to: SOS • Assemble it using HLASM • Prepare the bootable drive • Boot it

SOS – Lab 2
• Add “shell” code to the single compile • Add state-vector loading to “activate” shell • Shell displays your prompt, waits for input • Shell issues SVC n in response to input
– 0<= n <= 7 – See lab assignment for details

• SOS gets control and performs service “n” • SOS
– returns control to shell

Sign up to vote on this title
UsefulNot useful