14

In a notice in a local computer magazine from February 1997, they announce that "BeOS" is about to be launched for Macs (or already has been). It's claimed that this can "run several programs at once, so-called 'multi-tasking'" and that this is something that "Apple has never been able to do".

Is this really true? Could Macs in 1997 really only run one program at once? Or is this a misunderstanding? I vividly remember running multiple programs at once in Windows 3.1 on my IBM PC 486, yet "multi-tasking" was boasted as a feature of Windows 95.

6
  • 1
    Yes, that was a huge weakness in the Mac platform, and this is a place where Microsoft had lapped Apple with Windows 95. Meanwhile they were also spiraling toward bankruptcy and lacked capital or frankly, vision for a total rewrite of MacOS. You can see where the NeXT acquisition would change that (bringing Steve Jobs and NeXTstep) which became OS X. Now Microsoft was lapped! Jan 28 at 3:48
  • This was being developed but a political decision was made to go another way. Think that the original iPhone could also only run one app at a time. Multiple apps and background came later when the hardware became much more powerful. Jan 29 at 11:09
  • @ThorbjørnRavnAndersen There is a significant difference between "running one process at the time" and "running one app at a time". iOS is based on macOS, it always had the ability to run processes in the background. What came later was the ability for apps to keep running (in a controlled manner) without being the visible app.
    – nohillside
    Jan 29 at 12:25
  • @nohillside this was to find a similar situation that OP might have experienced. As always the analogy is approximate. MS-DOS at the time also only ran one application at a time. Jan 29 at 13:27
  • @Harper-ReinstateMonica The claim made in OPs post is untrue, Mac OS in 1997 certainly supported multi-tasking. And had done so for a decade, since the introduction of Multifinder in 1987.
    – Glen Yates
    Jan 29 at 22:35

2 Answers 2

29

There are several ways to implement multitasking:

  • cooperative, where processes voluntarily yield control periodically or when idle or logically blocked. This type of multitasking is called cooperative because all programs must cooperate for the scheduling scheme to work
  • preemptive, where the operating system (or its scheduler component) actively switches between processes

MacOS versions before OSX only supported cooperative multi-tasking. So yes, it was possible to run several applications at once, but they needed to "behave" and yield control to others. Also, as Gnasher729 and Mark mentioned in the comments, cooperative multitasking between full applications was possible with Switcher and from 1987 onwards with MultiFinder; prior to that, cooperative multitasking was limited to "desk accessories", a type of lightweight application that piggybacked on the currently-running application.

7
  • 5
    For some additional history, cooperative multitasking between full applications arrived in 1987 with MultiFinder; prior to that, cooperative multitasking was limited to "desk accessories", a type of lightweight application that piggybacked on the currently-running application.
    – Mark
    Jan 27 at 4:44
  • 3
    For more history, before MultiFinder there was "Switcher", an application that allowed you to select four applications and switch between them. Same principle as multifinder.
    – gnasher729
    Jan 27 at 18:10
  • 1
    It is OS X, not OSX. Jan 27 at 20:13
  • 1
    When limited memory and no hard disk for paging it was practically impossible to fix two full application in memory, hence the small "desk accessories".
    – Ian
    Jan 27 at 21:12
  • 1
    @j4nd3r53n MacOS was not built to be backward compatible with CICS though. Jan 29 at 11:11
13

Could Macs in 1997 really only run one program at once? I vividly remember running multiple programs at once in Windows 3.1.

Well, yes and no.

To truly run several programs at once, you need parallel execution, which requires a multi-core processor or more than one processor. In 1997, the processors supported by Mac OS (and Windows 3.1) were single-core, so they could indeed only run one program at once. So no.

But both Mac OS and Windows 3.1 used a trick called multitasking to share the processor time among programs in a way that gave the user the illusion that they were running simultaneously. So yes.

Unfortunately, it was a primitive kind of multitasking, called cooperative multitasking: programs had to wait until the program currently running would voluntarily release its control of the processor, in the same way you have to wait for someone to leave a packed restaurant to get a table.

Moreover, with cooperative multitasking, if the program that was running crashed, the OS would usually crash too, as it wouldn't have any means to get control back of the processor.

BeOS (and Windows 95) changed that: they switched to preemptive multitasking, in which the OS would run a scheduler and share the processor resources among programs, giving them a certain amount of processor time to run. When the time was up, another program would get a time slice to run. That is similar to playing a variant of chess that constrains the amount of time per move: you only have that much time to make your move.

All modern server and desktop operating systems use preemptive multitasking. Apple introduced preemptive multitasking in 1997/1998 with Rhapsody (the next-gen OS that would eventually evolve into Mac OS X), and made it available to their main customer base in 2001 with Mac OS X 10.0 (Cheetah).

23
  • 9
    re "To truly run several programs at once, you need a multi-core processor." No you can do this with a single core processor
    – mmmmmm
    Jan 26 at 21:39
  • 9
    Pre-emptive multitasking had been used ion Unix and mainframes long before BeOS and Windows.
    – benwiggy
    Jan 27 at 8:00
  • 13
    @mmmmmm It depends on your definition of "at once" and "you can do". If "at once" means "I see on the screen the two programs act at the same time as I as human perceive" then yes, if "at once" means that the CPU is running instructions of both programs at the same instant in time and "can do" means "this has actually been implemented commercially" then no, single-core multi-tasking AFAIK always flushed the pipeline/cache etc to ensure a clean context for each program so from instant A to B you only have program P1 running and from B to C you only have P2, so they do not run "at once"
    – GACy20
    Jan 27 at 10:07
  • 5
    @mmmmmm But even when tasks run sequentially, the OS may give the user the illusion programs are running at once, in the same way one single waiter can provide a good enough experience when serving several customers in a restaurant. The trick is to distribute the processor's (or waiter's) time among all programs (or customers) "fairly". That could be done with cooperative multitasking, but was more reliably achieved with preemptive multitasking, thus the marketing campaign by BeOS.
    – jaume
    Jan 27 at 10:47
  • 2
    Oddly enough Windows 3.1 did feature preemptive multi-tasking, but only between its “VMs”: each DOS program running under Windows was preemptively multi-tasked with the running Windows programs, which multi-tasked cooperatively. Jan 27 at 15:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .