Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Что делают команды

Читайте также:
  1. Арифметические команды
  2. Бумажные талисманы чаще делают односторонними, т.е. символы наносятся на одну сторону, а на второй стороне пишется Ф.И.О. и дата рождения владельца.
  3. Внешние команды MS DOS
  4. ВНЕШНИЕ КОМАНДЫ MS DOS. (УТИЛИТЫ MS DOS).
  5. ВНИМАНИЕ!При выполнении действий, связанных с настройкой ленты в окне Параметры Word можно также использовать команды контекстного меню в области списка вкладок и групп на ленте.
  6. ВНУТРЕННИЕ КОМАНДЫ MS DOS.
  7. Дети и внуки вождей. Где они теперь живут и что делают?
  8. Дополнительные команды-утилиты
  9. Дошли до Нового Света,знаете- там шампанское неплохое делают (советую попробовать- не пожалеете, да и вино у них нехилое ). Еще сделали привал.
  10. Есть такое поверье, что если человек идет в лес, чтобы срубить елку, то все елки спрячутся или сделают вид, что они все больные и хмурые. Т.е. чтобы уберечься от топора.

 

3.1 Процесс как часть системы

 

Когда пользователь запускает программу на выполнение под UNIX, система создает специальную среду для этой программы. Эта среда содержит все необходимое для системы, чтобы выполнять программу, как если бы она была единственной выполняемой в данный момент программой.

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

- порождать новые процессы;

- завершать процессы;

- синхронизировать выполнение этапов процесса;

- управлять реакцией на наступление различных событий.

Выполнение процесса заключается в точном следовании набору инструкций, который является замкнутым и не передает управление набору инструкций другого процесса; он считывает и записывает информацию в свой раздел данных и в стек, но ему недоступны данные и стеки других процессов. Одни процессы взаимодействуют с другими процессами и с остальным миром посредством обращений к операционной системе. Благодаря различным обращениям к операционной системе, процессы выполняются независимо друг от друга.

Вообще, использование обращений к операционной системе дает возможность пользователю создавать программы, выполняющие сложные действия, и как следствие, ядро операционной системы UNIX не включает в себя многие функции, являющиеся частью «ядра» в других системах. Такие функции, и среди них компиляторы и редакторы, в системе UNIX являются программами пользовательского уровня. Наиболее характерным примером подобной программы может служить командный процессор shell, с которым обычно взаимодействуют пользователи после входа в систему. Shell интерпретирует первое слово командной строки как имя команды (во многих командах сама команда ассоциируется с ее именем), все остальные слова в командной строке трактуются как параметры команды.

 

 

3.2 Уровни выполнения процессов

 

Выполнение пользовательских процессов в системе UNIX осуществляется на двух уровнях:

- на уровне пользователя;

- на уровне ядра.

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

Основные различия между этими двумя режимами:

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

· В режиме ядра процессам уже доступны адресные пространства ядра и пользователей. Например, виртуальное адресное пространство процесса может быть поделено на адреса, доступные только в режиме ядра, и на адреса, доступные в любом режиме.

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

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

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

Сделанный вывод будет скорее относиться к «ядру», распределяющему ресурсы, или к «ядру», производящему различные операции, и это будет означать, что процесс, выполняемый в режиме ядра, распределяет ресурсы и производит соответствующие операции. Например, командный процессор shell считывает вводной поток с терминала с помощью запроса к операционной системе. Ядро операционной системы, выступая от имени процессора shell, управляет функционированием терминала и передает вводимые символы процессору shell. Shell переходит в режим задачи, анализирует поток символов, введенных пользователем, и выполняет заданную последовательность действий, которые могут потребовать выполнения и других системных операций.

 

 

3.3 Прерывания и особые ситуации

 

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

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

 

 

3.4 Уровни прерывания процессора

 

   
 
 
 
Рис.9 Стандартные уровни прерываний

 

 


Ядро иногда обязано предупреждать возникновение прерываний во время критических действий, могущих в случае прерывания привести к порче информации. Например, во время обработки списка с указателями возникновение прерывания от диска для ядра нежелательно, т.к. при обработке прерывания можно потерять или затереть указатели. Обычно имеется ряд привилегированных команд, устанавливающих уровень прерывания процессора в слове состояния процессора. Установка уровня прерывания на определенное значение отсекает прерывания этого и более низких уровней, разрешая обработку только прерываний с более высоким приоритетом. На Рис.9 показана последовательность уровней прерывания. Если ядро игнорирует прерывания от диска, в этом случае игнорируются и все остальные прерывания, кроме прерываний от часов и машинных сбоев.

 

 

3.5 Создание процессов

 

С практической точки зрения процесс в системе UNIX является объектом, создаваемым в результате выполнения системной операции fork. Каждый процесс, за исключением нулевого, порождается в результате запуска другим процессом операции fork. Функция fork создает новый процесс. Порождаемый процесс представляет собой точную логическую копию процесса-родителя. На выходе из функции процессу-родителю возвращается код идентификации потомка, потомку – нулевое значение. Процесс, запустивший операцию fork, называется родительским, а вновь созданный процесс – порожденным.

Хотя операции fork вполне хватает на то, чтобы породить новый процесс, ее недостаточно для запуска другой программы, отличной от родительской. Для этого существует функция exec (точнее говоря, семейство функций). Функция exec не порождает новый процесс, а просто переписывает его. Другими словами, exec замещает один процесс новым. При этом идентификатор процесса не изменяется, т.е. система и родитель “видят” процесс таким, как и прежде. Операция exec оставляет все файлы открытыми, предоставляя их новому процессу. Если предварительно было произведено перенаправление стандартных файлов ввода-вывода, оно сохраняется и для нового процесса.

 

Пример

Рассмотрим программу procs.c:

 

#include <unistd.h>

#include <stdio.h>

#include <sys/types.h>

 

main()

{

pid_t Pid;

 

printf ("splitting the parent...\n");

 

if (Pid = fork() == 0)

{

/* 1 */ printf ("child %d is going to sleep...\n",Pid);

execl ("/bin/sh", "sh", "-c", "sleep 5", NULL);

/* 2 */ printf ("child woke up\n");

}

 

wait ((int*) 0);

printf ("parent %d done\n",Pid);

}

 

Процесс, выполняющийся в программе procs, запускает операцию fork, чтобы породить новый процесс. Новый процесс, именуемый порожденным процессом, являет собой точную копию процесса-родителя. Код завершения операции fork для потомка равен 0, поэтому выполняется ветка if-условия: печатается первое (/* 1 */) сообщение и вызывается операция execl. Эта операция полностью замещает порожденный процесс новым – sleep 5. В случае успешного выполнения операции execl, управление в вызвавший ее процесс не возвращается, поскольку процесс выполняется в новом адресном пространстве. При этом связь родитель-потомок не теряется. После выполнения команды sleep 5 (5-секундный сон) процесс-потомок завершается. Заметьте, что сообщение /* 2 */ не печатается, так как после завершения процесса-потомка управление родителю не передается.

Тем временем, процесс, запустивший операцию fork (родительский процесс), получает ненулевое значение кода завершения операции и вызывает операцию wait, которая приостанавливает его выполнение до тех пор, пока не закончится выполнение программы sleep 5. Затем процесс-родитель завершается. При работе программы на экран выводятся следующие сообщения:

 

splitting the parent...

child 0 is going to sleep...

parent 1 done

 

Каждый процесс имеет одного родителя, но может породить много процессов. Ядро системы идентифицирует каждый процесс по его номеру, который называется идентификатором процесса (PID).

Нулевой процесс является особенным процессом, который создается «вручную» в результате загрузки системы; после порождения нового процесса (процесс 1) нулевой процесс становится процессом подкачки. Процесс 1, известный под именем init, является предком любого другого процесса в системе и связан с каждым процессом особым образом.

 

 

Что делают команды

  1. Man: команда документации, руководства. Рассказывает о том что делают другие команды (например: man readline – полный список всех возможностей по вводу команд, man is: выдает описание всех опций команды is). Для поиска по подразделам ставится символ: man -S номер раздела
  2. Is – просмотр списка файлов в текущем директории
  3. Info -погружает пользователя в систему чтения гипертекста с информацией о GNU (основа ПО для Linux)
  4. Whatis слово: ищется в заголовках странниц руководства
  5. Apropos слово: менее строгие правила соответствия
  6. Which: путь исполняемого файла
  7. file: определение типа файла по его содержимому
  8. uname –a (all): краткая информация о системе
  9. who – какие пользователи в настоящий момент работают в системе
  10. ps: список всех запущенных процессов
  11. pstree: выдает дерево процессов
  12. jobs: список всех работ (задачи, приложения)
  13. echo: просмотр значения переменной (например: echo $название_переменной )
  14. cat – печать файлов которые указаны в качестве параметра. Команда, которая переписывает (без параметров) стандартный вход и стандартный выход. При ее помощи можно вывести на экран содержимое файла: cat <filename
  15. cp: копирует один файл в другой (например cp file1 file2)
  16. mv: перемещение (переименование файла)
  17. rm: удаление файла
  18. expr: вычисление выражения, заданного при помощи параметров
  19. Bc - калькулятор
  20. dc -калькулятор
  21. find «папка» «выражение» – посмотреть все папки и все подпапки и ко всем файлам применить выражение
  22. xargs - объединяет зафиксированный набор заданных в командной строке начальных аргументов с аргументами, прочитанными со стандартного ввода, и выполняет указанную команду один или несколько раз.
  23. mkdir – makedir – создать папку
  24. chown – change owner изменяющая владельца и/или группу для указанных файлов
  25. chmod – change mode изменяет права доступа к файлам, директориям и символическим ссылкам.
  26. wc – кол-во строк, слов символов в файле
  27. test: команда проверки выполнения условия (например test –f file.txt проверяет существует ли файл с именем file.txt b является ли он обычным файлом)
  28. tr – копирует стандартный входной поток в стандартный выходной, подставляя или удаляя некоторые символы
  29. mail - отправка пользователям почты или ее чтение
  30. write – (write пользователь [терминал])отправляет сообщение другому пользователю, который имеет сессию в этой же системе. В отличие от утилиты talk, переписка посредством write возможна только в пределах одной системы.
  31. sleep - выполняет задержку на указанное время
  32. diff -утилита сравнения файлов, выводящая разницу между двумя файлами. Эта программа выводит построчно изменения, сделанные в файле.
  33. cmp - сравнивает два файла, и если они различаются, сообщает о первом байте и строке, где было обнаружено различие.
  34. head: отрезает начало файла (длина задается)
  35. tail: отрезает конец файла (длина задается)
  36. split: режет файл на части определенной длины
  37. mc - (midnight commander) один из файловых менеджеров с текстовым интерфейсом типа Norton Commander для UNIX-подобных операционных систем
  38. cron - демон-планировщик задач в UNIX-подобных операционных системах, использующийся для периодического выполнения заданий в определённое время.
  39. anacron -асинхронный или анахроничный cron. В отличие от cron не поддерживает запуск заданий по расписанию, вместо этого задания запускаются с заданым интервалом времени. Это очень удобно для систем которые работают не регулярно, например домашние рабочие станции или ноутбуки. Задачи Anacron хранятся в файле конфигурации:
  40. at (4 команды)
    1. at- запуск команды в определенное время
    2. atq -список заданий, заданных пользователем, если пользователь не суперпользователь; в этом случае, выдаются все задания
    3. atrm удаляет задания
    4. batch запускает команды, когда уровни загрузки системы позволяют это делать
  41. grep: ищет в стандартном вводе строки, содержание text в качестве подстроки (например grep text - ищет файл содержащий в имени text,)
  42. fgrep – grep который трактует символы $*[]^|()\ буквально.
  43. sort
  44. join
  45. nl
  46. fmt
  47. cut
  48. paste
  49. sed
  50. awk
  51. flex
  52. bison
  53. troff
  54. latex
  55. fop
  56. gst-launch
  57. gst-inspect
  58. wget
  59. curl
  60. ncftpget

 

2. Синтаксис простейшей команды: присваивания, имя, параметры, перенаправление ввода и вывода.

3. Синтаксис конвейера, цепочки, списка, составных команд, арифметической и условной команд, управляющих структур, определения функций, подстановок.

4. Синтаксис присваивания значения переменным и элементам массивов, использования этих значений в BASH и TCL.

5. Синтаксис простейших команд TCL и управляющих структур.

6. Синтаксис создания новых команд в TCL, команд global и upvar. Подстановки в TCL.

7. Что делают команды в TCL.

1. String- length строка кол-во символов в utf-8? String bytelength строка

2. Expr- не обращ внимания на пробелы, возможность вещ. Арифм., элем. Ф-ии, то что умеет TCL.

3. Glob - список файлов соотв. Шапблонам, не упоряд. По алфавиту

4. Filу – copy можно копировать папки

5. Open- имя режима

6. Close – закрывает общение с тек. процессом

7. Puts – вывод строки (puts “Holla!”)

8. Gets -

9. List -

10. Split -

11. Linsert -

12. Lreplace -

13. Lappend -

14. Lindex -

15. Array -

8. Что делают команды spawn, expect, send, wait в expect.

9. Что делают команды в Tk

1. Button -

2. Label -

3. Entry -

4. Text -

5. Scrollbar -

6. Frame -

7. Pack -

8. Grid -

9. Bind -

10. Send -

10. Синтаксис регулярных выражений.

11. Синтаксис адресов и команд р, s, е, у, w, г в sed.

12. Синтаксис образцов и действий в awk.

13. Синтаксис правил для make.

14. Общая структура документа, формы управляющей информации на примере troff, latex и xsl-fo.

15. Что делают в m4 макроопределения

1. Changequote

2. Changecom

3. Define

4. Undefined

5. Pushdef

6. Popdef

7. Indir

8. Builtin

9. Defn

10. Ifdef

11. Ifelse

12. Dnl

13. m4wrap

14. divert

15. undivert

16. divnum

17. include

18. sinclude

19. incr

20. decr

21. eval

22. len

23. index

24. regexp

25. patsubst

26. substr

27. translit

28. format

 

16. Последовательность команд для настройки, компиляции и установки программы, полученной в виде исходников.

17. Команды для создания файлов configure и Makefile.in.

18. Опции SPIN для выполнения модели в каждом из трех режимов и построения анализатора. Команды компиляции и запуска анализатора для проверки модели и поиска холостых циклов.

19. Базовые типы и синтаксис декларации переменных и констант языка Promela. Стр. 40 пдф

20. Синтаксис операторов timeout, if, do, блокировки по условию, последования операторов, утверждений, break, goto, skip, else, атомарные последовательности операторов, передача в каналы сообщений, чтение и проверка каналов, определение процессов в Promela (процессы стр.41)

21. Понятия элемента, входа, выхода, набора, конвейера в GStreamer.

22. Общие принципы работы CGI.

23. Понятия субъекта, объекта и его класса безопасности, контекста безопасности и идентификатора безопасности, решения о пометке (переходе), решения о доступе, векторов доступа и протоколирования, типа, области, роли.

 




Дата добавления: 2014-12-19; просмотров: 43 | Поможем написать вашу работу | Нарушение авторских прав

<== предыдущая лекция | следующая лекция ==>
Структура процессов| Введение в OC Linux. Перенаправление ввода-вывода. Программные каналы (конвейеры).

lektsii.net - Лекции.Нет - 2014-2024 год. (0.038 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав