С интернетом и периферией?С d-bus, с файловой системой, с вводом-выводом, с другими процесами
по минимальной нагрузке на ядро или цп.И как мы ее будем определять? Просто round-robin'ом раскидать процессы по инстансам не получится, тормоза от ожидания удаленных ресурсов перевесят выигрыш от распределенности
Allwinner H5 - 4-х ядерный 64-битный процессор. Можно ли использовать эти 64 бита?Allwinner - это arm архитектура, Intel - x86, даже если оба 64 битные, набор команд, набор регитсров и еще куча всего отличается в корне. Да даже на базовом уровне, arm - это RISC, а x86 - CISC
Читая статьи наткнулся на hyper-v, а потом на xen - видимо он мне и нужен?hyper-v - работает в ядре винды
Значит нужен патч к ядру а не к подсистеме ядра?Ну в общем случае Вы тут одной подсистемой не отделаетесь, ибо помимо запуска и выполнения процессы еще и с окружающим миром взаимодействуют.
Если кластер подключен, то все задачи запускать распределенно, что бы задачи друг у друга ресурсы не забирали.А по какому принципу будем распределять задачи? Тут нужно соблюсти баланс, чтоб и IPC не тормозило и все задачи на 1 инстанс не свалились.
Именно это я ихотел сформулировать)) Но что тут можно сделать?Или транслировать код непосредственно перед запуском (что создаст доп нагрузку), или эмулировать другую архитектуру через виртуализацию (опять оверхед)
Ребята не нужны. Мне интересно самому с этим поработать.Дерзайте. Только сначала еще много чего изучить придется.
Пожалуйста, расскажите подробнее, я не понял, как на голом железе. Имете ввиду gpio сообщение, или прошивку загрузчика, что бы сделать это одним устройством? Не понимаю пока что.Гуглите "гипервизор 1 типа"
К тому же, у Rust очень высокий порог входа. Вот прям оченьНу не знаю... 2 недели у меня ушло на вдумчивое прочтение The book of Rust с опробованием примеров. После этого где-то 1й месяц я изредка натыкался на ситуации, когда не сходились лайфтаймы. Но и это быстро прошло. Компилятор реально помогает тебе, подсказывает как можно разрешить ситуацию, надо всего лишь читать, что он пишет. При этом это не надо гуглить, оно все человекопонятно. Rust конечно далеко не первый мой ЯП, но путь от "не знаю язык совсем" до "решаю на языке конкретные проблемы" с Rust у меня занял гораздо меньше времени, чем с любым другим ЯП, которые я знаю.
Прочел learn javacsript ruвсе сразу встало на свои места)) Проблема Кантора, что он теоретик, он никогда ничего кроме примеров своего учебника не разрабатывал.
В чем жесть ?
// потеряли имя функций, хорошего дебага
const vehicleFactory = function (config) {
// создаем 2 (3, 5, 10?) объекта в памяти, и пофик, что по факту нам нужен будет только 1
const MoveBehaivor = {
move(){
console.log('move')
}
}
const TankMoveBehaivor = {
move(){
// я так понимаю тут подразумевается дублирование кода из MoveBehaivor?
console.log('move')
console.log('as tank') // отличие от метода для автомобилей
}
}
switch (config.type) {
case 'car' :
// зачем то копируем объект, хотя создали мы его в этой же функции
const car = Object.assign({},MoveBehaivor)
return car
case 'tank' :
const vehicle = Object.assign({},TankMoveBehaivor)
return vehicle
}
}
ну и еще в догонку, а вот эти функции move в наших конструируемых объектах, они как то зависят от замыкания внутри нашей фабрики? Ну например от config? Если нет, как в примере, то категорично нужно выносить за пределы фабрики, дабы не плодить лишних функций в памяти.Как бы вы подошли к решению ?
// функции вынесли из фабрики
// фабрика скорее всего будет экспортирована из модуля
// а эти функции нет, так что это нормально
function move() {
console.log('move');
}
function moveTank() {
// вместо дублирования кода передаем управление другой функции
move();
console.log('as tank');
}
// даем функции имя, дабы видеть его в дебаге, а не (anonymous function)
export function vehicleFactory(config) {
switch(config.type) {
case 'car':
// создаем объекты там где они нужны
const car = {move};
return car;
case 'tank':
const vehicle = {move: moveTank};
return vehicle;
}
}