Главная страница

Лаба. Лабораторные работы (47). Лабораторная работа Основы интерфейса командной строки ос gnu linux Цель работы Приобретение практических навыков общения с операционной системой на уровне командной строки (вход и выход,


Скачать 109.84 Kb.
НазваниеЛабораторная работа Основы интерфейса командной строки ос gnu linux Цель работы Приобретение практических навыков общения с операционной системой на уровне командной строки (вход и выход,
АнкорЛаба
Дата04.11.2022
Размер109.84 Kb.
Формат файлаdocx
Имя файлаЛабораторные работы (47).docx
ТипЛабораторная работа
#770244
страница2 из 4
1   2   3   4



127.0.0.1 localhost.localdomain localhost

# End of file

1.2.5. Основные возможности текстового редактора mcedit

mcedit — является встроенным текстовым редактором для файлового менеджера Midnight Commander (или mc), который позволяет редактировать различные файлы размером до 64 Мб. К основным возможностям этого редактора можно отнести: копирование блока символов, перемещение, уда­ление, вырезка, вставка и др.

Например, чтобы создать в текущем каталоге файл addition.txt и на­чать его редактирование, можно набрать:

mcedit addition.txt

В общем случае для запуска mcedit может быть использован следующий синтаксис:

mcedit [-bcCdfhstVx?] [+число] file

Некоторые параметры mcedit пояснены в табл. 1.2.


Таблица 1.2 Некоторые параметры mcedit

Параметр

Действие

+число

-b

переход к указанной числом строке черно-белая цветовая гамма

-c

-d

-V

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

Клавиша F9 служит для вызова меню. В табл. 1.3 приведён список наи­более часто используемых горячих клавиш (Meta — условное обозначение для набора мета-клавиш, обычно это Alt или Esc):
Таблица 1.3 Список наиболее часто используемых горячих клавиш mcedit

Горячие клавиши

Действие

| Ctrl |+| Ins |

копировать

|Shift]+[lns |

вставить

[shift|+[Del]

вырезать

|ctrl]+[Del]

удалить выделенный текст

[F3J

начать выделение текста (повторное нажатие | F31 за-




кончит выделение)

| Shift |+| F3

начать выделение блока текста (повторное нажатие




| F3 | закончит выделение)




скопировать выделенный текст




переместить выделенный текст

| F8 |

удалить выделенный текст

|Meta|+| l |

переход к строке по её номеру

|Meta|+| q |

вставка литерала (непечатного символа)

Таблица 1.3 Список наиболее часто используемых горячих клавиш mcedit (окончание)



выполнить внешнюю команду и вставить в позицию под курсором её вывод

занести выделенный фрагмент во внутренний буфер обмена mc (записать во внешний файл)

удалить часть строки до конца строки создать новый файл

включить или выключить подсветку синтаксиса выбрать кодировку текста

отменить действия

перейти в конец следующего слова

удалить строку

перейти на начало предыдущего слова

вставка текста из внутреннего буфера обмена mc (про­читать внешний файл)

диалог перехода к определению функции возврат после перехода к определению функции переход вперёд к определению функции

включение/отключение отображения номеров строк отодвигает вправо выделенный текст, если выключе­на опция «Постоянные блоки»

отодвигает влево выделенный текст, если выключена опция «Постоянные блоки»

выделение текста

выделение вертикального блока

переключение режима отображения табуляций и про­белов

переключение режима «Автовыравнивание возвра­том каретки»

Клавиши (обычно Alt + Tab или Esc + Tab) служат для автозавершения и завершают слово, на котором находится курсор, используя ранее использо­вавшиеся в файле.

При помощи команды man mc можно получить дополнительную инфор­мацию по mc.

1.2.6. Полезные комбинации клавиш

Для удобства и экономии времени при работе в терминале существует большое количество сокращённых клавиатурных команд.

Клавиши со стрелками.

Клавиши Т и 4. позволяют увидеть историю предыдущих команд в bash. Количество хранимых строк определено в переменной окружения histsize. Клавиши и -+ перемещают курсор влево и вправо в текущей строке, позволяя редактировать команды.

Сочетания клавиш Ctri-a и Ctri-e перемещают курсор в начало и в конец текущей строки. Клавиши Ctrl-k удаляет всё от текущей позиции курсора до конца строки, а Ctri-w или Alt-Backspace удаляют слово перед курсором.

Сочетание клавиш Ctri-d в пустой строке служит для завершения текущего сеанса. Для завершения выполняющейся в данный момент команды мож­но использовать Ctri-c . Также данное сочетание отменит редактирование командной строки и вернёт приглашение командной строки. Ctri-i очищает экран.

1.3. Порядок выполнения работы

1. Войдите в систему ОС Linux, введя свои логин и пароль.

2. Последовательно изучите основные консольные команды, описанные в указаниях к работе.

3. Воспользовавшись командой pwd, узнайте полный путь к своей домашней директории.

4. Пользуясь командами cd и ls, посмотрите содержимое корневого ката­лога, домашнего каталога, каталога /etc и каталога /usr/local.

5. Пользуясь изученными консольными командами, создайте в своём до­машнем каталоге подкаталог lab01, а в нём файл addition.txt.

6. C помощью стандартного текстового редактора (например, редактора mcedit) запишите в файл addition.txt свои имя и фамилию.

7. Пользуясь командой ls, убедитесь, что все действия выполнены успешно.

8. Выведите на экран содержимое файла addition.txt, используя команду cat.

9. Пользуясь изученными консольными командами, удалите созданные файл addition.txt и каталог

/lab01.

1.4. Содержание отчёта

Отчёт должен включать:

1) титульный лист;

2) формулировку цели работы;

3) описание задания и результаты его выполнения:

- листинги программ (если они есть в задании);

- краткое описание всех действий, сделанных при выполнении заданий;

- результаты выполнения команд и программ (снимок экрана).

4) выводы, согласованные с целью работы;

5) ответы на контрольные вопросы.

1.5. Контрольные вопросы

1. Дайте определение командной строки. Приведите примеры.

2. Как определить абсолютный путь к текущей директории?

3. Как удалить файл и каталог?

4. Как определить, какие команды выполнил пользователь в сеансе работы?

5. Какая информация выводится на экран о файлах и каталогах, если ис­пользуется опция -l в команде ls?

6. Что такое относительный путь к файлу? Приведите примеры.

7. Назовите необходимые условия, для того чтобы пользователь мог начать работать в системе типа UNIX (на примере терминального класса, в котором выполнялась лабораторная работа).

Список литературы

1. Newham C. Learning the bash Shell: Unix Shell Programming. — O’Reilly Media, 2005. — 354 p. — (In a Nutshell). — ISBN 0596009658.

2. Робачевский А., Немнюгин С., Стесик О. Операционная система UNIX. — 2-е изд. — БХВ-Петербург, 2010. — 656 с. — ISBN 978-5­94157-538-1.

3. Таненбаум Э., Бос Х. Современные операционные системы. —4-е изд. — СПб. : Питер, 2015. — 1120 с. — (Классика Computer Science).

4. GNU Bash Manual. — 2016. — URL: https : / / www . gnu . org / software/bash/manual/.

5. Robbins A. Bash Pocket Reference. — O’Reilly Media, 2016. — 156 p. — ISBN 978-1491941591.

6. Zarrelli G. Mastering Bash. — Packt Publishing, 2017. — 502 p. — ISBN 9781784396879.


ЛАБОРАТОРНАЯ РАБОТА № 2. СТРУКТУРА И ПРОЦЕСС ОБРАБОТКИ ПРОГРАММ НА ЯЗЫКЕ АССЕМБЛЕРА NASM

2.1. Цель работы

Освоение процедуры компиляции и сборки программ, написанных на ассемблере NASM.

2.2. Предварительные сведения

2.2.1. Основные принципы работы компьютера

Основными функциональными элементами любой электронно-вычис­лительной машины (ЭВМ) являются центральный процессор, память и периферийные устройства

Взаимодействие этих устройств осуществляется через общую шину, к которой они подключены. Физически шина представляет собой большое количество проводников, соединяющих устройства друг с другом. В совре­менных компьютерах проводники выполнены в виде электропроводящих дорожек на материнской (системной) плате.

Основной задачей процессора является обработка информации, а также организация координации всех узлов компьютера. В состав центрального процессора (ЦП) входят следующие устройства:

- арифметико-логическое устройство (АЛУ) — выполняет логические и арифметические действия, необходимые для обработки информации, хранящейся в памяти;

- устройство управления (УУ) — обеспечивает управление и контроль всех устройств компьютера;

- регистры — сверхбыстрая оперативная память небольшого объёма, вхо­дящая в состав процессора, для временного хранения промежуточных результатов выполнения инструкций; регистры процессора делятся на два типа: регистры общего назначения и специальные регистры.

Другим важным узлом ЭВМ является оперативное запоминающее устройство (ОЗУ). ОЗУ — это быстродействующее энергозависимое за­поминающее устройство, которое напрямую взаимодействует с узлами процессора, предназначенное для хранения программ и данных, с кото­рыми процессор непосредственно работает в текущий момент. ОЗУ состоит из одинаковых пронумерованных ячеек памяти. Номер ячейки памяти — это адрес хранящихся в ней данных.

В состав ЭВМ также входят периферийные устройства, которые можно разделить на:

- устройства внешней памяти, которые предназначены для долговремен­ного хранения больших объёмов данных (жёсткие диски, твердотельные накопители, магнитные ленты);

- устройства ввода-вывода, которые обеспечивают взаимодействие ЦП с внешней средой.

В основе вычислительного процесса ЭВМ лежит принцип программного управления. Это означает, что компьютер решает поставленную задачу как последовательность действий, записанных в виде программы. Программа состоит из машинных команд, которые указывают, какие операции и над какими данными (или операндами), в какой последовательности необходимо выполнить.

Набор машинных команд определяется устройством конкретного про­цессора. Коды команд представляют собой многоразрядные двоичные комбинации из 0 и 1. В коде машинной команды можно выделить две части: операционную и адресную. В операционной части хранится код команды, которую необходимо выполнить. В адресной части хранятся данные или адреса данных, которые участвуют в выполнении данной операции.

При выполнении каждой команды процессор выполняет определённую последовательность стандартных действий, которая называется командным циклом процессора. В самом общем виде он заключается в следующем:

1) формирование адреса в памяти очередной команды;

2) считывание кода команды из памяти и её дешифрация;

3) выполнение команды.

Данный алгоритм позволяет выполнить хранящуюся в ОЗУ программу. Кроме того, в зависимости от команды при её выполнении могут проходить не все этапы.

Более подробно введение о теоретических основах архитектуры ЭВМ см. в [3; 6].

2.2.2. Ассемблер и язык ассемблера

Язык ассемблера (assembly language, сокращённо asm) — машинно-ори­ентированный язык низкого уровня. Можно считать, что он больше любых других языков приближен к архитектуре ЭВМ и её аппаратным возможно­стям, что позволяет получить к ним более полный доступ, нежели в языках высокого уровня, таких как C/C++, Perl, Python и пр. Заметим, что получить полный доступ к ресурсам компьютера в современных архитектурах нельзя, самым низким уровнем работы прикладной программы является обращение напрямую к ядру операционной системы. Именно на этом уровне и работают программы, написанные на ассемблере. Но в отличие от языков высокого уровня ассемблерная программа содержит только тот код, который ввёл про­граммист. Таким образом язык ассемблера — это язык, с помощью которого понятным для человека образом пишутся команды для процессора.

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

Программы, написанные на языке ассемблера, не уступают в качестве и скорости программам, написанным на машинном языке, так как транслятор просто переводит мнемонические обозначения команд в последовательно­сти бит (нулей и единиц).

Используемые мнемоники обычно одинаковы для всех процессоров одной архитектуры или семейства архитектур (среди широко известных — мне­моники процессоров и контроллеров x86, ARM, SPARC, PowerPC, M68k). Таким образом для каждой архитектуры существует свой ассемблер и, соот­ветственно, свой язык ассемблера.

Наиболее распространёнными ассемблерами для архитектуры x86 явля­ются:

- для DOS/Windows: Borland Turbo Assembler (TASM), Microsoft Macro Assembler (MASM) и Watcom Assembler (WASM);

- для GNU/Linux: gas (GNU Assembler), использующий AT&T-синтаксис, в отличие от большинства других популярных ассемблеров, которые используют Intel-синтаксис.

20

Лабораторная работа № 2. Структура и процесс обработки программ

Более подробно о языке ассемблера см., например, в [5].

В нашем курсе будет использоваться ассемблер NASM (Netwide Assembler) [1; 2; 4].

NASM — это открытый проект ассемблера, версии которого доступны под различные операционные системы и который позволяет получать объ­ектные файлы для этих систем. В NASM используется Intel-синтаксис и поддерживаются инструкции x86-64.

Типичный формат записи команд NASM имеет вид:

[метка:] мнемокод [операнд {, операнд}] [; комментарий]

Здесь мнемокод — непосредственно мнемоника инструкции процессору, которая является обязательной частью команды. Операндами могут быть числа, данные, адреса регистров или адреса оперативной памяти.

Программа на языке ассемблера также может содержать директивы — инструкции, не переводящиеся непосредственно в машинные команды, а управляющие работой транслятора. Например, директивы используются для определения данных (констант и переменных) и обычно пишутся большими буквами.

2.2.2.1. Структура ассемблерной программы

Рассмотрим пример простой программы на языке ассемблера NASM. Традиционно первая программа выводит приветственное сообщение Hello world! (Здравствуй мир!) на экран. Назовём файл с кодом программы hello.asm и запишем в него следующий текст:

; hello.asm

SECTION .data ; Начало секции данных

hello: DB 'Hello world!',10 ; 'Hello world!' плюс

; символ возврата каретки

helloLen: EQU $-hello ; Длина строки 'Hello world!'

SECTION .text

; Начало секции кода

GLOBAL start

start:

mov eax,4

mov ebx,1

mov ecx,hello

mov edx,helloLen

; Точка входа в программу

; Системный вызов для записи (sys_write)

; Описатель файла $1$ - стандартный вывод

; Адрес строки hello в ecx

; Размер строки hello

int 80h ; Вызов ядра

mov eax,1

mov ebx,0 int 80h

; Системный вызов для выхода (sys_exit)
1   2   3   4


написать администратору сайта