0
$\begingroup$

Whats the diffrence between Disk scheduling and process scheduling? I mean i know the roles of disks and processes, but it seems to me they both have the same aim. to reduce monopolies, they even both share similar algorithms like first come first serve. Am i right?

$\endgroup$
  • $\begingroup$ With current disks having cache and sector substitution, disk scheduling is done inside the disk hardware and has no more interest at the OS level. $\endgroup$ – AProgrammer May 6 '13 at 13:10
  • $\begingroup$ @AProgrammer: who do you think designs the disk scheduling algorithm in the hardware? The course at university where you learn about disk scheduling is still the OS course. $\endgroup$ – Wandering Logic May 7 '13 at 13:05
  • $\begingroup$ @WanderingLogic, disk scheduling is done in software packaged with the disk (aka firmware). Considering that disks now (and that's not news) have cache, do bad sector replacement on the fly (and do dynamic bad sector detection) and AFAIK don't provide geometry information to the OS, usefulness of disk scheduling in the OS is reduced. But... $\endgroup$ – AProgrammer May 7 '13 at 13:33
  • $\begingroup$ ... it probably still is useful to do some scheduling using sane assumptions if you have throughput needs high enough that the disk cache isn't big enough to reorder in the best way. And obviously, disk scheduling in the OS is needed if you want to do some arbitration between processes. $\endgroup$ – AProgrammer May 7 '13 at 13:35
  • $\begingroup$ Those of us who know anything about scheduling algorithms watch the [operating-systems] tag, so the question is correctly tagged. The fact that some scheduling algorithms are now stored in disk firmware (the definition of which is: "system software stored in a ROM") is completely irrelevant to the question or the tag. $\endgroup$ – Wandering Logic May 7 '13 at 14:56
0
$\begingroup$

This is part of a bigger concept called "caching". When you run a program, we would like to have it in CPU registers because is the fastest memory, but that is very expensive, so the programs (processes) are sent to RAM (also we would like to run many processes, more than the registers may keep). RAM soon or later will be full, we need to keep more programs on memory, so the next caching level is send the processes that aren't being used from RAM to disk.

  • The disk scheduling then consist in send to disk the processes that are not being used right now, but someday they will.
  • The process scheduling allows you to use many programs and apps in a "paralell" way (you see that everything is executing at the same time, but is just an illusion).

In fact as you mention, some algorithms are used for both functions, and I think it's because in both case you have to decide what are you going to use and bring it.

So the goal is sightly different, but uses the same ideas.

$\endgroup$
1
$\begingroup$

Disk scheduling has an additional physical constraint. Accelerating and moving the disk head takes times in the msec range. Wikipedia says average seek times are around 10 msec (to move halfway across the radius of the disk) and the time to move just to the adjacent track is about .5 msec. Thus an algorithm like FIFO might be reasonable for process scheduling because it would deliver about the same compute throughput as any other scheduling algorithm, but FIFO would be a disaster for disk scheduling.

You are not correct that the primary objective of either disk scheduling or process scheduling is "to reduce monopolies". In real time process scheduling, for example, the primary objective is to make sure that processes with lower priority never run when there is a higher priority process available.

There are things that are worse than monopolies on workstations too. If you are time sharing between some number of processes that are consuming so much VM that you are thrashing then no-one is getting any service, and you are better off being less fair (swapping out processes until the ones that are left can get some CPU service and hopefully finish.)

Finally, most real operating systems try to give priority to "interactive" processes. But you can't figure out which processes are interactive until you've seen them running. So you use an algorithm like Corbato's Multi-level feedback queue.

Edit: I forgot to mention that disk scheduling algorithms are often variants of the elevator scheduling algorithm. This moves the disk head in one direction, doing requests in the order that they lie on the disk. The objective in the elevator algorithm is to maximize throughput while putting a bound on unfairness.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.