Saturday, December 1, 2007

The many panes of Windows, Pt 2

Windows is a server operating system, which is a big contributing factor to Windows' fatness. 99 out of 100 Windows systems are client, not servers. Being a client is simpler than than being a server. Client operating systems support just one owner/operator. They keep our hard disk in order, launch our programs off our hard disk, work our I/O devices and the internet. We own the whole computer, so we own all the files on it. Clients don't do work for other computers. Servers on the other hand spend their life sharing stuff, printers, hard disk, internet connections with other computers. At the office, when you click "print" and your stuff pours out of the central printer, a server makes that happen. Your client machine sends a message to the server machine connected to the printer saying "Print this as soon as possible". The key difference between clients and servers, is servers have to the smart enough to accept requests for services over a comm link (LAN, dialup modem, or other links), and accomplish them. Servers have to serve a number of clients, and so must keep various clients separate. Servers allow clients to store files on the server's hard drive. For this to work, the server must remember which client owns which file and only allow the owner access to his files. It won't do to have Joe reading and writing Sally's files.
So, servers must remember who owns what files, and each time a file is opened, it must check to be sure the opener of the file is the owner of that file. Both providing services upon request and keeping files private make a server substantially more complicated, bigger and buggier than a pure client.
Servers are inherently more vulnerable to malware. "Load this program and run it" is a basic service provided by Windows. This is how malware spreads across the internet, a virus running in an infected computer asks another computer to load the virus and run it. Windows calls this feature "Remote Procedure Call", or "RPC" for short. "Telnet" is another such feature. There are more such features in Windows, too many more to count. What's worse, in Windows you cannot turn RPC off. If you do, Windows won't boot.
Since Windows ships with the RPC "kick me" sign prominently displayed, Windows needs a "firewall" program to protect it against RPC spreading viruses. A "firewall" intercepts all incoming traffic and blocks the dangerous stuff. It is said that an unfirewalled Windows system will be infected by malware within ten minutes of going onto the internet.
So, for being a server, something no one wants, Windows is burdened with all the code to respond to client requests, and then more code to block those requests. A pure client, which doesn't offer services, would be leaner, faster, and more robust.

No comments: