What kind of issues related to I/O does multiprogramming have?

  • Thread starter Thread starter Eus
  • Start date Start date
  • Tags Tags
    Issues
Click For Summary
Multiprogramming introduces several I/O management challenges, primarily due to the diverse nature of I/O devices, which can vary in speed, data representation, and transfer methods. I/O often becomes a bottleneck, as devices are significantly slower than processors and memory, making efficient resource management crucial. Implementing multiprogramming can improve efficiency by allowing processes to run while others wait for I/O, but it does not eliminate I/O efficiency issues, particularly with disk operations. Different I/O methods, such as interrupt-driven I/O and Direct Memory Access (DMA), have distinct advantages and drawbacks; DMA can be more efficient for large data transfers, while interrupt-driven I/O may be less problematic with modern fast processors. A layered I/O software system and buffering techniques are essential strategies to manage these complexities effectively.
Eus
Messages
93
Reaction score
0
Hi Ho!

When someone would like to implement a multiprogramming in a computer system, what kind of issues related to I/O does he have to consider?
Is there any difference between the implementation of multiprogramming in the system that uses interrupt driven I/O and the system that uses DMA?

I have never done any system programming so that I don't have any clue about the issues related to I/O in implementing multiprogramming. So, pointers to other resources would be very helpful.

Thank you.

Regards,
Eus
 
Computer science news on Phys.org
In general, it is well known that I/O management can be one of the messiest aspects of an operating system. I/O devices can be of various kinds i.e. either human readable (e.g. printers) , machine readable (e.g. disks, sensors)or for communication purposes (e.g. wired or wireless modems of various sorts, home routers etc.). All these devices are different in terms of data rate, unit of transfer (streams of bytes or blocks of characters), data representation etc. So, it is difficult to develop some uniform and consistent theory which covers every case and aspect. Also, as is widely known, the ways we can do I/O are programmed I/O, Interrupt-driven I/O and Direct Memory Access (DMA). Each of these has advantages and drawbacks depending on various factors.

I/O often forms a bottleneck in a computer system as I/O devices are slow (or very slow) compared with processor and main memory. One solution is multiprogramming, as it allows some processes waiting for I/O while others are running. So, we have a more efficient management of resources, but alone does not solve the above mentioned problem. There are still issues to be solved regarding the I/O efficiency. Disk operations is one very important of them.

During the years, I/O devices have become - and of course still do, faster and more efficient but an also important issue is providing a uniform and efficient way in handling them. One good strategy for this is hiding most of the details of device I/O in lower-level routines, so that processes and upper levels see devices in general terms such as read, write, etc. So, a layered I/O software system can serve this purpose, having layers (top to bottom): I/O user-level software, OS software (device independent) , Device Drivers, Interrupt Handlers, Hardware.

Also, buffering (single or double) is an important technique in order to avoid deadlocks among processes.

Now, above, I just briefly described a strategy for a system using interrupt driven I/O. For a system using DMA things go in a different way, as DMA module utilizes the system bus in order to transfer data and suspends the processor at some point. The net effect is delaying the processor to some degree. The importance of this effect really depends on the quantity of data, as for a multi-word transmission, DMA is far more efficient than interrupt driven I/O. But on the other hand, given today's very fast processors with multi cores, extremely efficient pipelining they are using etc., interrupt-driven I/O is far less of an issue than it was in the past.

There is a plenty of resources all over the net about multiprogramming in operating systems, which can be very easily found through google.
 
  • Like
Likes sysprog and Greg Bernhardt
Thread 'ChatGPT Examples, Good and Bad'
I've been experimenting with ChatGPT. Some results are good, some very very bad. I think examples can help expose the properties of this AI. Maybe you can post some of your favorite examples and tell us what they reveal about the properties of this AI. (I had problems with copy/paste of text and formatting, so I'm posting my examples as screen shots. That is a promising start. :smile: But then I provided values V=1, R1=1, R2=2, R3=3 and asked for the value of I. At first, it said...

Similar threads

Replies
2
Views
2K
  • · Replies 6 ·
Replies
6
Views
938
  • · Replies 19 ·
Replies
19
Views
4K
  • · Replies 1 ·
Replies
1
Views
555
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 10 ·
Replies
10
Views
3K
  • · Replies 2 ·
Replies
2
Views
1K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 10 ·
Replies
10
Views
2K
Replies
18
Views
2K