Загрузка данных


Да, так и лучше. Сделаю **по частям по 5 страниц**, чтобы ты просто вставлял в Word, и в итоге получилось около 30 страниц. Ниже даю **Часть 1** — это уже полноценный, расширенный текст без сносок и без списка источников. Формат сохраняй как есть: заголовки, абзацы, пустые строки.[1][2][3]

***

Атаманов Данил Алексеевич  
Группа E37421  

**РЕФЕРАТ**  
на тему: **«Процессы и потоки»**

## Введение

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

Понятия процесса и потока являются одними из самых важных в теории операционных систем. Через них описывается то, как именно исполняется программа, как распределяется процессорное время, как используется память и как несколько задач могут выполняться одновременно. Если не понимать разницу между процессом и потоком, трудно разобраться в том, почему одни программы работают быстро, другие требуют синхронизации, а третьи могут зависнуть из-за ошибки доступа к общим данным.

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

## Общие сведения об операционной системе

Операционная система представляет собой программный комплекс, который управляет аппаратными ресурсами компьютера и предоставляет приложениям удобный интерфейс для работы с ними. Она распределяет процессорное время, организует использование памяти, следит за доступом к устройствам и контролирует выполнение процессов. Без операционной системы пользователь не мог бы запускать несколько программ одновременно или удобно взаимодействовать с файловой системой и периферией.

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

Для реализации такой модели ОС использует внутренние структуры данных, в которых хранится информация о каждом выполняющемся объекте. Когда запускается программа, система создаёт для неё процесс. Когда внутри процесса требуется несколько отдельных линий выполнения, создаются потоки. Эти объекты позволяют операционной системе управлять исполнением программ более гибко и эффективно.

## Понятие процесса

Процесс — это выполняющаяся программа, существующая в памяти и находящаяся под управлением операционной системы. В отличие от файла программы на диске, процесс является активной сущностью: он живёт только во время выполнения и может изменять своё состояние. Один и тот же исполняемый файл может породить множество процессов, если пользователь запустит его несколько раз, и каждый из них будет независимым экземпляром.

Процесс включает не только код программы, но и все ресурсы, которые нужны для её работы. К таким ресурсам относятся память, стек, данные, открытые файлы, дескрипторы устройств, права доступа и служебная информация, необходимая для возврата управления при прерывании. Благодаря этому процесс становится самостоятельной единицей исполнения.

Главная особенность процесса состоит в том, что он обычно имеет собственное адресное пространство. Это означает, что один процесс не может напрямую и произвольно обращаться к памяти другого процесса. Такая изоляция повышает надёжность всей системы, поскольку ошибка одной программы не обязательно приводит к сбою остальных. Однако за безопасность приходится платить дополнительными затратами ресурсов и более сложным обменом данными между процессами.

## Структура процесса

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

Код процесса — это набор машинных или машинно-независимых инструкций, которые должны быть выполнены процессором. В коде содержится логика программы: вычисления, переходы, вызовы функций и работа с данными. Область данных хранит глобальные и статические переменные, а также динамически выделяемую память, если она используется программой. Стек служит для временного хранения локальных переменных, адресов возврата и сведений о вызовах функций.

Кроме того, операционная система хранит информацию о текущем состоянии процесса. Это могут быть значения регистров процессора, указатель стека, счётчик команд, сведения о приоритетах и данные об ожидаемых событиях. Когда процесс приостанавливается, ОС сохраняет весь этот контекст. Когда процесс снова получает процессорное время, его состояние восстанавливается, и выполнение продолжается с того же места, где оно было прервано.

## Состояния процесса

Процесс в операционной системе не существует в одном-единственном состоянии. Он постоянно переходит из одного состояния в другое в зависимости от того, выполняется он или ждёт чего-либо. Наиболее распространённая модель выделяет три основных состояния: выполнение, готовность и ожидание.

Состояние выполнения означает, что процесс в данный момент действительно исполняется на процессоре. Только один или несколько потоков конкретного процесса могут находиться в активной фазе исполнения, в зависимости от архитектуры ОС и количества ядер. Когда процесс выполняется, его инструкции считываются и исполняются процессором.

Состояние готовности означает, что процесс готов к запуску, но в данный момент не получает процессорное время. У него уже есть всё необходимое для выполнения, кроме самого процессора. Он находится в очереди и ждёт, пока планировщик выберет его для исполнения.

Состояние ожидания возникает тогда, когда процесс не может продолжать работу из-за внешнего события. Например, он может ждать завершения операции ввода-вывода, получения данных из сети, освобождения ресурса или ответа другого процесса. Пока событие не произошло, процесс не использует процессорное время, а просто находится в пассивном состоянии.

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

## Создание и завершение процесса

Создание процесса начинается с запуска программы пользователем или системой. Операционная система выделяет необходимые ресурсы, загружает код в память, формирует служебные структуры и создаёт объект процесса. После этого процесс получает возможность быть запланированным на выполнение.

В момент создания формируется начальный контекст процесса. ОС задаёт начальное значение счётчика команд, подготавливает стек, инициализирует переменные среды и регистрирует процесс в своих внутренних таблицах. После этого процесс обычно переводится в состояние готовности и ожидает распределения процессорного времени.

Завершение процесса происходит либо по команде самой программы, либо из-за ошибки, либо по решению операционной системы. При завершении освобождаются ресурсы, закрываются файлы, удаляются служебные записи, а память возвращается системе. Если завершение проходит корректно, процесс безопасно исчезает из списка выполняющихся задач.

## Роль процесса в системе

Процесс является основной единицей, через которую операционная система организует выполнение программ. Любое приложение, запущенное пользователем, существует именно как процесс или как совокупность процессов. Даже если внешне программа кажется цельной, внутри неё могут работать отдельные изолированные части, каждая со своей задачей.

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

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

## Понятие потока

Поток — это последовательность инструкций, выполняющаяся внутри процесса. Его можно рассматривать как отдельную линию исполнения, которая делит ресурсы процесса с другими потоками этого же процесса. Если процесс задаёт рамки и ресурсы, то поток представляет собой конкретное движение кода внутри этих рамок.

Поток является минимальной единицей выполнения, которой операционная система выделяет процессорное время. Внутри одного процесса может быть один поток, а может быть несколько. Когда потоков несколько, каждый из них выполняет свою часть общей задачи, но при этом все они используют общие данные и ресурсы процесса.

Отличительная черта потока состоит в том, что он значительно легче процесса. Поток требует меньше памяти и ресурсов, а его создание и переключение обычно быстрее. Это делает потоки особенно полезными для приложений, в которых требуется частое параллельное выполнение операций, например для пользовательских интерфейсов, сетевых сервисов и вычислительных задач.

## Состояния потока

Как и процесс, поток может находиться в нескольких состояниях. Наиболее часто выделяют выполнение, готовность и ожидание. Состояние выполнения означает, что поток непосредственно исполняется процессором. Состояние готовности говорит о том, что поток может быть выполнен, но в данный момент ждёт выделения процессорного времени. Состояние ожидания связано с тем, что поток заблокирован до наступления какого-либо события.

Эти состояния используются планировщиком операционной системы для организации переключения между потоками. Когда один поток не может продолжать работу, например из-за ожидания данных с диска или сети, другой поток может быть запущен вместо него. Благодаря этому процессор не простаивает впустую.

Потоки одного процесса могут находиться в разных состояниях одновременно. Один поток может выполнять вычисления, другой может ожидать ввода-вывода, а третий — быть готовым к запуску. Такая организация позволяет эффективно использовать ресурсы компьютера и повышать общую производительность системы.

## Отличия процесса от потока

Главное различие между процессом и потоком состоит в степени самостоятельности. Процесс — это независимая единица, имеющая собственное адресное пространство и набор ресурсов. Поток же является частью процесса и разделяет его память и ресурсы с другими потоками внутри того же процесса.

Из-за этого процессы обладают большей изоляцией и безопасностью. Они подходят для задач, где важно разделение и защита данных. Потоки, напротив, удобны для тесно связанных задач, которые должны быстро обмениваться информацией. Но именно эта общая память делает потоки более уязвимыми к ошибкам одновременного доступа.

Ещё одно важное отличие — стоимость создания и переключения. Процессы тяжелее и требуют больше системных ресурсов. Потоки легче и быстрее. Поэтому в практике разработки часто используют комбинированный подход: несколько процессов для изоляции крупных частей системы и несколько потоков внутри каждого процесса для ускорения работы.

***

Если хочешь, я продолжу **Частью 2** сразу следующим сообщением в том же стиле, чтобы ты вставлял дальше и постепенно набрал нужные 30 страниц.

Источники
[1] Процессы и потоки in-depth. Обзор различных потоковых моделей https://habr.com/ru/articles/40227/
[2] 14. Процессы и потоки. Состояния потока https://studfile.net/preview/16556728/page:5/
[3] Лекция №7. Синхронизация процессов и потоков ... https://studfile.net/preview/10469278/page:18/
[4] Процессы и потоки: основные отличия и применение - GitVerse https://gitverse.ru/blog/articles/development/406-processy-i-potoki-klyuchevye-otlichiya-i-ih-rol-v-operacionnyh-sistemah
[5] Процессы и потоки в ОС - YouTube https://www.youtube.com/watch?v=tH41Gfa08fc
[6] 7. Синхронизация Процессов и Потоков | PDF https://ru.scribd.com/document/961531673/7-%D0%A1%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D0%B2-%D0%B8-%D0%9F%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%B2
[7] Механизмы синхронизации - bspu.b http://phys.bspu.by/static/lib/inf/prg/vstudnet/glava12/index18.htm
[8] 16. Понятия процесса и потока. Состояния процесса https://studfile.net/preview/1568174/
[9] [DOC] Zan-3-Lektsiya-3.docx http://makpolytech.ru/wp-content/uploads/2021/02/Zan-3-Lektsiya-3.docx
[10] Лекция №5 Процессы и потоки https://studfile.net/preview/11006125/page:13/