>



Device Manager



Handles Terminal I/O and Disk operations (Load and Store).



Function Number Function Name Arguments Return Value
DISK_STORE = 1 Disk Store PID, Page Number, Block Number NIL
DISK_LOAD = 2 Disk Load PID, Page Number, Block Number NIL
TERMINAL_WRITE = 3 Terminal Write PID, Word NIL
TERMINAL_READ = 4 Terminal Read PID, Address NIL


Disk Store

Description : Stores the contents of the page into the disk block. A valid PID as input is assumed.

    Acquire the lock on the disk device by calling the Acquire_Disk() function
    in the Resource Manager module;
    
    Set the LOAD/STORE BIT, PAGE NUMBER and BLOCK NUMBER in the Disk Status Table.

    Use the store statement to store the memory page to disk;
    
    Set the state as (WAIT_DISK, - );
    
    Call the switch_context() function from the Scheduler Module.
    
    return;
Called by Shutdown, Buffer Read and Buffer Write.

Disk Load

Description : Loads the contents of the disk block to the page. A valid PID as input is assumed.

    Acquire the lock on the disk device by calling the Acquire_Disk() function
    in the Resource Manager module;
    
    Reset the LOAD/STORE BIT, set PAGE NUMBER and BLOCK NUMBER in the Disk Status Table.

    Use the load statement to load the disk block to memory;
    
    Set the state as (WAIT_DISK, - );
    
    Call the switch_context() function from the Scheduler Module.
    
    return;
Called by the Buffer Read, Buffer Write functions, exec system call (to load the first code page) and the exception handler (demand paging).

Note: The bootstrap code must use loadi statement and not this function.

Terminal Write

Description : Reads a word from the Memory address provided to the terminal. Assumes a valid PID is given.

    Acquire the lock on the terminal device by calling the Acquire_Terminal() function
    in the Resource Manager module;
    
    Use the print statement to print the contents of the word
    to the terminal;

    Release the lock on the terminal device by calling the Release_Terminal() function
    in the Resource Manager module;
  
    return;
Called by the Write system call.

Terminal Read


Description : Reads a word from the terminal and stores it to the memory address provided. Assumes a valid PID is given.

    Acquire the lock on the disk device by calling the Acquire_Terminal() function
    in the Resource Manager module;
    
    Use the read statement to read the word from the terminal;
    
    Set the state as (WAIT_TERMINAL, - );
    
    Call the switch_context() function from the Scheduler Module.

    Copy the word from the Input Buffer of the Process Table of the process corresponding to PID
    to the memory address provided.
    
    return;
Note: The Terminal Interrupt Handler will transfer the contents of the input port P0 to the Input Buffer of the process.
Called by the Read system call.