<div id="popup_box_thanks" style="display:none" onClick="close_popup_thanks('popup_box_thanks', 'ts')"><br>Thanks for submitting your tip! All submissions are moderated by an editor before appearing online. We've reset the form so you can enter another tip. Or you can close the tip submission box. <div class="x_close" id="thanks_upper_right"><a href="javascript:void(0)" onmousedown="close_popup_thanks('popup_box_thanks', 'ts'); return true;">Close</a></div></div>
<div class="tbf_row"><div class="tbf_wide_extra_top not_bold">Please submit only technical tips that will help other TidBITS readers better use their Macs, iPhones, and related software and hardware. All product announcements should be sent to <a href="mailto:releases@tidbits.com">releases@tidbits.com</a>.</div></div>
<div class="tbf_left">URL</div><div class="tbf_right"><input type="text" value="" name="tip_link_url" tabindex="3"><span class="tip_description"><br>Enter the URL to a Web page that supports your tip.</span></div>
</div>
<div class="spacer"></div>
<div class="tbf_row">
<div class="tbf_left">Linked text</div><div class="tbf_right"><input type="text" value="" name="tip_link_label" tabindex="4"><span class="tip_description"><br>Enter the name of the page linked above.</span></div>
<div class="tbf_wide"><input type="submit" value="Preview Your Tip" name="preview_tip" onClick="fill_preview('tipbits_enclosure_preview', 'ts', this.form); return false;" tabindex="7"> <input type="submit" value="Send Us Your Tip!" name="submit_this_tip" onClick="handle_tip_submission('ts', '', this.form, 'tip'); return false;" tabindex="8"></div>
</div>
<div class="spacer"></div>
<div class="tbf_row">
<div class="tbf_wide"><span class="fine_print">When you submit a tip, you give us permission to use it. Read <a href="javascript:void(0)" onClick="generic_show_hide('tip_terms')">our terms</a> for more details. All submissions are reviewed before publication.</span></div>
<div class="tbf_wide"><span class="fine_print">Our terms: By submitting a tip, you agree to assign TidBITS Publishing Inc., a non-exclusive, worldwide, perpetual license to reproduce, publish, and distribute your tip in connection with the TidBITS Web site and associated products in any media. You agree that you created the content you submitted, and that you have the right to assign us this license. You give us permission to use your name, but your email address won't be publicly displayed or shared. We review all submissions before publication, and reserve the right to select which submissions we feel are appropriate for our readers and to edit those we publish.</span></div>
<div id="comment_thanks" style="display:none" onClick="close_popup_thanks('comment_thanks', 'comm')"><br>Thanks for submitting a comment! Please check your email for a link that, when clicked, will verify that you're a real person and cause your comment to appear immediately. <div class="x_close" id="comment_upper_right"><a href="javascript:void(0)" onmousedown="close_popup_thanks('comment_thanks', 'comm'); return true;">Close</a></div></div>
<div class="tbf_wide"><span class="fine_print">Our terms: We reserve the right to edit or delete any comment, so please post thoughtfully. We use your email address <i>only</i> to send you a one-time verification message confirming that you posted this comment. We also store your address to allow you to verify using other Web browsers in the future. For more info, see our <a href="http://db.tidbits.com/privacy.html">privacy policy</a>.</span></div>
<li><a href="/feeds/tidbits.rss" title="Subscribe via RSS" class="gettb">RSS <img src="/images/feed-icon-12x12.gif" width="12" height="12" border="0" class="nav_img" alt="Subscribe via RSS"></a></li>
<li><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=276986548" title="Subscribe to the podcast" class="gettb">Podcast <img src="/images/feed-icon-12x12_podcast.gif" width="12" height="12" border="0" class="nav_img" alt="Subscribe to the postcast"></a></li>
<li><a href="http://www.twitter.com/TidBITS" title="Get Article Updates via Twitter" class="gettb">Twitter <img src="/images/feed_icon_12x12_twitter.png" width="12" height="12" border="0" class="nav_img" alt="Get Article Updates via Twitter"></a></li>
<li><a href="http://www.facebook.com/pages/TidBITS/195314925519" title="Go to the TidBITS Page at Facebook" class="gettb">Facebook <img src="/images/feed_icon_12x12_facebook.gif" width="12" height="12" border="0" class="nav_img" alt="Go to the TidBITS Page at Facebook"></a></li>
<li><a href="javascript:void(0)" title="Sections" class="tabhead" onClick="return showhide('articleslist')">Sections <span id="articleslist_triangle"><img src="/images/nav_triangle_open.gif" width="9" height="9" border="0" class="navtriangle" id="articleslist_tri_image" alt="Click to show or hide the contents of this section."></span></a></li>
<li><a href="javascript:void(0)" onClick="return showhide('stafflist')" title="Staff" class="tabhead">Staff <span id="stafflist_triangle"><img src="/images/nav_triangle_closed.gif" width="9" height="9" border="0" class="navtriangle" id="stafflist_tri_image" alt="Click to show or hide the contents of this section."></span></a></li>
<li><a href="javascript:void(0)" title="Issues" class="tabhead" onClick="return showhide('issuelist')">Weekly Issues <span id="issuelist_triangle"><img src="/images/nav_triangle_closed.gif" width="9" height="9" border="0" class="navtriangle" id="issuelist_tri_image" alt="Click to show or hide the contents of this section."></span></a></li>
<li><a href="javascript:void(0)" onClick="return showhide('abouttidbits')" title="About TidBITS" class="tabhead">About TidBITS <span id="abouttidbits_triangle"><img src="/images/nav_triangle_closed.gif" width="9" height="9" border="0" class="navtriangle" id="abouttidbits_tri_image" alt="Click to show or hide the contents of this section."></span></a></li>
<li><a href="http://www.tidbits.com/about/support/contributors.html">Readers Like You!</a></li>
<li><a href="http://www.thedatarescuecenter.com/">The Data Rescue Center</a></li>
</ul><div class='sponsor_sidebox_bottom'> </div>
</div>
<!-- end sponsor_sidebox -->
</div> <!-- end leftcolumn div -->
<!-- end left column -->
<!-- begin centercolumn_border -->
<div id="centercolumn_border">
<div class="center_top">Thoughtful, detailed coverage of the Mac, iPhone, and iPad, plus the best-selling <a href="http://www.takecontrolbooks.com/?pt=TB-TAGLINE" style="color:yellow">Take Control</a> ebooks.</div>
<!-- begin centercolumn -->
<div id="centercolumn">
<!-- begin rightcolumn_container -->
<div id="rightcolumn_container">
<!-- begin rightcolumn -->
<!-- rightcolumn is embedded within centercolumn so featured text wraps around it -->
</div><!-- end tearoffbox_wide_container for watchlist items -->
<!-- begin tearoff box wide -->
<div class="tearoffbox_wide_container">
<div class="tearoffbox_wide_tips">
<div class="tip_display">
<div class="tips_sponsor_logo">
</div>
<h6>Opening a Folder from the Dock</h6>
<p>Sick of the dock on Mac OS X Leopard not being able to open folders with a simple click, like sanity demands and like it used to be in Tiger? You can, of course click it, and then click again on Open in Finder, but that's twice as many clicks as it used to be. (And while you're at it, Control-click the folder, and choose both Display as Folder and View Content as List from the contextual menu. Once you have the content displaying as a list, there's an Open command right there, but that requires Control-clicking and choosing a menu item.) The closest you can get to opening a docked folder with a single click is Command-click, which opens its enclosing folder. However, if you instead put a file from the docked folder in the Dock, and Command-click that file, you'll see the folder you want. Of course, if you forget to press Command when clicking, you'll open the file, which may be even more annoying.
<div class="tbf_wide_80" id="hc_rc_637">To help us avoid automated posts and misuse of our site, please enter the words below.</div><div class="x_close_row" id="hc_upper_right2_637"><a href="javascript:void(0)" onmousedown="HidePopupContent('hc_637', 'hc', '637'); return true;">Close</a></div>
<div class="featured_meta"><div class="meta_article">16 Mar 1992 | <a href="/article/3180?print_version=1">Print <span class="shift_up"><img src="/images/printer_icon.gif" alt="Printer-Friendly Version of This Article" border="0" width="9" height="10"></span></a></div></div>
<div id="article_box_637"><P>When NeXT or Amiga owners feel the need to disparage the Mac in conversation, they often mention the fact that Mac doesn't have "true" multitasking, tacking a little verbal sneer on the tail end of "true." That generally means that the Mac uses what's called "cooperative multitasking" instead of "pre-emptive multitasking."</P><P>I'm telling you this because Apple announced last week that it will be remodeling the Macintosh operating system to add pre-emptive multitasking and other operating system goodies including multi-threading, memory protection, support for dynamic link libraries, and some new I/O (input/output) features that will help peripherals to keep up with the CPU. Why is this good news and not merely propeller-head tech-speak? Well, let me explain what each of those goodies will do for you and then you'll see. For those of you fluent in said tech-speak, I'm aware that I'm over-simplifying. :-)</P><P><STRONG>More multitasking</STRONG> -- Sooner or later, you'll need to figure out the difference between cooperative and pre-emptive multitasking (it's a great way to sound technical :-)). Please keep in mind that different people define this stuff differently. This is a painless-as-possible mainstream explanation.</P><P>In a cooperative system, the foreground application cooperates by deciding how much CPU time (the amount of time the microprocessor spends executing useful commands) it wishes to give up to background applications, whereas in a pre-emptive situation, the operating system mediates among the priorities of active applications. For example, on the Mac, Nisus dominates the CPU and doesn't give other applications much CPU time. Nisus gets to make that decision and is perfectly within its cooperative multitasking rights. In a pre-emptive system, every running application has a priority level, and the operating system parcels out CPU time based on those priority levels and the number of applications running.</P><P>A difficulty with pre-emptive multitasking is that in an ideal single-user interactive system, the foreground application is completely responsive. (If you click the Ignore button in Word 5's spell checker, you do not want the CPU giving priority to other programs since it's slow enough already!) In a pre-emptive system you can often manually set an application's priority level, but this can be a pain.</P><P>That's the advantage of cooperative multitasking - the foreground application can appropriate an ample amount of CPU time to being responsive. Windowing systems on fast Unix machines are often less responsive because the windowing system is merely another application that gets its share of CPU time, no matter how much you may use it. On the other hand, in a cooperative multitasking system, the computer may not work as efficiently because the CPU spends lots of cycles just spinning its wheels waiting for you to do something. For example, I'm composing this article in Nisus, and Navigator was recently downloading in the background. Nisus took so much CPU time that I had to send Nisus to the background so that Navigator could finish the download. If Nisus had been more willing to share CPU time, Navigator could have finished up during some of the extra CPU cycles. If I were using a Quadra instead of our SE/30, the CPU would be running even faster and Nisus would be wasting even more of the CPU's time. Remember, a CPU cycles many times per second, so if priorities are set right, pre-emptive multitasking can work out quite well.</P><P>In an ideal world, Apple might use a mixed scheduling technique that would give a lot of CPU time to the foreground application but would allow the operating system to parcel out CPU time to each of the background applications according to their priorities. That would provide fast foreground response while still allowing multiple background programs to do useful work.</P><P><STRONG>Multi-threading</STRONG> -- Multi-threading allows a single application to do multiple things at the same time. Using multi-threading, a spreadsheet could simultaneously print a document, recalculate formulas, and accept data entry. Each task within the application, printing, calculating, accepting data, acts like a little program in a cooperative multitasking system, allowing you to keep working while other parts of the program do other tasks. Both multi-threading and pre-emptive multitasking will be even more necessary when Apple releases voice and handwriting recognition products because the Mac will have to be continually running the recognition code no matter what else is happening.</P><P><STRONG>Kevlar memory</STRONG> -- Memory protection is an extremely useful feature that allows one program to bomb out of sight without disturbing its neighbors in memory, although it's still difficult to completely protect the system heap, since most applications use information in it. That mean that when you hit a nasty bug, such as the one that causes Word 5.0 to crash when using the grammar checker on 68000 Macs, only Word will stop working and all the other programs will continue working properly. As it is now, your machine restarts on that bug, which is a big no-no.</P><P><STRONG>Dynamic link libraries</STRONG> -- When a programmer compiles a program, the compiler will link in various standard libraries to perform certain standard functions, like displaying text on screen. Those libraries are static but fast because they live in the program. Dynamic link libraries are a set of routines that applications can use at runtime rather than include those routines internally. Dynamic link libraries are slower than static link libraries. Like extensions, you could just drop some dynamic link libraries into a special folder and various applications could then use that code, allowing those applications to be smaller, simpler to write, and more similar to each other, thus increasing ease of overall use. If implemented correctly, dynamic link libraries also cut down on memory consumption, since they only need to exist in RAM once, no matter how many applications use them. Dynamic link libraries would be especially useful for companies like Claris and Microsoft, which have multiple applications with similar interfaces and shared features. I believe that dynamic link libraries are already available in Windows, so in this respect Apple is playing catch-up (cleaner than playing with ketchup).</P><P><STRONG>DMA that SCSI!</STRONG> -- The two new I/O enhancements are direct memory access (DMA) and asynchronous SCSI. DMA has been around for a long time and many computers support it, including the Atari ST line. In fact, the Mac IIfx sports DMA in hardware, although it's somewhat useless since the current MacOS doesn't support it. DMA allows devices other than the CPU to read and write memory, thus allowing the CPU to spend more time on other tasks. It's not quite ideal because the CPU does have to check in occasionally to make sure that the right stuff is in memory, but it can significantly boost performance. DMA requires extra hardware as well as operating system support, so most people will need a new Mac to take advantage of it. Asynchronous SCSI requires DMA. When supported though, asynchronous SCSI allows the CPU to delegate a SCSI command to the SCSI controller and then stop paying attention to it and go perform other tasks, again increasing performance. For example, the CPU might tell the SCSI controller to load a sector from a hard disk into RAM. The controller can start this job while the CPU does something else.</P><P><STRONG>When will rumor become reality?</STRONG> -- We've heard that these features will be available at about the same time as the PowerPC machines being co-developed with IBM. In other words, this is all fantasy because by the time the PowerPC machines come out in late 1993, Apple could completely change its mind about all this stuff. None of these ideas are new and many have been around for years in the Unix and mainframe worlds. So the moral of the story is that Apple, as always, is looking for ways to make the Mac into a better machine. In this case, Apple is looking back at standard operating system concepts that it didn't include the first time around. It's also useful to keep in mind that this means that Apple is not putting all its eggs under Taligent's Pink chicken. That's important because in many ways Apple is a software company and cannot afford to rely on another company for such key software. Moral or no, I'm still drooling over this stuff!</P><BLOCKQUOTE><P>Information from:<BR> Pythaeus<BR> Doug Davenport of SNAP Technologies</P></BLOCKQUOTE><BLOCKQUOTE> Related articles:<BR> MacWEEK -- 09-Mar-92, Vol. 6, #10, pg. 1</BLOCKQUOTE><!-- Microkernel Mac Adam C. Engst --></div>
<!-- end article text -->
<!-- PayBITS -->
<p> </p><div class="sponsorbox">
<div class="sponsortext"><A HREF="http://www.smithmicro.com/tidbits"><IMG SRC="http://db.tidbits.com/images/badges/StuffItDeluxe2010.gif" ALT="" HEIGHT="50" WIDTH="50" BORDER="0" ALIGN="left"></A>StuffIt Deluxe 2011 has everything you need to backup, encrypt,<br />share, and compress all of your photos, audio and documents.<br />Compress it. Secure it. Send it. Try StuffIt Deluxe 2011 today!<br />Click here for a free 30-day trial: <<a href="http://stuffIt.com/tidbits/">http://stuffIt.com/tidbits/</a>></div>