Skip to main content

Write an OS program to implement C-LOOK algorithm Disk Scheduling algorithm.



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

int main()
{
    int initial_head_pos, direction, num_requests,temp,total_seek=0,current_head_pos,n=0;
    float avg_seek_time;
   
    printf("Enter initial head position : ");
    scanf("%d",&initial_head_pos);
   
    printf("Enter the direction (0 for left 1 for right) : ");
    scanf("%d",&direction);
   
    printf("Enter the number of disk requests : ");
    scanf("%d",&num_requests);
   
    int request_queue[num_requests];
   
    printf("Enter the disk queue : ");
    for (int i=0;i<num_requests;i++)
    {
         scanf("%d",&request_queue[i]);
    }    
    for (int i=0;i<num_requests-1;i++)
    {
         for (int j=0;j<num_requests-1;j++)
         {
              if (request_queue[j]>request_queue[j+1])
              {
                  temp = request_queue[j];
                  request_queue[j]=request_queue[j+1];
                  request_queue[j+1]=temp;
              }
         }
    }
   
    int i;
    for (i=0;i<num_requests;i++)
    {
         if (request_queue[i]>=initial_head_pos)
         {
             n=i;
             break;

         }
    }
   
    current_head_pos=initial_head_pos;
   
    if (direction==1)
    {
        printf("Initial Head Position : %d\n",current_head_pos);
        for (int j=i;j<num_requests;j++)
        {
             total_seek+=abs(request_queue[j]-current_head_pos);
             current_head_pos = request_queue[j];
             printf("Head Moving towards %d\n",current_head_pos);
        }
        current_head_pos = request_queue[0];
       
        for (int j=1;j<n;j++)
        {
             printf("Head Moving towards %d\n",current_head_pos);
             total_seek+=abs(request_queue[j]-current_head_pos);
             current_head_pos=request_queue[j];
             
        }
        printf("Head Moving towards %d\n",current_head_pos);
    }
    else
    {
        printf("Initial Head Position : %d\n",current_head_pos);
        for (int j=i-1;j>=0;j--)
        {
             printf("Head Moving towards %d\n",current_head_pos);
             total_seek+=abs(request_queue[j]-current_head_pos);
             current_head_pos=request_queue[j];
             
        }
        current_head_pos = request_queue[num_requests-1];
        for (int j=num_requests-1;j>=n;j--)
        {
             printf("Head Moving towards %d\n",current_head_pos);
             total_seek+=abs(request_queue[j]-current_head_pos);
             current_head_pos = request_queue[j];
             
        }
        printf("Head Moving towards %d\n",current_head_pos);
       
    }
    printf("Total seek movement : %d\n",total_seek);
   
    return 0;
}


/**

ty56@pc16:~/ty56/ty_OS2_56/Assignment 3$ cc clook.c
ty56@pc16:~/ty56/ty_OS2_56/Assignment 3$ ./a.out
Enter initial head position : 53
Enter the direction (0 for left 1 for right) : 0
Enter the number of disk requests : 7
Enter the disk queue : 82
170
43
140
24
16
190
Initial Head Position : 53
Head Moving towards 53
Head Moving towards 43
Head Moving towards 24
Head Moving towards 190
Head Moving towards 190
Head Moving towards 170
Head Moving towards 140
Head Moving towards 82
Total seek movement : 145
ty56@pc16:~/ty56/ty_OS2_56/Assignment 3$


ty56@pc16:~/ty56/ty_OS2_56/Assignment 3$ cc clook.c
ty56@pc16:~/ty56/ty_OS2_56/Assignment 3$ ./a.out
Enter initial head position : 53
Enter the direction (0 for left 1 for right) : 1
Enter the number of disk requests : 7
Enter the disk queue : 82
170
43
140
24
16
190
Initial Head Position : 53
Head Moving towards 82
Head Moving towards 140
Head Moving towards 170
Head Moving towards 190
Head Moving towards 16
Head Moving towards 24
Head Moving towards 43
Total seek movement : 164


**/

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 ;           ...

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...

) Create the following GUI screen using appropriate layout managers. Accept the name, class , hobbies of the user and apply the changes and display the selected options in a text box.

  import javax.swing.*; import java.awt.*; import java.awt.event.*; class Swing2 extends JFrame implements ActionListener {     JLabel l1 , l2 , l3 ;         JButton b ;         JRadioButton r1 , r2 , r3 ;         JCheckBox c1 , c2 , c3 ;         JTextField t1 , t2 ;         ButtonGroup b1 ;         JPanel p1 , p2 ;     static int cnt ;         private StringBuffer s1 = new StringBuffer ();                 Swing2 ()         {                             b1= new ButtonGroup ();                 p1= new JPanel ();                 p2= new JPanel ();               ...