МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра САПР
ЗВІТ
До виконання лабораторної роботи №8
На тему: ОПЕРАЦІЙНА СИСТЕМА UNIX. ІНТЕРФЕЙС КОРИСТУВАЧА”
З курсу “ Системне програмування та операційні системи ”
Львів – 2012
МЕТА РОБОТИ
Мета роботи - отримати практичні навики використання командної мови та ознайомитись з особливостями реалiзацiї операцiйної cистеми UNIX.
КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
Основнi компоненти ОС UNIX
Ядро - керує основними ресурсами (процесор та оперативна пам'ять), а також периферiйними пристроями вводу-виводу та збереження даних (магнiтнi диски, принтери, термiнали, тощо). Однією з функцiй ядра є програмна пiдтримка файлової системи.
Командний iнтерпретатор Shell сприймає команди з термiналу i здiйснює звертання до ядра ОС.
Основнi властивостi ОС UNIX
Iнтерактивнiсть ОС - забезпечує роботу користувача в режимi дiалогу з системою. Мультизадачнiсть ОС - забезпечує паралельне (квазiпаралельне) виконання декiлькох процесiв (задач). Зокрема можливе вирiшення задач у фоновому режимi. ОС UNIX забезпечує роботу в багатокористувацькому режимi (мультизадачнiсть при кiлькох користувачах).
ПОЧАТОК ТА ЗАКIНЧЕННЯ СЕАНСУ
Кожний користувач має свої iм'я (для iдентифiкацiї i взаємодiї користувачiв) та пароль (для контролю і захисту). Користувачi можуть бути об'єднані в групи пiд вiдповiдними iменами. Один з користувачiв (superuser), який має iм'я root є адмiнiстратором системи. Вiн реєструє всiх iнших користувачiв.
Знак $ є запрошенням системи для вводу команди. Для входу в систему на запит login задається iм'я, а на запит password - пароль. Для виходу з сеансу вказується ^D(Сtrl+D).
Наприклад
login:user4
password:... (iм'я пароля при вводi не висвічується)
.....
$^D
login:
Командна стрiчка
Командна стрiчка - це послiдовнiсть слiв роздiлених пропусками. Перше слово - назва команди, решта - її параметри. Команди роздiляються закiнченням стрiчки, або крапкою з комою.
Структура команди: iм'я_команди опцiї вираз iмена_файлiв.
Типи параметрiв:
опцiя - уточнює команду (може бути зi знаками + - або без знаку);
вираз - стрiчка символiв;
iм'я_файла - iдентифiкатор(символи a-z, A-Z,0-9,_,.,-,*,?)
Cимвол * означає пiдстановку будь-якої стрiчки символiв, а cимвол ? - будь-якого одного символа в iм'я файлу. Службовi символи .(крапка) та _(пiдкреслення) не можуть бути на початку iдентифiкатора. Крапка використовується для видiлення в iменi файлу так званого "розширення", яке характеризує тип файлу:
.с - програма на Сi;
.h - текст файла-заголовку, що долучається до програми на Сi;
.f - програма на Фортранi;
.p - програма на Паскалi;
.о - об'єктний код отриманий пiсля трансляцiї з мов;
.а - бібліотечний архiвний файл.
Приклади команд:
$ whо - вивiд списку всiх активних користувачiв;
$ date- вивiд біжучої дати;
$ rm text.c prog.c;
$ rm -fr good.c bad.o;
$ grep -o "mary" people.
Службовi комбiнацiї символiв:
^C(Break) - припинення виконання команди;
^S - призупинка виводу на екран;
^Q - продовження виводу на екран;
^D - кiнець файлу на стандартному вводi.
Каталоги та файли
При реєстрацiї користувача йому призначається власний каталог (home directory). В системi використовується iєрархiчна деревовидна структура каталогiв, в якi записуються файли. Послiдовнiсть iмен каталогiв та файлiв роздiлених знаком / задає повне iм'я файла, або шлях доступу:
[root]/ - iм'я кореневого каталога - може бути упущене;
[root]/dev - каталог драйверiв;
/lib - каталог бiблiотек пiдпрограм;
/bin - каталог часто виконуваних команд;
/tmp - каталог тимчасових файлiв;
/users - каталог каталогiв користувачiв;
[root]/users/user1 - каталог користувача 1;
[root]/users/user1/file1 -файл file1 в каталозi першого користувача.
Команди для роботи з каталогами та файлами
$ pwd - вивiд повного iменi каталога;
$ ls - вивiд бiжучого каталога;
$ ls -al - a(all) - всi файли та каталоги; - l(long) - повна iнформацiя;
$ ls / - вивiд кореневого каталога;
$ ls /dev - вивiд каталога драйверiв;
$ ls /users/user1 - вивiд каталога користувача 1;
$ cd /dev - (change directory) - перехiд у каталог dev;
$ cd - повернення до власного (home) каталога;
[$ cd;] $ mkdir pc pf - створення пiдкаталогiв pc та pf у власному каталозi;
$ cat /users/user1/file1 - вивiд файла file1;
$ cat file1 - вивiд файла file1 з власного каталога;
$ tail /file1 - вивiд кiнця файлу file1(10 останнiх стрiчок);
$ tail -7 /file1 - вивiд останнiх 7 стрiчок файлу file1;
$ tail +5 /file1 - вивiд решти стрiчок файлу file1, починаючи з п'ятої;
$ file /file1 - вивiд типу файлу file1;
$ cp [/users/user1/]prog1 [/users/user1/]prog2 - копiювання файлу prog1 в prog2;
$ mv prog1 user2/prog1 - перенос файла prog1 з бiжучого каталога в каталог user2 без перейменування;
$ mv prog1 prog2 - перейменування файла prog1 в prog2;
$ rm [-i] prog1 - видалення файла prog1 (-i -запит пiдтвердження);
$ rmdir user1 - видалення порожнього каталога user1;
Встановлення прав доступу до файлiв та каталогiв
Встановлено три категорiї користувачiв файлами та каталогами:
- власник (user - u);
- користувачi з групи власника (group - g);
- всi iншi (other - o).
Встановлено три рiвнi доступу до файлiв та каталогiв:
- тiльки читання файла чи каталога (read - r);
- читання та запис (write - w);
- виконання файла як команди (execute -x).
Встановленi три операцiї змiни режиму доступу:
- призначити (=);
- дозволити (+);
- заборонити (-).
Режим доступу встановлюється по категорiях користувачiв в такому порядку: власник- група-решта. Наприклад: власник - повний доступ, група - тiльки читання та виконання, iншi- тiльки читання.
$ chmod <режим> <файли> - встановлення режиму доступу;
$ chmod rwxr----- prog1 prog2;
$ chmod u-w,g+x,o=r prog1 prog2 - змiна режиму доступу.
Команди та стандартнi файли
В системi є такi стандартнi файли, якi можуть використовуватись у командах:
Standard Input (S.I.) - стандартний ввiд (клавiатура), має дескриптор 0;
Standard Output (S.O.) - стандартний вивiд (екран), має дескриптор 1;
Diagnostic Output (D.O.) - вивiд дiагностики (екран), має дескриптор 2.
Часто iнформацiя виводиться у стандартнi файли по замовчуванню. Однак є можливiсть при потребi перенаправити ввiд-вивiд у iншi файли. Для перенаправлення стандартного виводу використовується значок >, для перенаправлення стандартного вводу - значок <. Для перенаправлення стандартного виводу з дозаписом до iснуючого файлу використовується значок >>. Цей варiант рекомендується використовувати завжди, як безпечнiший.
Наприклад:
$ ls - вивiд бiжучого каталога на стандартний вивiд;
$ ls > catal - перенаправлення iнформацii з стандартного виводу в файл catal;
$ ls -l >> catal - дозапис перенаправленого системного виводу у файл catal;
$ cat < file1 - перенаправлення стандартного вводу (iнформацiя на стандартний ввiд перенаправляється з файлу file1 i виводиться командою cat (еквiвалент $ cat file1));
$ cat -u > file2 - створення нового файлу file2 i запис в нього iнформацiї з клавiатури (без буферизацiї);
$ cat -u >> file2 - дозапис iнформацiї з клавiатури до ABCDEG^D файлу;
$ cat file1>file2 2>fileerr - перенаправлення стандартного виводу у файл file2, а виводу дiагностики (дескриптор 2) у файл fileerr.
Система забезпечує органiзацiю конвейєрів команд. Конвейєром називається група команд об'єднаних програмними каналами. Програмний канал утворюється призначенням стандартного виводу однiєї команди стандартним вводом наступної. Для формування програмного каналу використовується значок |.
Наприклад: $ who | wc -l - отримання списку активних користувачiв (команда whu) та пiдрахунок їх кiлькостi (команда wc).
В системi забезпечена можливiсть обробки команд у фоновому (background) режимi:
$ cp file1 file2 & - копiювання файла file1 у фоновому режимi пiдчас виконання команди $ cat file3
$ ps [-l][-a] - вивiд статусу фонового процесу;
$ kill 2042 - безумовне завершення процесу з PID 2042 (2042 - iдентифiкатор фонового процесу PID).
Редагування тексту
Для редагування тексту в системi UNIX використовується текстовий редактор ed, який може працювати як екранно-орiєнтований (викликається командою vi), або стрiчково-орiєнтований (викликається командою ex). Робота з цими редакторами проводиться у двох режимах: командному та режимi вводу тексту. Перемикання режимiв здійснюється клавiшею Esc.
$ vi - редагування нового тексту;
$ vi file1 - редагування файлу file1 (курсор на початку);
$ vi +file2 - редагування файлу file2 (курсор в кiнцi);
$ vi +10 file3 - редагування файлу file3(курсор на стрiчцi 10).
Вихiд з редактора здійснюється за двома варiантами:
Esc:wq!Enter - змiни запам'ятовуються;
Esc:q!Enter - змiни не запам'ятовуються.
Позицiювання курсора здійснюється клавiшами зi стрiлками а також вiдповiдними символами:
H - початок екрана;
М - середина екрана;
L - кiнець екрана;
w - перемiщення курсора на початок наступного слова;
e - перемiщення курсора на кiнець бiжучого слова;
b - перемiщення курсора на початок біжучого слова.
Дописування, змiна та видалення тексту здійснюється встановленням курсора в потрiбну позицiю i натисканням таких клавiш:
x - видалення букви з посуванням тексту;
r - замiна вiдмiченої курсором букви введеною з клавiатури пiсля букви r;
i - вставити довiльний текст перед курсором;
a - добавити довiльний текст пiсля курсора;
Esc - кiнець вводу тексту.
Редактор забезпечує такi операцiї над словами (початок яких вiдмiчається курсором) та стрiчками (курсор визначає позицiю в стрiчцi):
dw - видалення слова;
ndw - видалення n слiв;
cw <слово> Esc - замiна слова вказаним;
ncw <n слiв> Esc - замiна n слiв вказаними;
d$ або D - видалення частини стрiчки (вiд курсора до кiнця);
d^ - видалення частини стрiчки (вiд початку до курсора);
с$ або C <текст замiни> - замiна до кiнця стрiчки;
c^ <текст замiни> - замiна початку стрiчки до курсора;
dd - видалення стрiчки;
ndd - видалення n стрiчок;
cc <текст замiни> - замiна однієї стрiчки;
ncc <текст замiни> - замiна n стрiчок;
o - порожня стрiчка пiсля бiжучої;
O - порожня стрiчка перед бiжучою;
^i або I - ввiд до бiжучої стрiчки;
$a або A - ввiд пiсля бiжучої стрiчки.
Для роботи з фрагментами тексту (їх розмноження та перенесення) вони можуть зберiгатися в буферах. Буферiв може бути кiлька. Один з них - анонiмний (створюється i використовується без iменi Редактором), решта - поiменованi буквами a-z ("x) створюються при потребi Користувачем. Для занесення в буфер фрагменти тексту (слова чи стрiчки) вiдмiчаються курсором по початку. В анонiмному буферi завжди залишається останнiй фрагмент видалений командою ndd. Команда замiни (с) псує вмiст анонiмного буфера. Для роботи з буферами використовуються такi команди:
yw - занести вiдмiчене слово в анонiмний буфер;
yy - занести вiдмiчену стрiчку в анонiмний буфер;
nyy - занести n стрiчок в анонiмний буфер;
"a5yy - занести 5 стрiчок в буфер а;
p - вставити вмiст анонiмного буфера пiсля бiжучої стрiчки;
P - вставити вмiст анонiмного буфера перед бiжучою стрiчкою;
"ap - вставити вмiст буфера а пiсля бiжучої стрiчки;
"aP - вставити вмiст буфера а перед бiжучою стрiчкою.
"aAdd - добавити до буфера а останню видалену командою dd cтрiчку (з анонiмного буфера).
Зв'язок мiж користувачами
Система UNIX передбачає можливостi органiзацiї колективної роботи групи користувачiв. Для зв'язку мiж користувачами використовуються команди write та mail. Команда write видає повiдомлення адресату в момент її передачi. Команда mail забезпечує накопичення повiдомлень в поштових скриньках повiдомляючи абонентiв про надходження пiсля закiнчення бiжучої роботи. Про наявнiсть надходжень система попереджає i при початку сеансу.
Варiанти використання команди write:
$ write <login адресата> <повiдомлення> [^D]
$ write user3 Результати готовi?Enter - передача повiдомлення з продовженням дiалогу (немає ^D);
$ write user4 Робота завершена^DEnter - передача повiдомлення без дiалогу;
$ write user3<file1 - передача повiдомлення iз файлу;
$ write user3 Go avay !whu^d - формування повiдомлення з використанням команд ОС;
$ mesg n - блокування прийому повiдомлень;
$ mesg y - дозвiл прийому повiдомлень;
Використання команди mail:
$ mail <login адресата> <лист>^D - передача листа;
$ mail - отримання переданих надходжень;
? - запит системи на наступнi дiї;
?? - вивести меню;
x - вийти без змiни пошти;
p - друкувати;
- - друкувати попередні;
s file1 - зберегти в file1;
w file2 - зберегти в file2 без заголовка;
d- видалити;
+ - перейти на наступне (без видалення);
!cmd - виконати команду cmd;
m user1 - переслати користувачу user1;
q - завершити роботу з поштою.
Засоби розробки програм
Система UNIX забезпечує широкий вибiр засобiв для розробки програм: компiлятори, редактор зв'язкiв, символьний вiдладчик, засоби супроводу програмних проектiв та розробки мовних процесорiв. В системi є такi компiлятори: Ci, ФОРТРАН 77, ПАСКАЛЬ. Виклик компiлятора здійснюється вiдповiдною командою, параметром якої є iм'я файла з вiдповiдним розширенням. Результатом роботи компiлятора є файл об'єктного коду. Файли об'єктного коду об'єднуються редактором зв'язкiв в єдину програму, яка записується в файл виконуваного коду (по замовчуванню його iм'я a.out). При виклику компiлятора пiсля трансляцiї по замовчуванню викликається редактор зв'язкiв i формується файл виконуваного коду. При цьому файли об'єктних модулiв видаляються. Якщо необхiдна тiльки компiляцiя для отримання i збереження об'єктних файлiв для редактора зв'язкiв то в командi виклику транслятора вказуються вiдповiднi опцiї. При редагуваннi зв'язків можуть добавлятись файли з бiблiотек. Занесення об'єктних файлiв у бiблiотеки здійснюється архiватором (бiблiотекарем).
Команди виклику трансляторiв:
$ cc prog.c - трансляцiя програми prog на Сi з автоматичним викликом редактора зв'язкiв i формуванням виконуваного модуля a.out (по замовчуванню);
$ fc prog.f - трансляцiя програми prog на ФОРТРАНi з автоматичним редагуванням зв'язкiв (виконуваний модуль a.out по замовчуванню);
$ pc prog.p - трансляцiя програми prog на Паскалi з автоматичним редагуванням зв'язкiв (виконуваний модуль a.out по замовчуванню);
$ fc -v prog.f - трансляцiя програми на ФОРТРАНi з автоматичним редагуванням зв'язкiв i виводом дiагностичної iнформацiї;
$ fc -o prog.out prog.f - трансляцiя програми prog на ФОРТРАНi з автоматичним редагуванням зв'язкiв (виконуваний модуль prog.out вказаний опцiєю -о);
$ fc -с prog1.f prog2.f - трансляцiя програм prog1 та prog2 з формуванням об'єктних модулiв prog1.o та prog2.o (без автоматичного редагування зв'язкiв);
$ ld /lib/frt0.o *.o -l F77 - редагування зв'язкiв (стартовий модуль frt0 з бiблiотеки lib, використанi всi об'єктнi модулi, а також модулi з бiблiотеки F77).
./a.out - виконання зтрансльованої і зібраної програми.
ВИСНОВКИ:
На цій лабораторній роботі я отримав практичні навики використання командної мови та ознайомився з особливостями реалiзацiї операцiйної cистеми UNIX.