PCBoard-for-OS/2 Design Goals and Performance Benefits ====================================================== Overview -------- PCBoard-for-OS/2 (PCB-OS2) version 15.22 is a 32-bit native OS/2 version of the popular PCBoard Bulletin Board Software. It is designed to be as compatible as possible with the DOS release of the software, while taking advantage of OS/2 features such as 32-bit instructions, multiple threads, multitasking and a graphical user interface for the PCBoard Control Panel. Design Goals ------------ Some of the basic design goals in developing the OS/2 version of PCBoard were as follows: - Complete file compatibility. Both the DOS and OS/2 versions may be run on the same system. This allows the system operator to utilize his or her hardware and software to its best advantage. - Complete user interface compatibility from the end-user point of view. This allows callers to access either version without having to be concerned about differences in operation. In most cases, the caller will not even be aware of whether the DOS or OS/2 version is in use. - User interface compatibility from the sysop point of view. While there are a few differences, mostly in setup, the system will be very familiar to those sysops who are already comfortable with the DOS version. - Performance improvements. These come in two forms: 1) Being a native 32-bit application improves performance in areas where CPU usage is highest, and 2) Being multi-threaded allows the application to free up the CPU wherever possible to promote better multitasking performance. - Easier multi-node setup, control and monitoring under OS/2. A new product, called PCBoard Control Panel (PCBCP), which is loosely based on the original PCBMoni for DOS, makes it easier to set up multiple nodes under OS/2 while providing launching, monitoring, switching and warning controls. Implementation -------------- Because both performance and user interface compatibility are prime considerations in designing PCB-OS2, the application runs in a VIO window-able session (i.e. text mode). Performance benefits are derived from sticking with a text mode interface where screen display updates do not hog large portions of the CPU's attention. In addition, a separate thread is dedicated to monitoring the virtual screen image and updating the actual physical screen in batches and only at intervals that do not interfere with the rest of the operation of the system. Because of this, PCB-OS2 offers huge performance benefits over PCB-DOS for operations where large quantities of information are displayed on screen. Meanwhile, OS/2 users have come to expect a graphical user interface. To help make PCB-OS2 fit with their expectations, while maintaining the performance benefits of a text-mode application, PCBoard Control Panel was born. PCBoard Control Panel is a multi-threaded native OS/2 PM application which provides a multi-node setup, control and monitoring interface for the PCBoard system. Utilizing an OS/2-style notebook, multiple nodes can be defined with a limited amount of effort, generally by setting one node up and then quickly copying that setup to one or more nodes with just a few clicks of the mouse. With a PCBMoni-style overview of the nodes on screen, you can then click on an individual node to start it, or if it's already running it will pop it into the foreground to show you what the caller is doing online. Or you can control one or more nodes with a few clicks of the mouse, causing them to recycle, log a user off, drop to DOS, etc, or even send a message to the caller that is online. One of the most flexible aspects of PCBCP is that it can be set up to launch nodes either at startup, or at connect time. By working directly with Ray Gwinn, PCBCP has a hook into the VMODEM internet driver which allows it to detect when a call is coming in from the internet and launch a node to handle the call right at that moment. With this design philosophy, you can conserve both cpu cycles and memory by not even running a PCBoard node unless and until the need arises. In effect, you can have PCBCP set up to launch just the basic number of nodes that you need to handle your average load of traffic, and then with the launch-on-connect on capability you can set up a number of nodes that can become active as the need arises to handle the overflow. This way your system avoids ever given a busy signal, while at the same time providing the greatest level of performance possible when the traffic is low. Another advantage to PCBCP is that it can automatically warn you when a node appears to be hung. And you can even set it to automatically shut down and restart a node that appears to be hung in case you are not around to attend to the warning. In designing PCBoard-for-OS/2 itself, tremendous effort was spent on setting up multiple threads and resources such that the system has very low cpu overhead. As an example, to make our DOS version very multi-tasker friendly, it has to be very much aware of when it is busy and when the software has idle time. By being aware of the idle time, the DOS version then makes calls to the operating system to give up its own time slice and allow other nodes on the system to utilize the cpu time. The OS/2 version, however, is structured such that it rarely ever needs to make a call to the operating system to give up a time slice. Instead, its threads and semaphores are structured such that, when the system isn't busy, the operating system simply doesn't give it any time. For instance, there are threads for the keyboard and comm I/O which remain completely inactive until you type on the keyboard, or until something comes in from the comm port. Another thread handles screen updates for huge performance gains, and other threads handle aspects such as monitoring system time, carrier, etc. In conclusion, the combination of PCBoard-for-OS/2 together with the PCBoard Control Panel to control and run your system, this new PCBoard package offers benefits in cpu and memory usage which allows you to service more users with better performance on an OS/2 based system.