TGViewer
Евгений Козлов пишет про IT Евгений Козлов пишет про IT @careerunderhood · 2.84K subscribers
Post #308 3.37K
Евгений Козлов пишет про IT CPU, Memory Models, Concurrency, Multiprocess, Multithreading и Async. Часть 2 - Bonus Перед тем как переходить от железяк к программированию для полноты картины стоит упомянуть технологию Hyper Threading от Intel с ее логическими ядрами. В чем ее суть?…
CPU, Memory Models, Concurrency, Multiprocess, Multithreading и Async. Часть 3. Процессы. Начало

Сегодня поговорим о процессах операционной системы в контексте многозадачности.

Процесс - это экземпляр компьютерной программы. Если компьютерная программа представляет собой некий исполняемый файл на диске с инструкциями для процессора то процесс это экземпляр программы (а следовательно всех ее инструкций) в памяти. Из памяти инструкции передаются CPU.

Что из себя представляет процесс?
- Область виртуальной памяти с инструкциями для CPU.
- Ресурсы операционной системы связанные с данным процессом. (В основном речь про файлы / файловые дескрипторы)
- Текущее состояние программы с точки зрения CPU и его регистров (так как процессы могут не просто ставиться на паузу планировщиком OS а вытесняться из памяти на диск (swap / файл подкачки) нам требуется хранить state чтобы потом было к чему возвращаться.

В каких состояниях процесс может находиться?
- Создан
- Ожидание (ждет когда планировщик выделит процессорное время). В этом состоянии процесс может быть вытеснен в SWAP.
- Исполнение (связанный с процессом CPU молотит инструкции)
- Заблокирован (происходит когда нам попалась инструкция которой нужно взаимодействовать с чем то внешним например файл на локальном диске / ожидание ввода вывода / межпроцессное взаимодействие). В этом состоянии процесс может быть вытеснен в SWAP.
- Завершен. Процесс может завершиться сам с неким кодом ответа, либо его завершит ОС принудительно. Ресурсы связанные с процессором будут удалены.

Самым интересным для нас как разработчиков является состояние блокировки, так как именно код написанный нами приводит процесс в это состояние. И в наших интересах написать программу так чтобы она могла в случае попадания в такой статус могла внутри себя переключаться на другие ветви исполнения и делать полезную работу.

P.S. А что такое виртуальная память? Почему бы не обращаться напрямую?
Техника виртуальной памяти позволяет:
- Добавить дополнительный способ хранения состояний процессов (например упомянутый ранее SWAP, который по сути диск). За счет этого можем позволить ОС работать с большим количеством процессов. И выделять прцоессам больше памяти чем доступно в RAM.
- изолировать процессы друг от друга за счет выдачи непересекающихся виртуальных областей памяти.
- скрыть от разработчика ньюансы работы с памятью, например механики перемещения из RAM на диск и обратно. Процесс не знает вообще ничего о том какая модель памяти на компьютере.

Для большинства задач плюсы от использования виртуальной памяти перевешивают недостатки поэтому в большинстве ОС это работает из коробки. Но также важно отметить что есть сценарии в которых оверхэд на эту абстракцию настолько высок что взаимодействие с памятью идет напрямую (например системы реального времени и микроконтролеры).

На этом на сегодня всё, увидимся завтра, продолжим погружаться в процессы, уже c точки зрения кода😊

-----

Напоминаю, что моя личка открыта для всех, а если в личку неудобно то можно написать через Google Forms.

Предлагайте темы для будущих постов, задавайте вопросы или оставляйте отзывы/пожелания.😊
  • 👍 22
  • 🔥 10
  • ❤ 5
More from @careerunderhood
  1. Oct 2, 2026Пока от темы Concurrency далеко не ушли. В последнем цикле я если и упоминал вопросы произ…
  2. Sep 30, 2026Результаты опроса меня впечатлили. Большинству интересны истории из работы. Поехали, начне…
  3. Sep 25, 2026Post #470
  4. Sep 21, 2026Concurrency, Synchronization and Consistency. Non-blocking. Оглавление Введение - Блокирую…
  5. Sep 21, 2026Concurrency and Consistency. Non-blocking, lock-free and async. Пост №12. Заключение. Когд…
  6. Sep 20, 2026Concurrency and Consistency. Non-blocking, lock-free and async. Пост №11. Самые важные фак…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →