Проблемы, создающие собственную Cloud Lab

Во-первых, программа может сделать свою собственную выходную буферизацию. Это иногда называют “stdio буферизующий” после названия компонента библиотеки, который выполняет эту задачу в C: функции как putc, fputs, fprintf, и т.д., объявленный в stdio.h. Если это сделает, то это произведет вывод в пакетах, обычно нескольких килобайтов (когда вывод будет терминалом, значение по умолчанию должно сбросить буфер в каждом символе новой строки).

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

(Это возможно, но вряд ли в этом situtation, что программа установила дескриптор файла канала как неблокирование. Если это верно, если ядро решит, что не может скопировать данные, то оно возвратит управление программе; write системный вызов возвращается 0. Программа, которая делает такие системные вызовы неблокирования, обычно звонила бы select или poll или epoll в цикле для блокирования, пока одни из дескрипторов файлов, на которых это связывается, не готовы к вводу или выводу.)

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

1
18.01.2014, 10:02
1 ответ

Необходимо использовать devstack. Взгляните на инструкции здесь: http://devstack.org/guides/single-machine.html

1
27.01.2020, 23:53
  • 1
    испытает его позже. кажется, интересен. как временное решение я с VMware теперь. –  x4k3p 20.01.2014, 03:17
  • 2
    Обратите внимание, что можно настроить devstack для использования vSphere в качестве механизма виртуализации: wiki.openstack.org/wiki/NovaVMware/DeveloperGuide –  Barak 20.01.2014, 09:38
  • 3
    хорошо, спасибо. Я работаю с рабочей станцией VMware как временное решение, потому что я должен установить много. Но vSphere, кажется, очень интересен. –  x4k3p 21.01.2014, 01:43

Теги

Похожие вопросы