Введение. Что такое Многозадачность и для чего она нужна.
Многозада́чность (англ. multitasking) — свойство операционной системы или среды программирования обеспечивать возможность параллельной (или псевдопараллельной) обработки нескольких процессов.
Существует 2 типа многозадачности[1]:
Процессная многозадачность (основанная на процессах - одновременно выполняющихся программах).
Поточная многозадачность (основанная на потоках).
AboutLinux
2.2. Введение в многозадачность Linux
Операционная система Linux является многозадачной. За многозадачность отвечает ядро. Что же представляет собой многозадачность? Мы привыкли под этим термином понимать концепцию одновременного выполнения нескольких программ. Однако такое понимание не является корректным в плане программирования. Во-первых - реально многозадачности не существует. Во-вторых - есть понятие процесс и есть понятие программа, которые нельзя отождествлять.
Итак, многозадачности не существует. Действительно, любой компьютер - это императивная машина, т.е. машина, основанная на последовательном анализе состояния вычислителя и изменении состояния этого вычислителя. Число комбинаций всевозможных состояний в такой системе конечно. Многозадачность, реализованная в операционных системах - это иллюзия, весьма удобная пользователю. Любая многозадачность - это абстракция императивности. То есть, мы думаем, что два процесса выполняются одновременно, а на самом деле они просто поочередно используют процессор для выполнения своих команд. За очередностью использования процессора следит хитрое ядро, которое и создает иллюзию многозадачности.
Чем же программа отличается от процесса? Программа - это нечто, готовое к выполнению, а процесс - это выполняющийся экземпляр программы. Почему экземпляр? Все дело в том, что одну и ту же программу можно запустить, например, два раза. Таким образом получится два процесса, хотя программа одна.
К каждому процессу в Linux привязываются два 16-разрядных числа - идентификатор процесса и идентификатор родителя. Первое число обычно обозначают PID (Process IDentifier), а второе - PPID (Parent Process IDentifier). Каждый процесс имеет свой уникальный PID. А что же такое PPID? Дело в том, что все процессы в Linux имеют иерархическую структуру. То есть одни процессы рождают другие процессы. Пусть процесс 1 породил процесс 2. В таком случае процесс 1 называют родителем или родительским процессом, а процесс 2 - потомком или дочерним процессом. Процесс 2, являющийся дочерним, может стать одновременно и родителем. И есть только один процесс, возвышающийся над всеми процессами и не имеющий родителя - это процесс init с идетрификатором 1 (PID=1). Это процесс запускается при загрузке системы. Программой соответствующей этому процессу является демон init, запускаемый ядром.
Из статьи про Java
Ясное дело, что если ваш компьютер не оснащен несколькими процессорами, то операционная система всего лишь распределяет свои вычислительные ресурсы между разными программами, создавая впечатление их параллельного выполнения.
Такое распределение ресурсов возможно, поскольку компьютер не всегда занят работой, например, при наборе текста, и процессор большую часть времени находится в состоянии бездействия.
К примеру, даже если очень быстро набирать символы на клавиатуре и на ввод одного символа тратить всего 1/20 секунды, то даже это будет огромный интервал для процессора. Ведь современные процессоры могут обрабатывать миллионы запросов в секунду.
Многозадачность может быть реализована двумя способами: или операционная система прерывает выполнение задачи, или управление операционной системе возвращается по усмотрению самой программы, например, после выполнения определенной задачи.
Первый способ называется вытесняющей многозадачностью (preemptive multitasking), а второй - кооперативной (или невытесняющей) многозадачностью (cooperative multitasking).
Кооперативная многозадачность применяется в ранних версия Windows и Mac OS 9, а вытесняющая - в UNIX, Linux, Windows NT/2000/XP и Mac OS X.
Вытесняющая многозадачность работает гораздо эффективнее кооперативной, но ее сложнее реализовать. Даже более того, некорректно написанная программа в режиме кооперативной многозадачности способна поглотить все вычислительные ресурсы системы.
Многопоточные программы развивают идею многозадачности на более низком уровне: отдельные программы способны выполнять одновременно несколько задач. Каждая задача обычно сокращенно называется потоком (thread) или полностью - потоком управления (thread of control).
Программы, способные запускать более одного потока, называются многопоточными (multithreaded). Каждый поток выполняется в отдельном контексте, т.е. создается видимость того, что каждый поток имеет собственный процессор с регистрами, памятью и своим кодом.
В чем же заключается разница между несколькими процессами и несколькими потоками? Существенное различие состоит в том, что каждый процесс имеет набор собственных переменных, тогда как потоки обращаются к одним и тем же данным.
С технической точки зрения гораздо проще создавать и уничтожать отдельные потоки, чем запускать новые процессы. Именно по этой причине все современные операционные системы поддерживают многопоточноть. Более того, процессы взаимодействуют гораздо медленнее и с большими ограничениями, чем потоки.
Многопот
Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.