Реализация компьютерной многозадачности через виртуальную организацию поточной обработки
Иллюстрации
Показать всеИзобретение относится к способу и устройству для одновременного выполнения многочисленных задач на компьютере. Технический результат заключается в расширении функциональных возможностей за счет организации многопоточной обработки. При работе компьютера множество команд байт-кода или псевдокода сохраняют в памяти компьютера. Для каждого из множества задач или заданий, которые выполняет компьютер, автоматически создается соответствующий виртуальный поток выполняемых контекстных данных, который включает в себя местоположение в памяти следующей одной из команд псевдокода, которые должны выполняться при выполнении соответствующей задачи или задания и значения любых требуемых локальных переменных. Каждую задачу или задание обрабатывают в соответствующей последовательности квантов времени или интервалов времени обработки под управлением соответствующего виртуального потока. 5 н. и 40 з.п. ф-лы, 11 ил.
Реферат
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Настоящее изобретение относится к способу и соответствующему устройству для одновременного выполнения многочисленных задач на компьютере.
Наиболее современные операционные системы имеют собственную многозадачность или возможность организации многопоточной обработки, то есть возможность организации многопоточной обработки, встроенной в операционную систему. Известными исключениями являются версии операционной системы Макинтош (Macintosh) (MacOS), предшествующие ОС Х (OS X), которые обладают небольшими возможностями или возможностями без организации многопоточной обработки. К сожалению, выполненные возможности организации многопоточной обработки отличаются в зависимости от операционной системы и платформы аппаратных средств. Многочисленные платформы устанавливают пределы на общее количество потоков, которые могут существовать одновременно, и некоторые платформы вообще не позволяют организовать многопоточную обработку.
Для того чтобы правильно понять приведенные проблемы организации многопоточной обработки в программном обеспечении и их решения, необходимо понять общий подход к организации многопоточной обработки и специфический подход, используемый большинством систем организации поточной обработки с собственной платформой.
Для того чтобы сразу выполнить многочисленные задачи обработки, очевидным решением является обеспечение многочисленных наборов схем обработки в компьютерной системе. Однако обычный настольный компьютер имеет только один процессор, и даже мощные рабочие станции имеют не более одного - четырех процессоров.
Решением на основе программного обеспечения является квантование времени, то есть разделение времени процессора на ряд очень маленьких частей (квантов), и закрепление за каждым квантом, в свою очередь, различной задачи или потока. Как правило, каждый поток может выполнять работу в интервале от 3 мс до 30 мс в зависимости от операционной системы, и по истечении этого времени работа потока приостанавливается, после чего другой поток может выполнять работу. Операционная система обычно использует прерывание процессора по таймеру для периодического прерывания текущего выполняемого потока и запуска планировщика потоков операционной системы, часть программного обеспечения которого сохраняет состояние текущего потока или контекст выполнения, выбирает новый поток для выполнения работы, восстанавливает сохраненный контекст выполнения нового потока и затем позволяет процессору продолжить нормальное выполнение своих функций. Этот процесс называется контекстным переключением.
В дополнение к происходящему, когда квант времени истек, может также происходить контекстное переключение, если поток входит в состояние ожидания, то есть в состояние, в котором поток не должен ничего выполнять до тех пор, пока не произойдет специфическое событие. Когда поток входит в такое состояние, активизируется планировщик потока, и контекстное переключение происходит так, чтобы некоторый другой поток мог использовать остаток кванта времени.
Типичное событие, которое вызывает переход потока в состояние ожидания, происходит тогда, когда поток пытается обратиться к памяти, которая была разбита на страницы на диске. Операционная система приостанавливает поток до тех пор, пока система памяти не будет иметь шанс выполнить разбиение на страницы в памяти. Другими событиями, вызывающими переход потока в состояние ожидания, являются проверка потока для пользовательского ввода и попытка потока выполнить считывание с диска. В последнем случае операционная система приостанавливает поток до тех пор, пока не завершится считывание диска, позволяя другим потокам выполнять задачи обработки, в то время как первый поток ожидает считывания данных с диска. Еще одно событие, которое может стимулировать переход потока в состояние ожидания, происходит тогда, когда поток специфическим образом предоставляет остаток своего кванта времени. Это может происходить в случае, если, например, поток в течение некоторого времени не выполняет никакой работы.
Так как контекстные переключения могут происходить с большой частотой, это критично для контекстного переключения, работающего чрезвычайно быстро. В многочисленных операционных системах установлены пределы на число потоков, которые могут существовать в системе. Windows 95 имеет максимально число, равное приблизительно 150-200 потокам перед тем, как система станет нестабильной, тогда как BeOS имеет максимум 4096 потоков на один процессор. Такое ограничение по числу потоков является результатом предварительного выделения операционной системой (по причинам производительности) при загрузке системы участка памяти фиксированного размера для таблицы потоков.
Стандартные неинтерпретируемые языки программирования компилируют исходный код, удобный для восприятия человеком, в машиночитаемый код или код на машинном языке, непосредственно считываемый с помощью процессора.
Интерпретируемый язык, с другой стороны, компилирует код, удобный для восприятия человеком, в код, считываемый интерпретатором, или в байт-код. Программа, реализованная программно, которая называется интерпретатором и написана на машинном языке, далее считывает байт-код и выдает команды процессору на выполнение соответствующих операций.
Основное преимущество интерпретируемого языка заключается в том, что байт-код можно выполнить так, чтобы машина была независимой, позволяя при этом выполнять программу, написанную на языке и скомпилированную в байт-код, на любой операционной системе и платформе аппаратных средств, для которой был написан интерпретатор.
При разработке интерпретируемого языка, который должен работать одинаковым образом на всех платформах, надежда на собственную организацию многопоточной обработки платформы в лучшем случае может быть проблематичной. Цель межплатформенного интерпретируемого языка программирования состоит в том, чтобы сделать возможным разработку программы на языке на одной платформе и затем выполнять эту программу без изменений на любой другой платформе, поддерживаемой языком. Язык Джава (Java) является одним примером попытки создать такой язык.
К сожалению, если такое приложение будет многопоточным, то использование собственных возможностей организации многопоточной обработки незамедлительно ограничит платформы, на которых может выполняться приложение. Прикладная программа незамедлительно прекращает работу большинства версий MacOS (которые не обладают способностью организации поточной обработки), и в зависимости от того, сколько требуется одновременно выполняемых потоков прикладной программы, это может помешать работе Windows 95 (максимум около 150 - 200 потоков), BeOS (максимум 4096 потоков на один процессор) или других платформ.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Настоящее изобретение нацелено на решение вышеупомянутых проблем и обеспечение возможности многозадачности в компьютерах, имеющих различные платформы и различные операционные системы. В соответствии с изобретением независимое от платформы средство организации многопоточной обработки выполнено посредством интерпретатора, т.е. программы, реализованной программно, которая интерпретирует команды, которые составляют интерпретируемый язык программирования. Интерпретатор осуществляет многозадачность путем создания, поддержки и обработки в соответствии с виртуальными потоками. Это решение устраняет зависимость от возможности организации многопоточной обработки на собственной платформе и обеспечивает надежное средство межплатформенной организации многопоточной обработки с использованием интерпретируемого языка программирования.
В типичном интерпретируемом языке программирования каждая команда в программе должна считываться с помощью интерпретатора и поступать в процессор. Это означает, что интерпретируемая программа будет обычно выполняться более медленно, чем программа на машинном языке. Добавление кода в интерпретатор для проверки таймера или счетчика при каждой машинной кодированной команде, как это делают при известной организации многопоточной обработки или квантовании времени, и выполнение контекстного переключения, когда необходимо, сильно воздействует на производительность интерпретируемой программы.
Соответственно, настоящее изобретение предусматривает выполнение контекстных переключений только между последовательными командами псевдокода, а не во время выполнения псевдокодовых команд. Таким образом, компьютер, использующий многозадачность или многопоточность, как это раскрыто здесь, повторно выполняет команды, эквивалентные многочисленным командам на машинном языке без проверки таймера или счетчика.
Способ работы компьютера содержит, согласно настоящему изобретению, этапы, в соответствии с которыми сохраняют в компьютерной памяти множество псевдокодовых команд, причем, по меньшей мере, некоторые из псевдокодовых команд содержат множество команд в машинных кодах, и для каждого из множества задач или заданий, подлежащих выполнению с помощью компьютера, автоматически создают соответствующий виртуальный поток выполняемых контекстных данных, включающий в себя (a) ячейку памяти следующей одной из псевдокодовых команд, которые должны выполняться при выполнении соответствующей задачи или задания, и (b) значения любых локальных переменных, которые требуются для выполнения соответствующей задачи или задания. Каждая из множества задач или заданий влечет за собой выполнение соответствующей одной из псевдокодовых команд, содержащих множество команд на машинном языке. Способ дополнительно содержит этапы, в соответствии с которыми обрабатывают каждую из задач или заданий в соответствующей последовательности квантов времени или интервалов времени обработки под управлением соответствующего виртуального потока и в каждом контекстном переключении между различными виртуальными потоками совершают такое контекстное переключение только после полного выполнения текущего выполнения одной из псевдокодовых команд.
Вместо принятия известного подхода "виртуальная машина" имитации мелкомодульных команд на машинном языке (подход, используемый Java) виртуальная организация поточной обработки согласно настоящему изобретению использует интерпретируемый язык с более грубыми командами, то есть каждая команда выполняет намного большую задачу.
Например, на машинном языке (или интерпретируемый язык, который имитирует машинный язык) рисование прямоугольника, который может состоять из нескольких сотен или тысячи команд, причем каждая команда устанавливает цвет одного из пикселей внутри прямоугольника.
При виртуальной организации поточной обработки одиночная команда используется для рисования прямоугольника, и интерпретатор обрабатывает остальное на машинном языке. Это означает, что проверки для потенциального контекстного переключения, выполненные после каждой команды, необходимо выполнять только один раз для всей операции рисования прямоугольника, а не после каждого пикселя.
Результатом является то, что интерпретатор может производить многопоточную обработку без серьезного отрицательного воздействия на производительность.
В соответствии с другим признаком настоящего изобретения каждая из виртуальных потоков является частью соответствующего связанного списка виртуальных потоков. Каждый из виртуальных потоков включает в себя указатель на следующий виртуальный поток в соответствующем связанном списке. Компьютерный способ дополнительно содержит для каждого контекстного переключения между различными виртуальными потоками справочные данные указателя выполняемого виртуального потока для определения идентификационной информации следующего виртуального потока, который будет выполняться.
Общей проблемой, с которой сталкиваются при осуществлении многопоточной обработки на собственной платформе, является ограничение числа потоков (как активных, так и неактивных), которые могут одновременно существовать в системе.
В Windows 95/98, например, если общее количество потоков во всех приложениях достигает приблизительно 150-200, то система становится сильно неустойчивой. Поведение, которое проявляет испытательная система, сталкивающаяся с таким состоянием работы, включает в себя спонтанные перезагрузки, случайный ввод данных с клавиатуры, случайное перемещение мыши, нарушение работы запоминающих устройств и случайные сбои при работе приложений.
Одним результатом более грубых (крупных) наборов команд, используемых при виртуальной организации поточной обработки, является то, что время контекстного переключения не является критическим. Это означает, что, принимая дополнительное время, которое требуется для сохранения потоков в связанном списке, в качестве приемлемого, результатом является то, что виртуальная организация поточной обработки допускает очень большое число потоков, ограниченных только общей памятью, имеющейся в системе.
Настоящее изобретение предусматривает то, что виртуальные потоки, которые управляют или осуществляют промежуточное выполнение задач или заданий с помощью компьютера, сохраняются в множестве связанных списков, включающих в себя список неактивных виртуальных потоков, список активных виртуальных потоков и список поставленных в очередь виртуальных потоков. Компьютерный способ дополнительно содержит периодическое перемещение, по меньшей мере, одного виртуального потока из списка поставленных в очередь виртуальных потоков в список активных виртуальных потоков. Перемещение виртуального потока из списка поставленных в очередь виртуальных потоков в список активных виртуальных потоков в общем включает в себя (a) установку флага (семафора) для блокировки списка поставленных в очередь виртуальных потоков, (b) последующее изменение указателей в (i) перемещенном виртуальном потоке, (ii), по меньшей мере, одном виртуальном потоке первоначально в списке активных виртуальных потоков и (iii), по меньшей мере, одном виртуальном потоке, остающемся в списке поставленных в очередь виртуальных потоков, и (c) после этого возвращают в исходное положение или сбрасывают флаг для того, чтобы разрешить доступ к списку поставленных в очередь виртуальных потоков.
В соответствии с другим признаком настоящего изобретения каждый из виртуальных потоков включает в себя флаг (семафор), при этом компьютерный способ дополнительно содержит установку этого флага выбранного одного из виртуальных потоков, последующее изменение данных в выбранном виртуальном потоке и после этого возврат в исходное положение или сброс флага для того, чтобы разрешить доступ к выбранному виртуальному потоку. Установка флага выбранного потока, изменение данных и возврат в исходное положение или сброс флага можно выполнить в ответ на сообщение из другого одного из виртуальных потоков. Модификация данных обычно включает в себя изменение указателя выбранного виртуального потока.
В соответствии с другим признаком настоящего изобретения каждому из виртуальных потоков назначают очередь сообщений, при этом компьютерный способ дополнительно содержит ввод сообщения в очередь сообщений выбранного одного из виртуальных потоков во время выполнения задачи или задания в соответствии с еще одним из виртуальных потоков. Эти потоки могут соответствовать соответствующим задачам или заданиям, полученным из различных программ приложений, посредством чего ввод сообщения в очередь сообщений выбранного одного из виртуальных потоков осуществляет передачу данных между различными программами приложений. В другом приложении обмена сообщениями между потоками выбранный поток и другой поток являются посредническими или интерфейсными потоками на различных компьютерах. В этом случае ввод сообщения в очередь сообщений включает в себя передачу сообщения по линии связи между компьютерами. Линия связи может представлять собой частную компьютерную сеть или, например, глобальную компьютерную сеть, известную как Интернет.
Как предполагалось выше, создание виртуальных потоков, обработка задач или заданий в соответствующей последовательности квантов времени или интервалов времени обработки и совершение контекстных переключений включают в себя все работу компьютера под программой интерпретатора. Изобретение также предусматривает выполнение множества этапов программы интерпретатора на компьютере, при этом каждый этап соответствует собственному потоку. Каждый собственный поток создает соответствующий набор виртуальных потоков контекстных данных выполнения, обрабатывает каждую из множества задач или заданий в соответствующей последовательности квантов времени или интервалов времени обработки под управлением соответствующего виртуального потока и в каждом контекстном переключении между различными виртуальными потоками совершает такое контекстное переключение только после полного выполнения выполняющейся одной из псевдокодовых команд.
Выполнение многочисленных собственных потоков предпочтительно ограничено небольшим числом потоков на одиночном процессоре, например один или два потока. Там, где процессор обладает способностью внутренней организации многопоточной обработки, это ограничение освобождает другие потоки на основе собственной платформы для обработки других прикладных программ.
Так как виртуальная поточная обработка допускает неограниченное число создаваемых потоков и так как потоки имеют очень маленькие накладные расходы, программа, написанная на языке, который использует виртуальную организацию поточной обработки, может иметь преимущество в уникальном подходе программирования.
Этот подход программирования включает в себя использование большого числа потоков - один для каждого устройства пользовательского интерфейса на экране. Кнопка, например, имеет свой собственный поток. Полоса прокрутки имеет четыре потока - по одному для каждой кнопки, один для центральной полосы и один для главного потока. Потоки также не ограничены устройствами пользовательского интерфейса; например, программа сервера может создавать один поток для поддержки каждого клиентского запроса.
Типичное приложение может иметь в пределах от сотни потоков до нескольких тысяч потоков в зависимости от характера приложения. При выполнении в системе многочисленных заявок это позволяет быстро превысить возможности собственной организации поточной обработки Windows 95 (150-200 потоков), и это будет отрицательно влиять на производительность даже на платформах с большими или неограниченными возможностями организации поточной обработки. С другой стороны, виртуальная поточная обработка специально разработана для того, чтобы иметь дело с этими проблемами, делая возможным выполнение многочисленных приложений с десятками тысяч потоков без каких-либо проблем с производительностью. Такое широкое использование потоков значительно упрощает создание сложного приложения, потому что код интерфейса пользователя не должен хранить путь от сотен устройств интерфейса пользователя - каждый поток выполняет простую программу, которая сохраняет путь одиночного устройства интерфейса пользователя, за который этот поток отвечает.
Это приводит в результате к меньшим программам, которые проще создать, легче отлаживать и поддерживать.
В соответствии с другим признаком настоящего изобретения там, где выбранный один из виртуальных потоков находится в неактивном состоянии (например, в связанном списке неактивных потоков), компьютерный способ дополнительно содержит этапы, в соответствии с которыми формируют сообщение в ответ на ввод из источника, расположенного вне компьютера, производят вставку сообщения в очередь сообщений для выбранного виртуального потока, изменяют состояние выбранного потока из неактивного состояния в активное состояние, после этого осуществляют доступ к очереди сообщений для того, чтобы получить сообщение во время кванта времени или интервала времени обработки, назначенного для выбранного потока. Этот процесс является процессом, который используется для сдвига виртуального потока из неработающего или неактивного состояния в активное состояние в соответствии с появлением события, подходящего для соответствующего потока. Это событие можно сформировать с помощью источника, расположенного вне компьютера, например с помощью оператора, нажимающего клавишу клавиатуры, или с помощью установления связи из удаленного компьютера. Опосредованную интерпретатором виртуальную поточную обработку, согласно настоящему изобретению, можно располагать по приоритетам среди различных задач или заданий с помощью любого подходящего метода. Там, где каждый из виртуальных потоков включает в себя приоритет потока, компьютерный способ дополнительно содержит автоматическое обращение к приоритетам потоков в множестве виртуальных потоков для того, чтобы определить относительные свойства и изменение последовательности потоков в соответствии с определенными относительными приоритетами. В одной методике расположения по приоритетам данный поток, имеющий приоритет, который является общим числом, большим, чем приоритет второго потока, соответствует числу квантов времени или интервалов времени обработки, которое представляет собой общее число, большее, чем число квантов времени или интервалов времени обработки, соответствующих второму потоку.
Расположение по приоритетам виртуальных потоков (и, следовательно, их соответствующих задач) обеспечивает возможность также распределения загрузки обработки среди различных собственных потоков, где используется более одного собственного потока. Поток позволяет выделить задачу перераспределения виртуальных потоков из собственных потоков, имеющих больший, чем средний, приоритет задач для собственных потоков, имеющих приоритет, меньший, чем средний приоритет потоков. В целом, сдвиг потоков ограничен активными потоками.
Как описано ниже, задачи или задания, обработанные в соответствующей последовательности квантов времени или интервалов времени обработки под управлением соответствующих виртуальных потоков, включают в себя объекты управления, изображаемые на устройстве отображения компьютера, причем каждый из объектов составляет отдельную задачу или задание, назначенное соответствующему одному из виртуальных потоков. Обработанные задачи или задания, назначенные соответствующим виртуальным потокам интерпретатором, согласно настоящему изобретению дополнительно включают в себя контроль нажатия клавиш на клавиатуре компьютера. Каждая из клавиш образует отдельную задачу или задание, назначенное соответствующему одному из виртуальных потоков.
Временные интервалы или интервалы времени обработки измеряют предпочтительно путем подсчета последовательно выполненных псевдокодовых команд. Компьютерный способ дополнительно содержит для каждого из множества квантов времени или интервалов времени обработки завершение (прерывание) соответствующего интервала времени или интервал времени обработки после подсчета предопределенного числа последовательно выполненных псевдокодовых команд.
Многозадачный компьютер содержит в соответствии с конкретным вариантом осуществления настоящего изобретения память, устройство отображения, внешнее устройство ввода и, по меньшей мере, один процессор, подсоединенный в рабочем состоянии к памяти, устройству отображения и внешнему устройству ввода, при этом процессор имеет компилятор для преобразования команд исходной программы, введенной оператором, в байт-кодовые или псевдокодовые команды, причем компилятор связан в рабочем состоянии (оперативно) с памятью для предоставления возможности хранения в ней байт-кодовых или псевдокодовых команд. Процессор также имеет интерпретатор для выполнения байт-кодовых или псевдокодовых команд. Память хранит первый связанный список неактивных виртуальных потоков, второй связанный список активных виртуальных потоков и третий связанный список поставленных в очередь, или ожидающих, виртуальных потоков. Каждый из потоков включает в себя данные состояния или контекста, флаг (семафор) и указатель следующего потока в соответствующем списке. Интерпретатор подсоединен в рабочем состоянии (оперативно) к внешнему устройству ввода для распознавания события, выработанного внешним устройством ввода, и подсоединен в рабочем состоянии (оперативно) к памяти (a) для перемещения, по меньшей мере, одного из неактивных виртуальных потоков из первого связанного списка в третий связанный список, (b) для перемещения поставленных в очередь или ожидающих виртуальных потоков из третьего связанного списка во второй связанный список, (c) для выполнения команд согласно данным состояния и контекста различных виртуальных потоков во втором связанном списке в последовательных квантах времени или интервалах времени обработки в соответствии с предопределенным планировщиком заданий по приоритетам. Интерпретатор подсоединен в рабочем состоянии (оперативно) к устройству отображения частично для изменения объекта на устройстве отображения в ответ на команды, определенные с помощью соответствующего активного виртуального потока во втором связанном списке.
Память может дополнительно хранить четвертый связанный список собственных потоков. В том случае, когда интерпретатор представляет собой один из множества вариантов (экземпляров) общего интерпретатора, при этом каждый из вариантов общего интерпретатора соответствует соответствующему одному из собственных потоков. Кроме того, второй связанный список является одним из множества связанных списков активного потока, причем каждый из собственных потоков связан с помощью соответствующего указателя с соответствующим одним из связанных списков активного потока, хотя третий связанный список является одним из множества связанных списков поставленных в очередь потоков, при этом каждый из собственных потоков связан с помощью соответствующего указателя с соответствующим одним из связанных списков поставленного в очередь потока.
В соответствии с другой конкретной особенностью настоящего изобретения интерпретатор включает в себя запрограммированную схему для перемещения виртуального потока из первого собственного потока, имеющего загрузку тяжелее обычной, во второй собственный поток, имеющий загрузку легче обычной.
Список или таблица неактивных виртуальных потоков предпочтительно включают в себя множество потоков, назначенных соответствующим клавишам клавиатуры для обработки срабатываний соответствующих клавиш. Список или таблица неактивных потоков может дополнительно включать в себя множество потоков, назначенных соответствующим объектам в отображаемом изображении для обработки изменений вида соответствующих объектов.
Там, где интерпретатор включает в себя модуль контекстного переключения и счетчик команд, модуль контекстного переключения подсоединен в рабочем состоянии (оперативно) к памяти и счетчику команд для контекстного переключения из выполняемого активного потока второго связанного списка в следующий активный поток во втором связанном списке после выполнения предопределенного числа байт-кода или псевдокодовых команд согласно выполняемому активному потоку.
Каждый из виртуальных потоков включает в себя местоположение в памяти следующей команды для выполнения в соответствующем потоке, значения любых локальных переменных для соответствующего потока и приоритет выполнения для соответствующего потока.
В соответствии с другими особенностями настоящего изобретения память сохраняет множество очередей сообщений, назначенных соответствующим потокам, а также сохраняет, по меньшей мере, один промежуточный или интерфейсный поток, имеющий контекст выполнения для поддержания связи с удаленным компьютером через линию связи. Там, где линия связи представляет собой компьютерную сеть, такую как Интернет, промежуточный или интерфейсный поток содержит адрес памяти, указывающий программу сетевого протокола.
Многозадачный компьютер содержит в соответствии с другим вариантом осуществления настоящего изобретения память, сохраняющую данные состояния и контекста многочисленных потоков или задач, и интерпретатор для выполнения последовательностей байт-кодовых команд, каждая из которых состоит из многочисленных шагов набора команд, причем интерпретатор запрограммирован так, чтобы определять соответствующий виртуальный поток для каждой задачи, которая будет выполняться с помощью компьютера, выполнять байт-кодовые команды соответствующего текущего потока, выбранного из числа виртуальных потоков во время каждого кванта времени из ряда последовательных квантов времени, и выполнять контекстное переключение из одного из упомянутых виртуальных потоков в другой из виртуальных потоков только после выполнения одной из байт-кодовых команд.
Различные преимущества настоящего изобретения будут очевидны из их описания.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 изображает блок-схему компьютерной системы, обладающей способностью виртуальной организации поточной обработки, согласно настоящему изобретению.
Фиг.2 изображает блок-схему выбранных компонентов процессора (фиг.1), на которой показаны соединения этих компонентов с другими элементами системы (фиг.1).
Фиг.3 изображает блок-схему выбранных компонентов интерпретатора, показанного на фиг.2.
Фиг.4 изображает схему данных состояния потока, сохраненных в памяти, показывающую структуру связанного списка данных.
Фиг.5A и 5В изображают этапы алгоритма, показывающие выбранные операции, которые выполняет интерпретатор (фиг.2).
Фиг.6 изображает блок-схему, показывающую связь между двумя компьютерами, использующими виртуальную поточную обработку настоящего изобретения.
ОПРЕДЕЛЕНИЯ
Термин "многозадачность", используемый здесь, относится к одновременному выполнению многочисленных задач с помощью компьютера.
Термин "псевдокод", используемый здесь, относится к компьютерным командам, скомпилированным для выполнения с помощью интерпретатора. Интерпретатор представляет собой программу, которая служит для трансляции в программы в псевдокодах машинного языка и выполнения указанных операций, когда они транслируются. "Псевдокод" не относится к аппаратным средствам конкретного компьютера и требует преобразования в код, используемый компьютером перед тем, как можно будет использовать программу. Многочисленные псевдокодовые команды влекут за собой выполнение многочисленных команд на машинном языке. Псевдокод иногда называется "байт-кодом".
Термин "задача" или "задание" используется здесь для обозначения любой функции, выполняемой с помощью компьютера. Задачи или задания могут изменяться по своему масштабу от простой операции, такой как изменение содержимого регистра процессора, до больших и сложных операций, требующих выполнения многочисленных псевдокодовых команд. Примеры задач или заданий включают в себя (a) контроль внешних устройств пользовательского ввода, таких как клавиатуры и отдельные ее клавиши, (b) создание и изменение объектов на мониторе или устройстве отображения, таких как кнопки меню, окна, полосы прокрутки, пиктограммы и фоновые изображения, (c) связь с удаленными компьютерами по сети или другой линии связи, (d) прикладные программы, такие как текстовый процессор, электронные таблицы, мультимедийный проигрыватель, калькулятор и так далее, и (e) различные компоненты или функции прикладных программ, такие как редактирование, печать, проверка орфографии и другие функции текстового процессора.
Термин "квант времени" или "интервал времени обработки" используется здесь для обозначения отрезка времени работы процессора. В известных многозадачных компьютерах все кванты времени равны по длительности, которая измеряется с помощью масштаба времени или прерывания таймера. В соответствии с настоящим раскрытием изобретения кванты времени или интервалы времени обработки измеряются с помощью таймера, как в известных многозадачных компьютерах, или подсчета команд. В последнем альтернативном случае все кванты времени или интервалы времени обработки необязательно равны по длительности.
Используемый здесь термин "поток" относится к контексту выполнения для реализации или осуществления задания или задачи с помощью компьютера, при этом контекст выполнения используется или сопровождается в последовательности квантов времени или интервалов времени обработки. Термин "виртуальный поток", используемый здесь, относится к потоку, который создается, сохраняется, изменяется, обрабатывается и сопровождается (отслеживается) интерпретатором. Термин "собственный поток" используется здесь для обозначения потока, встроенного в операционную систему конкретного компьютера. Там, где операционная система компьютера имеет многочисленные возможности собственной организации поточной обработки, может быть использовано множество собственных потоков, при этом каждый такой собственный поток выполняет соответствующий вариант интерпретатора.
Термин "флаг" (семафор), который используется здесь, относится к объекту с возможностью блокировки, который можно установить или блокировать с помощью одного потока в данный момент времени для того, чтобы предотвратить доступ другим потокам к программе, виртуальному потоку, области памяти или другому компоненту компьютерной системы. Флаг используется с помощью реализаций собственной организации многопоточной обработки для синхронизации доступа к данным, которые совместно используются между потоками. Использование флагов важно потому, что такое использование предотвращает конфликты между многочисленными потоками, пытающимися изменить одни и те же данные в одно и то же время. Флаг используется для представления совместно используемых данных, при этом поток должен блокировать флаг перед попыткой доступа к данным.
"Связанный список" представляет собой структуру, используемую обычно в индустрии программных средств, где каждая запись в списке содержит адрес памяти следующей записи в списке. Это соединение позволяет вставлять или удалять записи из списка без перемещения других записей в списке. Удаление элемента просто приводит к изменению предшествующего элемента так, чтобы предшествующий элемент указывал адрес последующего элемента, таким образом освобождая память, используемую элементом.
Термин "контекстное переключение" используется здесь для обозначения процесса, в котором поток, выполняемый в текущий момент времени, прерывается, при этом состояние потока или контекст выполнения сохраняется, новый поток выбирается для выполнения, сохраненный контекст выполнения нового потока восстанавливается и следует непосредственно за следующими компьютерными операциями.
ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
Как показано на фиг.1, компьютерная система включает в себя процессор 12, клавиатуру 14, устройство 16 отображения и память 18. Процессор 12 подсоединен к удаленному компьютеру 20 через компьютерную сеть, такую как Интернет 22. Как показано на фиг.2, процессор 12 включает в себя интерпретатор 24, выполненный обычно в виде цифровых схем, характерных для компьютера и изменяемых посредством программирования для обеспечения многочисленных функций компьютера, которые включают в себя интерпретацию действий на клавиатуре и управление устройством 16 отображения и, в частности, внешний вид объектов на нем в ответ на ввод команд пользователем через клавиатуру 14 или в ответ на сообщения, получаемые из компьютера 20 по Интернету 22. Процессор 12 также включает в себя компилятор 26 (который может быть частью интерпретатора 24) для преобразования исходного текста, созданного человеком, в байт-код или псевдокод, который запоминается в памяти 18.
Как показано на фиг.3, интерпретатор 24 включает в себя блок 28 выполнения кода, подсоединенный в рабочем состоянии к памяти 18 для считывания байт-кода и выполнения операций в соответствии с байт-кодом. Интерпретатор 24