Многозадачность операционной системы windows это

From Wikipedia, the free encyclopedia

Modern desktop operating systems are capable of handling large numbers of different processes at the same time. This screenshot shows Linux Mint running simultaneously Xfce desktop environment, Firefox, a calculator program, the built-in calendar, Vim, GIMP, and VLC media player.
Multitasking of Microsoft Windows 1.01 released in 1985, here shown running the MS-DOS Executive and Calculator programs

In computing, multitasking is the concurrent execution of multiple tasks (also known as processes) over a certain period of time. New tasks can interrupt already started ones before they finish, instead of waiting for them to end. As a result, a computer executes segments of multiple tasks in an interleaved manner, while the tasks share common processing resources such as central processing units (CPUs) and main memory. Multitasking automatically interrupts the running program, saving its state (partial results, memory contents and computer register contents) and loading the saved state of another program and transferring control to it. This «context switch» may be initiated at fixed time intervals (pre-emptive multitasking), or the running program may be coded to signal to the supervisory software when it can be interrupted (cooperative multitasking).

Multitasking does not require parallel execution of multiple tasks at exactly the same time; instead, it allows more than one task to advance over a given period of time.[1] Even on multiprocessor computers, multitasking allows many more tasks to be run than there are CPUs.

Multitasking is a common feature of computer operating systems since at least the 1960s. It allows more efficient use of the computer hardware; when a program is waiting for some external event such as a user input or an input/output transfer with a peripheral to complete, the central processor can still be used with another program. In a time-sharing system, multiple human operators use the same processor as if it was dedicated to their use, while behind the scenes the computer is serving many users by multitasking their individual programs. In multiprogramming systems, a task runs until it must wait for an external event or until the operating system’s scheduler forcibly swaps the running task out of the CPU. Real-time systems such as those designed to control industrial robots, require timely processing; a single processor might be shared between calculations of machine movement, communications, and user interface.[2]

Often multitasking operating systems include measures to change the priority of individual tasks, so that important jobs receive more processor time than those considered less significant. Depending on the operating system, a task might be as large as an entire application program, or might be made up of smaller threads that carry out portions of the overall program.

A processor intended for use with multitasking operating systems may include special hardware to securely support multiple tasks, such as memory protection, and protection rings that ensure the supervisory software cannot be damaged or subverted by user-mode program errors.

The term «multitasking» has become an international term, as the same word is used in many other languages such as German, Italian, Dutch, Romanian, Czech, Danish and Norwegian.

Multiprogramming[edit]

In the early days of computing, CPU time was expensive, and peripherals were very slow. When the computer ran a program that needed access to a peripheral, the central processing unit (CPU) would have to stop executing program instructions while the peripheral processed the data. This was usually very inefficient.

The first computer using a multiprogramming system was the British Leo III owned by J. Lyons and Co. During batch processing, several different programs were loaded in the computer memory, and the first one began to run. When the first program reached an instruction waiting for a peripheral, the context of this program was stored away, and the second program in memory was given a chance to run. The process continued until all programs finished running.[3]

The use of multiprogramming was enhanced by the arrival of virtual memory and virtual machine technology, which enabled individual programs to make use of memory and operating system resources as if other concurrently running programs were, for all practical purposes, nonexistent.[citation needed]

Multiprogramming gives no guarantee that a program will run in a timely manner. Indeed, the first program may very well run for hours without needing access to a peripheral. As there were no users waiting at an interactive terminal, this was no problem: users handed in a deck of punched cards to an operator, and came back a few hours later for printed results. Multiprogramming greatly reduced wait times when multiple batches were being processed.[4][5]

Cooperative multitasking[edit]

Early multitasking systems used applications that voluntarily ceded time to one another. This approach, which was eventually supported by many computer operating systems, is known today as cooperative multitasking. Although it is now rarely used in larger systems except for specific applications such as CICS or the JES2 subsystem, cooperative multitasking was once the only scheduling scheme employed by Microsoft Windows and classic Mac OS to enable multiple applications to run simultaneously. Cooperative multitasking is still used today on RISC OS systems.[6]

As a cooperatively multitasked system relies on each process regularly giving up time to other processes on the system, one poorly designed program can consume all of the CPU time for itself, either by performing extensive calculations or by busy waiting; both would cause the whole system to hang. In a server environment, this is a hazard that makes the entire environment unacceptably fragile.

Preemptive multitasking[edit]

Kubuntu (KDE Plasma 5) four Virtual desktops running multiple programs at the same time.

Preemptive multitasking allows the computer system to more reliably guarantee to each process a regular «slice» of operating time. It also allows the system to deal rapidly with important external events like incoming data, which might require the immediate attention of one or another process. Operating systems were developed to take advantage of these hardware capabilities and run multiple processes preemptively. Preemptive multitasking was implemented in the PDP-6 Monitor and Multics in 1964, in OS/360 MFT in 1967, and in Unix in 1969, and was available in some operating systems for computers as small as DEC’s PDP-8; it is a core feature of all Unix-like operating systems, such as Linux, Solaris and BSD with its derivatives,[7] as well as modern versions of Windows.

At any specific time, processes can be grouped into two categories: those that are waiting for input or output (called «I/O bound»), and those that are fully utilizing the CPU («CPU bound»). In primitive systems, the software would often «poll», or «busywait» while waiting for requested input (such as disk, keyboard or network input). During this time, the system was not performing useful work. With the advent of interrupts and preemptive multitasking, I/O bound processes could be «blocked», or put on hold, pending the arrival of the necessary data, allowing other processes to utilize the CPU. As the arrival of the requested data would generate an interrupt, blocked processes could be guaranteed a timely return to execution.[citation needed]

The earliest preemptive multitasking OS available to home users was Sinclair QDOS on the Sinclair QL, released in 1984, but very few people bought the machine. Commodore’s Amiga, released the following year, was the first commercially successful home computer to use the technology, and its multimedia abilities make it a clear ancestor of contemporary multitasking personal computers. Microsoft made preemptive multitasking a core feature of their flagship operating system in the early 1990s when developing Windows NT 3.1 and then Windows 95. In 1988 Apple offered A/UX as a UNIX System V-based alternative to the Classic Mac OS. In 2001 Apple switched to the NeXTSTEP-influenced Mac OS X.

A similar model is used in Windows 9x and the Windows NT family, where native 32-bit applications are multitasked preemptively.[8] 64-bit editions of Windows, both for the x86-64 and Itanium architectures, no longer support legacy 16-bit applications, and thus provide preemptive multitasking for all supported applications.

Real time[edit]

Another reason for multitasking was in the design of real-time computing systems, where there are a number of possibly unrelated external activities needed to be controlled by a single processor system. In such systems a hierarchical interrupt system is coupled with process prioritization to ensure that key activities were given a greater share of available process time.[9]

Multithreading[edit]

As multitasking greatly improved the throughput of computers, programmers started to implement applications as sets of cooperating processes (e. g., one process gathering input data, one process processing input data, one process writing out results on disk). This, however, required some tools to allow processes to efficiently exchange data.[citation needed]

Threads were born from the idea that the most efficient way for cooperating processes to exchange data would be to share their entire memory space. Thus, threads are effectively processes that run in the same memory context and share other resources with their parent processes, such as open files. Threads are described as lightweight processes because switching between threads does not involve changing the memory context.[10][11][12]

While threads are scheduled preemptively, some operating systems provide a variant to threads, named fibers, that are scheduled cooperatively. On operating systems that do not provide fibers, an application may implement its own fibers using repeated calls to worker functions. Fibers are even more lightweight than threads, and somewhat easier to program with, although they tend to lose some or all of the benefits of threads on machines with multiple processors.[13]

Some systems directly support multithreading in hardware.

Memory protection[edit]

Essential to any multitasking system is to safely and effectively share access to system resources. Access to memory must be strictly managed to ensure that no process can inadvertently or deliberately read or write to memory locations outside the process’s address space. This is done for the purpose of general system stability and data integrity, as well as data security.

In general, memory access management is a responsibility of the operating system kernel, in combination with hardware mechanisms that provide supporting functionalities, such as a memory management unit (MMU). If a process attempts to access a memory location outside its memory space, the MMU denies the request and signals the kernel to take appropriate actions; this usually results in forcibly terminating the offending process. Depending on the software and kernel design and the specific error in question, the user may receive an access violation error message such as «segmentation fault».

In a well designed and correctly implemented multitasking system, a given process can never directly access memory that belongs to another process. An exception to this rule is in the case of shared memory; for example, in the System V inter-process communication mechanism the kernel allocates memory to be mutually shared by multiple processes. Such features are often used by database management software such as PostgreSQL.

Inadequate memory protection mechanisms, either due to flaws in their design or poor implementations, allow for security vulnerabilities that may be potentially exploited by malicious software.

Memory swapping[edit]

Use of a swap file or swap partition is a way for the operating system to provide more memory than is physically available by keeping portions of the primary memory in secondary storage. While multitasking and memory swapping are two completely unrelated techniques, they are very often used together, as swapping memory allows more tasks to be loaded at the same time. Typically, a multitasking system allows another process to run when the running process hits a point where it has to wait for some portion of memory to be reloaded from secondary storage.[14]

Programming[edit]

Processes that are entirely independent are not much trouble to program in a multitasking environment. Most of the complexity in multitasking systems comes from the need to share computer resources between tasks and to synchronize the operation of co-operating tasks.[citation needed]

Various concurrent computing techniques are used to avoid potential problems caused by multiple tasks attempting to access the same resource.[citation needed]

Bigger systems were sometimes built with a central processor(s) and some number of I/O processors, a kind of asymmetric multiprocessing.[citation needed]

Over the years, multitasking systems have been refined. Modern operating systems generally include detailed mechanisms for prioritizing processes, while symmetric multiprocessing has introduced new complexities and capabilities.[15]

See also[edit]

  • Process state
  • Task switching

References[edit]

  1. ^ «Concurrency vs Parallelism, Concurrent Programming vs Parallel Programming». Oracle. Archived from the original on April 7, 2016. Retrieved March 23, 2016.
  2. ^ Anthony Ralston, Edwin D. Reilly (ed),Encyclopedia of Computer Science Third Edition, Van Nostrand Reinhold, 1993, ISBN 0-442-27679-6, articles «Multitasking» and «Multiprogramming»
  3. ^ MASTER PROGRAME AND PROGRAMME TRIALS SYSTEM PART 1 MASTER PROGRAMME SPECIFICATION. February 1965. section 6 «PRIORITY CONTROL ROUTINES».
  4. ^ Lithmee (2019-05-20). «What is the Difference Between Batch Processing and Multiprogramming». Pediaa.Com. Retrieved 2020-04-14.
  5. ^ «Evolution of Operating System». 2017-09-29. Retrieved 2020-04-14.
  6. ^
    «Preemptive multitasking». riscos.info. 2009-11-03. Retrieved 2014-07-27.
  7. ^ «UNIX, Part One». The Digital Research Initiative. ibiblio.org. 2002-01-30. Retrieved 2014-01-09.
  8. ^ Joseph Moran (June 2006). «Windows 2000 &16-Bit Applications». Smart Computing. Vol. 16, no. 6. pp. 32–33. Archived from the original on January 25, 2009.
  9. ^ Liu, C. L.; Layland, James W. (1973-01-01). «Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment». Journal of the ACM. 20 (1): 46–61. doi:10.1145/321738.321743. ISSN 0004-5411. S2CID 59896693.
  10. ^ Eduardo Ciliendo; Takechika Kunimasa (April 25, 2008). «Linux Performance and Tuning Guidelines» (PDF). redbooks.ibm.com. IBM. p. 4. Archived from the original (PDF) on February 26, 2015. Retrieved March 1, 2015.
  11. ^ «Context Switch Definition». linfo.org. May 28, 2006. Archived from the original on February 18, 2010. Retrieved February 26, 2015.
  12. ^ «What are threads (user/kernel)?». tldp.org. September 8, 1997. Retrieved February 26, 2015.
  13. ^ Multitasking different methods

    Accessed on February 19, 2019

  14. ^ «What is a swap file?». kb.iu.edu. Retrieved 2018-03-26.
  15. ^ «Operating Systems Architecture». cis2.oc.ctc.edu. Retrieved 2018-03-17.

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

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

Многозадачность позволяет компьютеру распределять ресурсы (процессорное время, память) между различными задачами и программами, ориентируясь на приоритеты и требования пользователя. Вы можете начать загрузку файлов, одновременно просматривать веб-страницы и составлять документ в текстовом редакторе – все это возможно благодаря многозадачности в Windows.

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

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

Содержание

  1. Определение понятия многозадачности
  2. Принципы работы многозадачности
  3. Разновидности многозадачности
  4. Преимущества использования многозадачности
  5. Ограничения и проблемы многозадачности в Windows
  6. Как управлять многозадачностью в Windows

Определение понятия многозадачности

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

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

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

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

Принципы работы многозадачности

Многозадачность в операционной системе Windows основана на таких принципах:

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

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

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

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

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

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

Разновидности многозадачности

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

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

2. Параллельная многозадачность. В некоторых случаях операционная система Windows может выполнять несколько задач параллельно. Это позволяет процессору выполнять несколько операций одновременно и повышает производительность системы. Например, приложение может выполнять вычисления, в то время как другое приложение загружает данные с жесткого диска.

3. Многозадачность в режиме пользователя и режиме ядра. В операционной системе Windows существует разделение задач на те, которые выполняются в режиме пользователя и те, которые выполняются в режиме ядра. Задачи в режиме пользователя могут выполняться с ограниченными привилегиями, в то время как задачи в режиме ядра имеют полный доступ ко всем ресурсам компьютера.

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

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

Преимущества использования многозадачности

1. Эффективное использование ресурсов

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

2. Повышение производительности

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

3. Удобство использования

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

4. Поддержка различных типов задач

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

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

Ограничения и проблемы многозадачности в Windows

Ограничения

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

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

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

Проблемы

Многозадачность в Windows может также столкнуться с некоторыми проблемами, которые могут повлиять на её стабильность и надежность.

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

Еще одной проблемой является переключение между задачами. Если система часто переключается между различными задачами, то это может привести к замедлению работы системы и увеличению времени отклика.

Также, одна из проблем многозадачности в Windows — это возможность возникновения конфликтов между различными задачами и приложениями. Некорректное взаимодействие между задачами может привести к сбоям системы или неправильной работе приложений.

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

Как управлять многозадачностью в Windows

Вот некоторые рекомендации, которые помогут вам управлять многозадачностью в Windows:

  1. Используйте комбинацию клавиш Alt + Tab для переключения между открытыми программами. Это позволяет быстро переключаться между окнами и задачами без необходимости закрывать их.
  2. Используйте Панель задач для открытия и управления открытыми программами. Панель задач позволяет легко переключаться между программами и отображает миниатюры открытых окон.
  3. Используйте функцию «Закрепить в задачную панель» для создания ярлыка программы на панели задач, чтобы быстро запускать ее без необходимости открывать стартовое меню или рабочий стол.
  4. Используйте сочетание клавиш Win + D для быстрого сворачивания всех открытых окон и перехода к рабочему столу. Это поможет вам организовать рабочее пространство и сделать его более доступным.
  5. Используйте менеджер задач для отслеживания использования ресурсов системы и завершения ненужных процессов. Менеджер задач также позволяет управлять автозагрузкой программ и служб, что помогает ускорить загрузку системы.
  6. Используйте виртуальные рабочие столы для организации задач и приложений. В Windows 10 доступна функция Task View, которая позволяет создавать и переключаться между несколькими виртуальными рабочими столами.

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

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

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

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

Благодаря всем этим возможностям, Windows позволяет пользователям эффективно выполнять различные задачи, не теряя в производительности и качестве работы.

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

В целом, многозадачность является основным преимуществом системы Windows, которое делает ее уникальной и популярной среди пользователей различных профессий и интересов. Благодаря многозадачности, пользователи могут эффективно выполнять множество задач одновременно и получать наилучший результат.

Содержание

  1. Многозадачность системы Windows: что делает ее уникальной
  2. История развития многозадачности в Windows
  3. Основные принципы работы многозадачности
  4. Гибкость и масштабируемость многозадачности
  5. Управление ресурсами в многозадачной среде Windows

Многозадачность системы Windows: что делает ее уникальной

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

Кроме того, Windows предоставляет возможность запускать задачи в фоновом режиме. Это означает, что вы можете запустить выполнение задачи и продолжать работать с другими программами или приложениями, не останавливая первоначальную задачу. Например, вы можете загрузить файлы из Интернета, просматривать видео на YouTube или обрабатывать фотографии в редакторе изображений, пока фоновая задача продолжает свое выполнение.

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

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

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

История развития многозадачности в Windows

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

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

Windows XP, выпущенная в 2001 году, предложила еще более превосходную многозадачность. Она включала улучшенные механизмы планирования задач, которые позволяли динамически распределять ресурсы между запущенными программами, увеличивая производительность системы.

Windows 7, выпущенная в 2009 году, получила еще более усовершенствованный механизм многозадачности. Она позволяла запускать все программы в отдельных процессах и автоматически распределять ресурсы в зависимости от их приоритета и активности.

С выпуском Windows 10 в 2015 году была представлена концепция «Универсальных приложений», которая позволяет пользователям использовать одинаковые приложения на разных устройствах под управлением Windows. Это дало новые возможности для многозадачности, так как пользователи могут начать работу с одним устройством и продолжить ее с другого, не потеряв прогресс.

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

Основные принципы работы многозадачности

  1. Планирование задач: операционная система Windows распределяет доступные ресурсы компьютера между запущенными приложениями и задачами. В зависимости от их приоритетов и требований к ресурсам система определяет, какие задачи будут выполняться в данный момент и насколько длительный период времени они будут активными.
  2. Поддержка нескольких потоков выполнения: многозадачность в Windows позволяет запускать и одновременно выполнять несколько потоков внутри одной задачи. Это позволяет разделить выполнение кода на более мелкие фрагменты, улучшая отзывчивость и производительность системы.
  3. Управление памятью: операционная система Windows динамически выделяет и освобождает оперативную память для задач в зависимости от их потребностей. Это позволяет эффективно использовать ресурсы компьютера и предотвращает перегрузку системы.
  4. Обработка событий: многозадачность в Windows основывается на обработке событий. Операционная система получает сигналы и события от различных источников, таких как пользовательский ввод, сетевые сообщения или таймеры, и распределяет ресурсы для их обработки. Это позволяет системе эффективно реагировать на изменяющуюся ситуацию и обеспечивать плавную работу приложений.

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

Гибкость и масштабируемость многозадачности

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

Гибкость и масштабируемость многозадачности Windows демонстрируются в использовании различных функций и возможностей. Один из примеров — функция «Активные окна», которая позволяет пользователям легко переключаться между открытыми приложениями и задачами. Кроме того, операционная система предоставляет многочисленные средства для управления приоритетами процессов и ресурсами, что позволяет пользователю оптимизировать использование системы под свои нужды.

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

Управление ресурсами в многозадачной среде Windows

Операционная система Windows использует несколько методов для управления ресурсами в многозадачной среде:

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

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

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

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

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

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

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

Содержание

  1. Многозадачность операционной системы Windows: работа и значение
  2. Роль и возможности многозадачности
  3. Принцип работы планировщика задач
  4. Процессы и потоки: основные понятия и взаимодействие
  5. Переключение контекста и ресурсное распределение
  6. Практическое применение многозадачности в Windows

Многозадачность операционной системы Windows: работа и значение

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

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

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

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

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

Роль и возможности многозадачности

Операционная система Windows предоставляет несколько способов организации многозадачности:

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

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

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

Принцип работы планировщика задач

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

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

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

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

Процессы и потоки: основные понятия и взаимодействие

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

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

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

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

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

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

Переключение контекста и ресурсное распределение

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

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

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

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

Практическое применение многозадачности в Windows

Многозадачность операционной системы Windows имеет широкий диапазон практических применений, что делает ее незаменимой для повседневных задач пользователей. Вот несколько областей, где многозадачность в Windows оказывает значительное влияние:

1. Работа с несколькими приложениями одновременно:

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

2. Фоновые процессы и обновления:

Многозадачность в Windows также позволяет выполнять фоновые процессы и обновления, без прерывания работы пользователя. Например, операционная система может автоматически загружать обновления для установленных программ или проводить сканирование антивируса, одновременно позволяя пользователю продолжать работать с другими приложениями.

3. Разделение ресурсов:

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

4. Работа в виртуальных средах:

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

5. Управление задачами и процессами:

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

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

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

Многозадачность в Windows

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

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

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

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

Основные понятия

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

  • Мультипроцессирование — использование нескольких процессоров для одновременного выполнения задач.
  • Мультипрограммирование — одновременное выполнение нескольких задач на одном или нескольких процессорах.

В завершение знакомства укажем некоторые термины, определяющие базовые понятия, которыми оперируют операционные системы.

Мультипроцессирование

Говоря о мультипроцессировании, необходимо выделить ситуации, когда используются различные виды оборудования, например, одновременная работа центрального процессора и графического ускорителя видеокарты; либо когда организуется одновременная работа равноправных устройств, выполняющих сходные задачи. Последний случай (см. рис. 6.1) также предполагает различные подходы — с выделением управляющего и подчиненных устройств (асимметричное мультипроцессирование), либо с использованием полностью равноправных (симметричное мультипроцессирование).

Разные подходы к реализации мультипроцессирования

Рис.
6.1.
Разные подходы к реализации мультипроцессирования

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

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

  • наиболее массовыми являются так называемые SMP (Shared Memory Processor или Symmetric MultiProcessor) машины. В таких компьютерах несколько процессоров подключены к общей оперативной памяти и имеют к ней равноправный и конкурентный доступ (см. рис. 6.2). По мере увеличения числа процессоров производительность оперативной памяти и коммутаторов, связывающих процессоры с памятью, становится критически важной. Обычно в SMP используются 2-8 процессоров; реже число процессоров достигает десятков. Взаимодействие одновременно выполняющихся процессов осуществляется посредством использования общей памяти, к которой имеют равноправный доступ все процессоры.

    SMP компьютер

    Рис.
    6.2.
    SMP компьютер

  • при необходимости создания систем с качественно большим числом процессоров прибегают к MPP (Massively Parallel Processors) системам. Для этого используют несколько однопроцессорных или SMP-систем, объединяемых с помощью некоторого коммуникационного оборудования в единую сеть (см. рис. 6.3). При этом может применяться как специализированная высокопроизводительная среда передачи данных, так и обычные сетевые средства — типа Ethernet. В MPP системах оперативная память каждого узла обычно изолирована от других узлов, и для обмена данными требуется специально организованная пересылка данных по сети. Для MPP систем критической становится среда передачи данных; однако в случае мало связанных между собой процессов возможно одновременное использование большого числа процессоров. Число процессоров в MPP системах может измеряться сотнями и тысячами.

    MPP система

    Рис.
    6.3.
    MPP система

  • иногда используют так называемые NUMA и cc-NUMA архитектуры; они являются компромиссом между SMP и MPP системами: оперативная память является общей и разделяемой между всеми процессорами, но при этом память неоднородна по времени доступа. Каждый процессорный узел имеет некоторый объем оперативной памяти, доступ к которой осуществляется максимально быстро; для доступа к памяти другого узла потребуется значительно больше времени (см. рис. 6.4). cc-NUMA отличается от NUMA тем, что в ней на аппаратном уровне решены вопросы когерентности кэш-памяти (cache-coherent) различных процессоров. Формально на NUMA системах могут работать обычные операционные системы, созданные для SMP систем, хотя для обеспечения высокой производительности приходится решать нетипичные для SMP задачи оптимального размещения данных и планирования с учетом неоднородности памяти.

    NUMA или cc-NUMA система

    Рис.
    6.4.
    NUMA или cc-NUMA система

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

Windows содержит встроенные механизмы, необходимые для работы на SMP; также возможна установка этой ОС на cc-NUMA системах (современные версии Windows имеют механизмы поддержки cc-NUMA систем). Специальных, встроенных в ОС средств для исполнения приложений на MPP системах в Windows не предусмотрено. Windows предполагает альтернативное применение MPP систем, построенных на обычных сетях, для реализации web- или файловых серверов с балансировкой нагрузки по узлам кластера.

Мультипрограммирование

Мультипрограммирование (то есть одновременное выполнение разного кода на одном или нескольких процессорах) возможно и без реального мультипроцессирования. Конечно, при наличии только одного процессора должен существовать некоторый механизм, обеспечивающий переключение процессора между разными выполняемыми потоками. Такой режим разделения процессорного времени позволяет одному процессору обслуживать несколько задач «как бы одновременно»: осуществляя быстрое переключение между разными задачами и выполняя в данный момент времени код только одной задачи, процессор создает иллюзию одновременного выполнения кода разных задач. Более того, даже на многопроцессорных системах при реальной возможности распараллеливания задач по разным процессорам, обычно используют механизм разделения времени на каждом из доступных процессоров. Формально мультипрограммирование предполагает именно разделение процессорного времени, поэтому иногда его противопоставляют мультипроцессированию: реализация многозадачности на одном процессоре в противовес использованию многих процессоров.

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

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

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

Планирование задач

Рис.
6.5.
Планирование задач

Динамическое расписание предполагает составление плана выполнения задач непосредственно во время их выполнения. Выделяют динамическое планирование с использованием квантов времени — когда каждой выполняемой задаче назначают определенной продолжительности квант времени (фиксированной или переменной продолжительности) и планирование с использованием приоритетов — когда задачам назначают специфичные приоритеты и переключение задач осуществляют с учетом этих приоритетов. В реальных операционных системах обычно имеет место какая-либо комбинация этих подходов.

Понятия абсолютных и относительных приоритетов связаны с их влиянием на момент переключения с одной задачи на другую: в системах с абсолютными приоритетами такое переключение выполняется, как только в очереди готовых к исполнению задач появляется задача с более высоким приоритетом, чем выполняемая. В системах с относительными приоритетами появление более приоритетной задачи не приводит к немедленному переключению — момент переключения задач будет определяться по каким-либо иным критериям.

Выделяют понятия вытесняющей и невытесняющей многозадачности: в случае невытесняющей многозадачности решение о переключении принимает выполняемая в данный момент задача, а в случае вытесняющей многозадачности такое решение принимается операционной системой (или иным арбитром), независимо от работы активной в данный момент задачи.

На приведенном графе состояний задачи (см. рис. 6.6) прямая линия от состояния «выполнение» к состоянию «готовность» нарисована пунктиром, чтобы выделить отличие невытесняющей многозадачности от вытесняющей. В случае невытесняющей многозадачности выполняющаяся задача может либо завершиться, либо перейти в состояние «ожидание».

Граф состояния задачи

Рис.
6.6.
Граф состояния задачи

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

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

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

Характерный пример невытесняющей многозадачности — 16-ти разрядные Windows (включая собственно 16-ти разрядные версии Windows, выполнение 16-ти разрядных приложений в Windows-95, 98, ME и выполнение 16-ти разрядных приложений в рамках одной Windows-машины в NT, 2000, XP и 2003). В таких приложениях операционная система не прерывает выполнение текущей задачи до вызова ею функций типа GetMessage или WaitMessage, во время которых Windows осуществляет при необходимости переключение на другую задачу.

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

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

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

Большинство современных операционных систем используют комбинированные планировщики, одновременно применяющие квантование с переменной продолжительностью кванта и абсолютные или относительные приоритеты (см. рис. 6.7).

Моменты перепланирования задач

Рис.
6.7.
Моменты перепланирования задач

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

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

Работа планировщика существенно усложняется в случае SMP машин, когда необходимо принимать во внимание привязку задач к процессорам (иногда задаче можно назначить конкретный процессор) и то, на каком процессоре задача выполнялась до того (это позволяет эффективнее использовать кэш-память процессора).

Реализации Windows NT, 2000, XP, 2003+ предусматривают достаточно развитый и сложный планировщик, учитывающий множество факторов и корректирующий как назначение и длительность отводимых задаче квантов, так и приоритеты задач. При этом планировщик является настраиваемым, и его логика работы несколько отличается в зависимости от настроек системы (некоторые доступны через панель управления) и от назначения системы (работа планировщика различна у серверов и рабочих станций).

Важно отметить, что Windows является гибкой системой разделения времени с вытесняющей многозадачностью и не может рассматриваться в качестве системы реального времени. Даже те процессы, которые с точки зрения Windows относятся к классу процессов так называемого «реального времени», на самом деле требованиям, предъявляемым к системам реального времени, не удовлетворяют. Такие процессы получат приоритетное распределение процессорного времени и будут обрабатываться планировщиком с учетом их «особого статуса»; однако при этом нельзя гарантировать строгого выполнения временных ограничений. Более того, в силу используемых механизмов управления памятью, нельзя точно предсказать время, необходимое для выполнения той или иной операции. В любой момент времени при самом невинном обращении к какой-либо переменной или функции может потребоваться обработка ошибок доступа, подкачка выгруженных страниц, освобождение памяти и т.д. — то есть действия, время завершения которых предсказать крайне трудно. Фактически можно давать лишь вероятностные прогнозы по времени выполнения той или иной операции. До определенных рамок Windows можно применять в мягких системах реального времени — с достаточно свободными ограничениями, но даже незначительная вероятность превышения временных ограничений иногда просто недопустима.

Базовая терминология

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

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

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

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

В Windows для обозначения этих понятий использованы термины process (процесс), thread (поток) и fiber (волокно). Достаточно часто термин «thread» переводится на русский язык как «нить», а не «поток». Термин «fiber» также может переводиться либо как «нить», либо как «волокно». Поток соответствует потоку ядра и планируется ядром операционной системы, а волокно соответствует потоку пользователя и планируется в приложении пользователя.

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

  • Могучий сисадмин скачать windows 7
  • Моды для final fantasy 15 windows edition
  • Могу ли я активировать windows 10 еще на одном компьютере
  • Многозадачность операционной системы windows заключается в том что она
  • Моды для minecraft windows 10 edition