Операционные системы управляют множеством процессов, обеспечивают доступ к памяти, диску и сети, а также выполняют процессы, планируя их выполнение на центральном процессоре. Это звучит просто, когда мы говорим об этом таким образом, но эта задача огромна. Настолько огромна, что написание эффективных программ действительно зависит от того, насколько хорошо инженер понимает операционные системы.
Я всегда был очарован тем, чтобы раскрывать и разъяснять все скрытое, главным образом потому, что, рассматривая черные ящики как черные ящики, которые принимают ввод и выдают вывод, я чувствую, что нахожусь во власти этого черного ящика. Базы данных были для меня черным ящиком десятилетие назад. Я был совершенно потерян, когда запрос, который я написал, сначала работал быстро, но через несколько месяцев стал медленным. Причина в том, что у меня не было реального понимания систем баз данных и их внутренней работы.
То же самое верно и для операционных систем. Мы запускаем нашу программу, которая превращается в процесс, использующий часть памяти и получающий доступ к диску и сети, но мы действительно не знаем, как это делается, и в результате мы, как инженеры, склонны писать неэффективный код.
Я создал этот курс, чтобы развеять мифы о том, что я считаю фундаментальными принципами операционных систем для инженеров-программистов. Как и во всех моих курсах, я рекомендую студентам, имеющим некоторый опыт программирования, пройти этот курс, так как это делает его более понятным. В этом курсе я буду использовать несколько операционных систем, таких как Linux, Windows и Mac.
Надеюсь, вам понравится.