Какие операционные системы, доступные для 8-разрядного микропроцессора? [закрытый]

Лучший способ сделать это - использовать структуру агрегации для вычисления нашего нового поля.

MongoDB 3.4

Наиболее эффективное решение в MongoDB 3.4 с помощью $addFields и $out операторов конвейерной агрегации.

db.collection.aggregate(
    [
        { "$addFields": { 
            "name": { "$concat": [ "$firstName", " ", "$lastName" ] } 
        }},
        { "$out": "collection" }
    ]
)

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

MongoDB 3.2 и 3.0

. Мы делаем это с помощью $project наших документов и используем оператор агрегации строк $concat для возврата конкатенированной строки , we Оттуда вы затем перебираете курсор и используете оператор обновления $set , чтобы добавить новое поле в ваши документы, используя массовые операции для максимальная эффективность.

Запрос на агрегирование:

var cursor = db.collection.aggregate([ 
    { "$project":  { 
        "name": { "$concat": [ "$firstName", " ", "$lastName" ] } 
    }}
])

MongoDB 3.2 или новее

из этого, вам нужно использовать bulkWrite .

var requests = [];
cursor.forEach(document => { 
    requests.push( { 
        'updateOne': {
            'filter': { '_id': document._id },
            'update': { '$set': { 'name': document.name } }
        }
    });
    if (requests.length === 500) {
        //Execute per 500 operations and re-init
        db.collection.bulkWrite(requests);
        requests = [];
    }
});

if(requests.length > 0) {
     db.collection.bulkWrite(requests);
}

MongoDB 2.6 и 3.0

В этой версии вам необходимо использовать устаревший API Bulk и его связанные методы .

var bulk = db.collection.initializeUnorderedBulkOp();
var count = 0;

cursor.snapshot().forEach(function(document) { 
    bulk.find({ '_id': document._id }).updateOne( {
        '$set': { 'name': document.name }
    });
    count++;
    if(count%500 === 0) {
        // Excecute per 500 operations and re-init
        bulk.execute();
        bulk = db.collection.initializeUnorderedBulkOp();
    }
})

// clean up queues
if(count > 0) {
    bulk.execute();
}

MongoDB 2.4

cursor["result"].forEach(function(document) {
    db.collection.update(
        { "_id": document._id }, 
        { "$set": { "name": document.name } }
    );
})

8
задан tofro 1 November 2016 в 09:40
поделиться

14 ответов

Тем, которые предлагают конечные автоматы вместо ОС, потому что у них есть мало служебное, Вы могли бы хотеть проверить Contiki. Это является очень маленьким и свободным. Это не имеет традиционной модели потоков, вместо этого это использует ProtoThreads: http://www.sics.se/~adam/pt/.

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

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

4
ответ дан 5 December 2019 в 06:11
поделиться

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

0
ответ дан 5 December 2019 в 06:11
поделиться

Я испытываю некоторые затруднения в обеспечении типа 8-разрядного процессора, который Вы планируете использовать здесь - в основном, если это будет что-либо достаточно мощное для выполнения чего-нибудь как ОС (H8, например), то Вы почти наверняка найдете, что микро с удаленной сердцевиной ARM будет столь же дешевым.

0
ответ дан 5 December 2019 в 06:11
поделиться

Повод - RTOS, который работает в крошечных местах (ТМ). - Скромный ROM повода и миниатюрные требования RAM означают, что у Вас могут быть событийно-ориентированные, основанные на приоритете, многозадачные приложения почти в любом однокристальном микроконтроллере, с большим количеством комнаты уехал в Ваше приложение. С Поводом Вы можете: Реализуйте новые проекты быстро *, Улучшают функциональность с помощью существующих ресурсов *, Улучшают производительность в реальном времени * Многозадачный.

1
ответ дан 5 December 2019 в 06:11
поделиться

Softools также обеспечивает ОС (названный TurboTask) для Процессоров Кролика.

Существует библиотека, которая предоставляет основное планирование задач Кролику. Библиотека работает с компилятором Softools, но не компилятором кролика.

1
ответ дан 5 December 2019 в 06:11
поделиться

Я полагаю, что Contiki будет работать. Adam Dunkels делает некоторый действительно интересный материал.

Это работает на большом количестве платформ, включая Commodore 64.

4
ответ дан 5 December 2019 в 06:11
поделиться

Я использовал uC/OS на Z180 (машина на 8 битов). Я должен был портировать на нашу пользовательскую окруженную валом модель памяти. Но иначе было большим, особенно имея подробную книгу, описывающую всю функциональность. И даже при том, что это был RTOS, мы все еще должны были использовать потоки и т.д. очень экономно.

2
ответ дан 5 December 2019 в 06:11
поделиться

Rabbit Semiconductor имеет порт MicroC/OS II для их процессоров.

3
ответ дан 5 December 2019 в 06:11
поделиться

Это, вероятно, не, что Вы хотите, но для MSX и Armstrad, там абсолютно удивительный GUI ОС по имени SymbOS (http://www.symbos.de/). То, что удивительно об этом, то, что это было полностью сделано одним немецким парнем по имени Prodatron (http://www.prodatron.net/). Это имеет реальную многозадачность и много приложений, что Вы ожидали бы от современной ОС:

  • SymCommander - Клон Norton Commander.
  • SymPlay - видеоплеер, видео должны быть предварительно обработаны, но после этого они работают очень гладкий и одновременно с другими приложениями.
  • SymSee - средство просмотра изображения, снова изображения должны преобразованный в формат CPC сначала.
  • SymAmp - аудиоплеер, модули средства отслеживания поддержек и даже MP3-s со специальным оборудованием.
  • Калькулятор, Минный тральщик, Панель управления и т.д.

Я видел продемонстрированный, он - автор, и единственный комментарий от аудитории был, "Необходимо быть grazy!". Никто никогда не видел такие функции на 8-разрядном компьютере MSX прежде.

2
ответ дан 5 December 2019 в 06:11
поделиться

Существует также Uzix для MSX базирующиеся (z80) компьютеры, Unix Как, Совместимый Posix, работал в многозадачном режиме, приоритетный и с реализованным стеком TCP/IP.

1
ответ дан 5 December 2019 в 06:11
поделиться

Какова цель здесь? Встроенные Ose имеют тенденцию стоить много. (MicroC/OS II, и т.д.)

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

OMFG... Java НЕ принадлежит на процессоре на 8 битов. Я на самом деле попробовал ту микросхему Maxix/Dallas DS80C400. Это имело упрощенную ОС (чтение: планировщик), и стек TCP/IP испек на микросхеме, и это выглядело большим на таблице данных. Это была полная авария. Медленный, медленный, медленный!

Я закончил с основанным на FPGA мягким процессором и мягким MAC. Никакая ОС... Работавший отлично. После того как ошибка FIFO на самом деле отослала пакеты настолько быстро, что каждый Windows PC в сети запер основательные прерывания обработки (даже заблокированная мышь), пока я не надел питание на dev плату.

Я лично нашел довольно трудным написать так много кода для процессора на 8 битов, что Вам даже НУЖНА ОС. Я уверен, что некоторые приложения/ситуации могут сделать это более желательным, чем я видел. Единственное использование для ОС, которую я нашел, состоит в том, когда у Вас есть некоторое сложное устройство с драйверами устройств для определенной ОС, которую требуется использовать, и затем это не "общая ОС" вопрос больше.

Познакомьтесь с очень общей галочкой таймера на 1 мс + "энергозависимый символ g_TASKS []" глобальный список флага + простое основное () цикл, который проверяет флаги задачи и подпрограммы вызовов. Конечные автоматы являются Вашим другом. У Вас будет намного лучший дескриптор о том, как Ваша система собирается работать. Это шаблоны разработки процессоров на 8 битов.

Любое время, которое Вам нужна задача A ожидать задачи B завершить, затем добавляют состояние конечного автомата к задаче A и установили задачу B что состояние... или что-то вдоль тех строк.

Намного более полезное (по моему скромному мнению), перечисляет, имел бы хорошие процессоры на 8 битов для использования, не Ose. Вот были бы мои критерии: низкая мощность, превосходная отладка (OCD), превосходная среда разработки (или просто интеграция Eclipse), низкая стоимость, хорошая поддержка компилятора C и общая устойчивость платформы/отладчика/и т.д. отладки.

2
ответ дан 5 December 2019 в 06:11
поделиться

ВЫСОКОТЕХНОЛОГИЧНЫМИ функциями Salvo - HI-TECH Salvo является совместный, событийно-ориентированный, основанный на приоритете многозадачный RTOS. Это для процессоров с сильно ограниченной RAM (<256 байтов), работы в аппаратном вызове; возвратите стопку 8 уровней или меньше, поддержки 16 разделяют динамические приоритетные уровни задачи, и обеспечивает межзадачную коммуникацию и синхронизацию, коммуникационный обмен ISR к задаче и разделение ресурсов. Это - чрезвычайно маленькая RAM и место ROM, никакой указатель вершины стека PUSH/POP или требуемый указатель вершины стека, ROMable и расширяемый. Низкая задержка прерывания, быстрое контекстное переключение, и портативный - записанный в ANSI C, с минимальным компилятором.

1
ответ дан 5 December 2019 в 06:11
поделиться

Я писал еще в середине 70-х, а в 1982 году прекратил выпуск 8-битной ОС (SDOS) для Motorola 6800/6801 / 6809.Эти операционные системы были в нескольких вариантах:

  • Многопоточная работа в реальном времени (2 КБ ПЗУ + любое ОЗУ)
  • Однопользовательская дисковая операционная система (максимум 64 КБ памяти)
  • Многопользовательское разделение времени (15 пользователей в 1 МБ ОЗУ с использованием банков по 65 КБ. памяти, по одному на пользователя)
  • Распределенная ОС (однопользовательская или многопользовательская система с доступом к удаленным дискам)

Где вы были, когда мне понадобился заказчик: -? (Я отказался от этого, когда стало ясно, что IBM выбрала Билла Гейтса молниеносным королем микропроцессорных ОС).

[Я нашел руководства по SDOS для одного пользователя в Интернете по адресу http://www.bitsavers.org/pdf/softwareDynamics/]

3
ответ дан 5 December 2019 в 06:11
поделиться

HACK-RTOS для микроконтроллеров Zilog eZ8, eZ80 и ZNEO

1
ответ дан 5 December 2019 в 06:11
поделиться
Другие вопросы по тегам:

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