Skip to main content

Write an OS program to implement C-SCAN algorithm Disk Scheduling algorithm



 #include<stdio.h>
#include<stdlib.h>

int main()
{
    int RQ[100],i,j,n,TotalHeadMoment=0,initial,size,move;
    printf("Enter the Number of Requests : ");
    scanf("%d",&n);
    printf("Enter the request sequence : ");
    for (i=0;i<n;i++)
         scanf("%d",&RQ[i]);
    printf("Enter initial head position : ");
    scanf("%d",&initial);
    printf("Enter total disk size : ");
    scanf("%d",&size);
    printf("Enter the head movement direction for high 1 and for low 0 : ");
    scanf("%d",&move);
    for (i=0;i<n;i++)
    {
        for (j=0;j<n-i-1;j++)
        {
            if (RQ[j]>RQ[j+1])
            {
               int temp;
               temp=RQ[j];
               RQ[j]=RQ[j+1];
               RQ[j+1]=temp;
            }
        }
    }
 
    int index;
    for (i=0;i<n;i++)
    {
        if (initial<RQ[i])
        {
           index=i;
           break;
        }
    }
 
    if (move==1)
    {
        for (i=index;i<n;i++)
        {
            printf("Servicing request : %d\n",RQ[i]);
            TotalHeadMoment=TotalHeadMoment+abs(RQ[i]-initial);
            initial=RQ[i];
        }
        printf("Servicing request : %d\n",size);
        TotalHeadMoment=TotalHeadMoment+abs(size-RQ[i-1]-1);
        TotalHeadMoment=TotalHeadMoment+abs(size-1-0);
        initial=0;  
        for (i=0;i<index;i++)
        {
            printf("Servicing request : %d\n",RQ[i]);
            TotalHeadMoment=TotalHeadMoment+abs(RQ[i]-initial);
            initial=RQ[i];
        }
    }
    else
    {
        for (i=index-1;i>=0;i--)
        {
             printf("Servicing request : %d\n",RQ[i]);
             TotalHeadMoment=TotalHeadMoment+abs(RQ[i+1]-0);
             TotalHeadMoment+=abs(size-1-0);
             initial=size-1;
        }
       
        for (i=n-1;i>=0;i--)
        {
             printf("Servicing request : %d\n",RQ[i]);
             TotalHeadMoment=TotalHeadMoment+abs(RQ[i]-initial);
             initial=RQ[i];
        }
    }
 
    printf("\nTotal head movement is %d\n",TotalHeadMoment);
    return 0;
}    

/**
ty56@pc16:~/ty56/ty_OS2_56/Assignment 3$ cc cscan.c
ty56@pc16:~/ty56/ty_OS2_56/Assignment 3$ ./a.out
Enter the Number of Requests : 8
Enter the request sequence : 98
183
41
122
14
124
65
67
Enter initial head position : 53
Enter total disk size : 200
Enter the head movement direction for high 1 and for low 0 : 1
Servicing request : 65
Servicing request : 67
Servicing request : 98
Servicing request : 122
Servicing request : 124
Servicing request : 183
Servicing request : 200
Servicing request : 14
Servicing request : 41

Total head movement is 386

**/                
       
   

Comments

Popular posts from this blog

Write a program to read book information (bookid, bookname, bookprice, bookqty) in file “book.dat”. Write a menu driven program to perform the following operations using Random access file: i. Search for a specific book by name. ii. Display all book and total cost

  import java . io .*; import java . util .*; class Book {       String name , id ;       int qty ;       double price , total ;       Book ( String i , String n , String p , String q )      {               name = n ;               id = i ;               qty = Integer . parseInt ( q );               price = Double . parseDouble ( p );               total = qty * price ;      }       public String toString ()      {               System . out . println ( "name\t id\t qty\t price\t total" );               String s = name + "\t" + id + "\t" + qty + "\t" + price + "\t" + total ;           ...

Define a class MyDate (day, month, year) with methods to accept and display a MyDate object. Accept date as dd, mm, yyyy. Throw user defined exception “InvalidDateException” if the date is invalid. Examples of invalid dates : 03 15 2019, 31 6 2000, 29 2 2021

  import java . io .*; import java . util .*; class InvalidDateException extends Exception {       InvalidDateException ()       {               System . out . println ( "Invalid Date" );       } } class MyDate {       int day , mon , yr ;       void accept ( int d , int m , int y )       {             day = d ;             mon = m ;             yr = y ;       }       void display ()       {             System . out . println ( "Date is valid : " + day + "/" + mon + "/" + yr );       } } class Date {       public static void main ( String args []) throws Exception       {             Scanner sc = new Sca...

Write a Java program to design a screen using Awt that will take a user name and password. If the user name and password are not same, raise an Exception with appropriate message. User can have 3 login chances only. Use clear button to clear the TextFields.

  import java . awt .*; import java . awt . event .*; import javax . swing .*; class InvalidPasswordException extends Exception {       InvalidPasswordException ()       {             System . out . println ( "Username and password is not same" );       } } public class Password extends Frame implements ActionListener {       Label uname , upass ;       TextField nametext ;       TextField passtext , msg ;       Button login , Clear ;       Panel p ;       int attempt = 0 ;       char c = '*' ;             public void login ()       {             p = new Panel ();             uname = new Label ( "Username : " , Label . CENTER );             upass = n...