По современным представлениям операционная система должна уметь делать следующее [1]:
- обеспечивать загрузку прикладных программ в память и их исполнение,
- обеспечивать управление памятью; в простейшем случае это указание единственной загруженной программе адреса, на котором кончается память, доступная для использования, и начинается память, занятая системой, в многопроцессных системах это сложная задача управления системными ресурсами,
- обеспечивать работу с устройствами долговременной памяти, такими как магнитные диски, ленты, оптические диски, флэш-память и т. д.,
- предоставлять более или менее стандартизованный доступ к различным периферийным устройствам, таким как терминалы, модемы, принтеры или двигатели, поворачивающие рулевые плоскости истребителя,
- предоставлять некоторый пользовательский интерфейс (слово некоторый здесь сказано не случайно — часть систем ограничивается командной строкой, в то время как другие на 90% состоят из интерфейсной подсистемы).
Существуют ОС, функции которых этим и исчерпываются. Одна из хорошо известных систем такого типа — дисковая операционная система MS DOS.
Более развитые ОС предоставляют также следующие возможности:
- параллельное (или псевдопараллельное, если машина имеет только один процессор) исполнение нескольких задач,
- организацию взаимодействия задач друг с другом,
- организацию межмашинного взаимодействия и разделения ресурсов,
- защиту системных ресурсов, данных и программ пользователя, исполняющихся процессов и самой себя от ошибочных и зловредных действий пользователей и их программ,
- аутентификацию (проверку того, что пользователь является тем, за кого он себя выдает), авторизацию (проверка, что тот, за кого себя выдает пользователь, имеет право выполнять ту или иную операцию) и другие средства обеспечения безопасности.