Рассмотрим первый пункт более подробно. Отсутствие многозадачности - на мой взгляд, серьезный недостаток данной ОС. Он вытекает как следствие того, что механизм работы DOS основан на прерываниях. Это делает весьма затруднительной (может быть даже невозможной) реализацию многозадачности. Как известно, многозадачные системы основаны на виртуальных машинах (ВМ). Каждый выполняющийся процесс работает в свой ВМ, управляемой менеджером ВМ. В ОС Windows этим менеджером является VMM32. Все процессы не работают напрямую ни с памятью, ни с другим оборудованием. Доступ ко всем устройствам обеспечивают драйверы виртуальных устройств. Это дает большие преимущества над прерываниями, так как любую возникшую ошибку можно обработать и генерировать Exception (исключение) и не допустить сбоя в выполняющемся процессе. Так же это дает преимущества и в защите, так как процессы выполняются в различных областях памяти (тоже виртуальных). И, наконец, сама многозадачность - это постоянное переключение между процессами. Некоторые, конечно, заблуждаются, думая что это переключение затормаживает систему. Но это неверно, поскольку каждый процесс имеет свой приоритет. Переключение на процессы с более низким приоритетом производится реже, чем на процессы с высоким приоритетом. Таким образом, время переключения несоизмеримо со временем выполнения самих процессов.
Все это отсутствует в DOS.
Теперь перейдем к графическому интерфейсу. Кто-то, возможно, скажет, что в DOS это легко поправить. Но сразу возникнет вопрос: ведь ОС DOS рассчитана на работу в текстовом режиме. Как будут работать в ней другие программы? К тому же, это не принесет большой пользы при отсутствии механизма ВМ, так как этот графический интерфейс не сможет делать ничего, кроме как служить в качестве файлового менеджера.
В DOS также не реализована система подкачки - использования диска в качестве оперативной памяти. Здесь надо заметить, что существующие программы DOS, которые якобы осуществляют подкачку при отсутствии свободной памяти, на самом деле просто записывают значения некоторых переменных в файл и освобождают место в памяти, храня их в файле до тех пор, пока они вновь не понадобятся. Это не есть подкачка. Возьмем для примера систему свопинга в Windows. Процессы, выполняющиеся при недостатке памяти, даже и не подозревают о том, что они используют диск, так как они работают (как уже было сказано выше) в виртуальной области памяти, которой управляет менеджер ВМ. Он и осуществляет подкачку в случае недостатка памяти. Это происходит совершенно без ведома самой программы. При этом совершенно необязательно, чтобы в файл подкачки помещались именно значения переменных. Туда может помещаться абсолютно все. То есть файл подкачки является как бы "продолжением" оперативной памяти. Таким образом, количество выполняющихся процессов в системе с ВМ и свопингом практически ограничено только объемом свободного места на диске или максимальным объемом файла подкачки.