Файл: Процессы в операционной системе Linux.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.11.2023

Просмотров: 123

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
САМАРКАНДСКИЙ ФИЛИАЛ ТАШКЕНТСКОГО УНИВЕРСИТЕТАИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ ИМЕНИ МУХАММАДА АЛЬ-ХОРАЗМИЙЛабораторная работа 4Кафедра: “Компьютер инжиниринг.”По предмету:Управление  Linux серверами.Тема: Процессы в операционной системе LinuxВыполнил: Стедент 20 – 09 группы, Баронов Ш.Проверил: Нормурадов У .Самарканд 2023Лабораторная работа № 4.Процессы в операционной системе LinuxЦель работы: изучение процессов в операционной системе Linux. Лабораторная работа посвящена процессам операционной системы Linux. Поскольку администрирование операционной системы в конечном счете сводится к управлению процессами. Каждый раз при запуске программы на выполнение создается процесс. Процессом называется выполняемая в данный момент программа или ее потомки. Каждый процесс запускается от имени какого-то пользователя. Процессы, которые стартовали при загрузке, обычно выполняются от имени пользователей root или nobody. Каждый пользователь может управлять поведением процессов, им запущенных. При этом пользователь root может управлять всеми процессами – как запущенными от его имени, так и процессами, порожденными другими пользователями операционной системы. Управление процессами осуществляется с помощью утилит, а также посредством некоторых команд командной оболочки shell. Каждый процесс в системе имеет уникальный номер – идентификационный номер процесса (Process Identification, PID). Этот номер используется ядром операционной системы, а также некоторыми утилитами для управления процессами. Выполнение процесса на переднем плане и в фоновом режиме. Процессы могут выполняться на переднем плане (foreground) — режим по умолчанию и в фоновом режиме (background). На переднем плане в каждый момент для текущего терминала может выполняться только один процесс. Однако пользователь может перейти в другой виртуальный терминал и запустить на выполнение еще один процесс, а на другом терминале еще один и т. д. Процесс переднего плана – это процесс, с которым взаимодействует пользователь. Этот процесс получает информацию с клавиатуры (стандартный ввод) и посылает результаты на экран (стандартный вывод).
Фоновый процесс после своего запуска благодаря использованию специальной команды командной оболочки отключается от клавиатуры и экрана, т. е. не ожидает ввода данных со стандартного ввода и не выводит информацию на стандартный вывод, а командная оболочка не ожидает окончания запущенного процесса, что позволяет пользователю немедленно запустить еще один процесс. Обычно фоновые процессы требуют очень большого времени для своего завершения и не требуют вмешательства пользователя во время существования процесса. К примеру, компиляция программ или архивирование большого объема информации – кандидаты номер один для перевода процесса в фоновый режим. Процессы могут быть отложенными. Отложенный процесс – это процесс, который в данный момент не выполняется и временно остановлен. После того как процесс остановлен, он может быть продолжен как на переднем плане, так и в фоновом режиме. Возобновление приостановленного процесса не изменит его состояния – при возобновлении он начнется с того места, на котором был приостановлен. Для выполнения программы в режиме переднего плана достаточно просто набрать имя программы в командной строке и запустить ее на выполнение. После этого вы можете работать с программой. Для запуска программы в качестве фонового процесса достаточно набрать в командной строке имя программы и в конце добавить знак амперсанта (&), отделенный пробелом от имени программы и ее параметров командной строки, если таковые имеются. Затем программа запускается на выполнение. Задание

  1. Запустите программу shell в фоновом режиме с подавлением потока вывода.

  2. Проверьте состояния процессов, воспользовавшись командой jobs.
Моя программа делает конвертацию текстовой строки в hex формат за таблицей ASCII. После чего идет процедура logicOperEnd где от первого и второго символа массива outputString отнимается 20 для того чтобы (если символ в нижнем регистре) перейти в его hex формат верхнего регистра. После чего я не могу понять как мне реализовать конвертацию hex формата верхнего регистра в dec формат.Код:.model small.stack 100h.datainput_msg db 'Vvedi chto-nibud:', 13, 10, '$'max_len_buf db 124len_buf db 0buf db 121 dup(0)output_msg db 'hex:', 13, 10outpString db 364 dup(' ')hex_table db '0123456789ABCDEF'errF db '*** Error: Wrong Format ***', '$'errL db '*** Error: Out of Limits ***', '$'crlf db 0Dh,0Ah,'$'

.codestart:mov ax, @datamov ds, axxor ax, axcall maincall exit2osmain proc nearcall inputcall convertStringcall outputcall outputCRLFcall logicOperEndcall outputCRLFcall outputCRLFcall outputmain endperror_exit:mov al, 1call exit2osinput procmov ah, 9mov dx, offset input_msgint 21hmov ah, 0Ahmov dx, offset max_len_bufint 21hmov ah, 2mov dl, 10int 21hretendpconvertString procxor di, dixor si, simov bx, offset hex_tablexor ch, chmov cl, len_bufconvertLoop:call convertByteloop convertLoopmov outpString[di], '$'retendpconvertByte procmov ah, buf[si]cmp ah, 3Fh ; Проверяем, находится ли символ в диапазоне от "00" до "3F"ja validChar ; Если символ допустимый, переходим к validCharcall errFormat ; Если символ недопустимый, вызываем обработчик ошибки errFormatretvalidChar:mov al, ahshr al, 4xlatmov outpString[di], alinc dimov al, ahand al, 0Fhxlatmov outpString[di], alinc diinc diinc si; Проверка на программное переполнениеcmp di, 364jbe convertByteEnd; Если переполнение, вызываем обработчик ошибки errLimitscall errLimitsconvertByteEnd:retendpoutputCRLF procmov dx, offset crlf ; Загрузка адреса crlf в регистр DXmov ah, 9 ; Функция 9 - вывод строкиint 21h ; Вызываем прерывание 21h для вывода строкиretoutputCRLF endplogicOperEnd proc nearmov di, offset outpString ; Загружаем адрес начала строки outpString в регистр DImov al, [di] ; Загружаем первый символ строки в регистр ALsub al, 2 ; Вычитаем 2 из первого символаmov ah, 0 ; Очищаем регистр AHmov dl, al ; Переносим значение AL в DL для выводаmov ah, 2 ; Функция 2 - вывод символаint 21h ; Вызываем прерывание 21h для вывода символаmov bx, ax ; Сохраняем первое значение в регистре BXinc di ; Увеличиваем значение DI, чтобы перейти ко второму символуmov al, [di] ; Загружаем второй символ строки в регистр ALsub al, 0 ; Вычитаем 0 из второго символаmov ah, 0 ; Очищаем регистр AHmov dl, al ; Переносим значение AL в DL для выводаmov ah, 2 ; Функция 2 - вывод символаint 21h ; Вызываем прерывание 21h для вывода символаmov [outpString], bl ; Сохраняем первое значение в начало outpStringmov [outpString+1], al ; Сохраняем второе значение в outpString+1retlogicOperEnd endpconvertDecimal procconvertDecimal endperrLimits proc near ; обработчик ошибки errLimitslea dx, errLcall outputErrormov al, 2call exit2oserrLimits endperrFormat proc near ; обработчик ошибки errFormatlea dx, errFcall outputError

mov al, 1

call exit2os

errFormat endp

exit2os proc near

mov ah, 4ch

int 21h

ret

exit2os endp

outputError proc

mov ah, 9

int 21h

ret

endp

output proc

mov dx, offset output_msg

mov ah, 9

int 21h

ret

endp

end start