Успешная команда проверки сценария оболочки Linux [дубликат]

Для защиты памяти не требуется MMU подкачки.

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

Но базовая защита памяти может быть реализована только с помощью более простой «сегментации», которая, вероятно, была доступна для ранних реализаций Unix. Например, защищенная память ядра может быть помещена в сегмент, для которого установлено значение «нет доступа» при выполнении кода пользовательского режима. Даже в современной ОС Linux с разбивкой на страницы системные вызовы brk () и sbrk () существуют как ограничения совместимости со времен сегментированных реализаций.

По сути, сегментация подобна постраничному MMU, за исключением того, что вы получаете только фиксированное количество «страниц» переменного размера (фактически называемых сегментами) вместо переменного количества страниц фиксированного размера.

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

1
06.12.2016, 01:20
4 ответа

Согласно ошибке:

./test.sh: 3: ./test.sh: [[: not found

Ваш / bin / sh не является bash , а [[ зависит от bash. Используйте одиночные скобки [ или test ).
А также используйте -ne для числовых условных выражений. ! = будет работать в вашем конкретном случае, но это плохая практика.

3
27.01.2020, 23:14

Dash не имеет [[, только []. Но даже с [, есть причины предпочесть , если ваша_команда вместо ваша_команда; если [$? = 0] . (Первый вариант более простой, быстрый и устойчивый к сбоям в режиме set -e ).

0
27.01.2020, 23:14

Ошибка в , если [["$?" ! = 0]]; тогда сравнение чисел

не выполняется с использованием ! = Вместо этого предполагается использовать -ne .

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

Кроме того, правильный синтаксис для состояния кода выхода последней выполненной команды - $? без кавычек.

если [[$? -ne 0]]; затем

2
27.01.2020, 23:14

Я думаю, вы используете тире для выполнения скрипта, потому что / bin / sh является ссылкой , поэтому вы можете вместо этого использовать bash , например #! / bin / bash , а затем это предупреждение

1
27.01.2020, 23:14

Теги

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