6.033 Case Study 1 Sections design overview approach to performance use of multithreading advanced issues design overview overall structrue processing of user commands maintenance of displayed information multithreading/synchronization strategies structure and management of objects internal to the browser structure and management of any "stable" objects (files) other key algorithims (locality/keeping ahead of the user) how design will placate Prof Weihl (conclusion) file A contains the id of a group, its name and the id of the latest article read. the hot and all groups windows both display the name of the group and the gid. when the browser is started. it reads the subscribed to groups from a file A. the browser then checks to see if the groups have articles pending(with a greater aid than the one in file A. those that do are then displayed in the hot groups window. after the hot groups window is brought up, the checking is done on a forked thread while the main thread waits for user input. the input would be in the form of the user clicking on a group, the subscriptions button clicked, the select button clicked, the quit button clicked, or the window scrolled. If the user choses a group, either through clicking on a group or through the select command, then the main thread forks and the forked thread creates a headers window for the group, passing the gid to that thread. If the user selects the subscription command then the main group forks, and the forked process sends the server the AvailableGroups command. The forked thread then uses the GroupIdToName operation and displays the information in the AllGroups window with its gid (for each gid in the array returned from the AvailableGroups operation. If the user selects the quit command then the main thread passes the quit command to its child strings, closes the hot goups window and quits. The child strings pass the quit command to their child threads,if any, close any windows they may have open, then quit. The main string may also quit if it detects that the hot groups window has been killed. The all groups windows, headers windows, and articles windows pass the handles of their children to their parents(if they still exist) before they quit, so that their children continue to provide their individual service until the service is no longer needed or the browser is quit. This case is for when a child thread finishes, not when a quit command is entered from the hot groups window. From a headers window, the user