Основні поняття про процеси і роботи

Зміст

 

Операційна система Linux (Ubuntu ). Системне програмування в

shell – інтерпретаторі………...………..……………………………………….…3

Процеси і роботи в Linux…………………………………..……3

Основні поняття про процеси і роботи……………………3

Активні, фонові та відкладені процеси(роботи)………….3

Робочі столи користувача…………………………………….…6

Загальні відомості про робочі столи користувача в Linux…6

Робочий стіл KDE ……………………………………….. 7

Робочий стіл GNOME ………………………..…………… 8

Завдання 1……………………………………………………………. 9

Постановка задачі ………………………………………… .. 9

Алгоритм вирішення задачі …………….…………………. 9

Код програми…………..…………………………………….. 9

Операційна система Windows. Системне програмування в MASM………..12

Флаговий регістр………………………………………………….. 12

Команда порівняння..……...……………………………………….13

Завдання 2……….………………………………………………… 14

Постановка задачі ………………………………………… 14

Код програми……………………………………………….14

Завдання 3………………………………………………………… 18

Постановка задачі ………………………………………… 18

Код програми ……….…………..…………………….……18 Список використаної літератури………………………………………..19

 

 
 


Операційна система Linux (Ubuntu ). Системне програмування в shell – інтерпритаторі.

Процеси і роботи в Linux

Основні поняття про процеси і роботи

Процесом у Linux і Unix називається програма або команда, що виконується.

Linux – багатозадачна ОС і в ній одночасно може виконуватись кілька процесів. Для того, щоб їх розрізняти, кожному з них присвоюється персональний ідентифікатор (PID – Process IDentificator). Для виведення на екран списку всіх процесів, що існують в даний момент в системі, використовується команда ps. В результаті виконання цієї команди на екран дисплея може бути, наприклад, видана така інформація:

PID TTY TIME CMD

701 pts/0 1: 16: 00 bash

2403 pts/0 0: 18: 00 bs

TTY – термінал з якого був запущений процес.

ТІМЕ – час, протягом якого він виконується.

CMD – назва програми, яка буде працювати у запущеному процесі.

Найперший процес, запущений системою, називається – init. Його PID=1. Він є головним батьківським процесом всіх інших процесів. Кожен новий процес повинний обов'язково мати свій батьківський процес. Наприклад, процес текстової оболонки bash, який був породжений безпосередньо від процесу init, у свою чергу, буде батьківським процесом для всіх інших процесів, створюваних користувачем під час сеансу. Особливістю Unix та Linux є те, що для кожного нового процесу створюється дублікат батьківського процесу. Такий механізм процесів називається клонуванням.

Кожний новостворений процес отримує три уже відкритих файли:

- stdin – для вхідних даних,

- stdout – для вихідних даних,

- stderr – для повідомлень про помилки.

Процеси можуть функціонувати в двох режимах: системному і користувача. Робота в системному режимі означає виконання процесом системних викликів. Він найбільш важливий, тому що виконується обробка переривань, викликаних зовнішніми сигналами і системними викликами, а також керуванням доступом до диска, розподіл додаткової динамічної пам'яті й інших ресурсів системи. Процес функціонує в режимі користувача, коли виконується програма користувача.

Окрім поняття “процес” використовується також і поняття “робота”. Хоча їх практичний смисл досить близький, проте є деякі відмінності. По-перше, якщо процес характеризується ідентифікатором PID, то робота – номером, що позначається символом %. По-друге, для керування роботами існують спеціальні команди, про які детальніше буде сказано далі. По-третє, до робіт відноситься лише частина наявних в системі процесів, зокрема процеси користувачів.

Варто також зазначити, керування роботами здійснюється власними засобами текстових оболонок Linux. Наприклад, оболонка bash має команду jobs для керування роботами. Для перегляду наявних в системі робіт вказана команда має такий формат:

jobs –<опції>,

де <опції> вказують на ідентифікатори типу процесів (робіт).

Отримати інформацію про відповідність між номером роботи і ідентифікатором процесу можна за допомогою команди

jobs –l


2. Активні, фонові та відкладені процеси (роботи)

 

Процеси (роботи) бувають активними (привілейованими), фоновими та відкладеними. В кожний момент часу може бути лише один активний процес. Активним є такий процес, з яким безпосередньо взаємодіє користувач, тобто тільки цей процес отримує інформацію з клавіатури і посилає результати на ваш екран (як кажуть, виконується на передньому плані). З іншого боку, фонові процеси не одержують інформації з термінала, у загальному випадку вони спокійно виконуються, не вимагаючи потреби в спілкуванні з користувачем. Деякі фонові процеси виконуються протягом великого проміжку часу і не здійснюють нічого зовні цікавого. Компіляція програм або ущільнення файлів - приклади таких процесів. Немає потреби чекати, коли ці процеси закінчаться. Їх можна просто запустити у фоні. Поки вони там виконуються, ви можете займатися іншими програмами. Але потрібно знати основні особливості фонової обробки:

фоновий процес не допускає введення з клавіатури;

будь-яке виведення від фонового процесу на екран руйнує все, що ви в цей момент ввели з клавіатури;

при запуску великої кількості фонових процесів можна перевантажити систему.

Процеси можуть бути також відкладені. Відкладений процес - це процес, що у даний момент не виконується і тимчасово зупинений. Після того, як ви призупинили виконання процесу, надалі ви можете його продовжити як на передньому плані, так і в фоні. Поновлення призупиненого процесу не змінить його стану - при поновленні він почнеться з того місця, на якому сталась зупинка.

Майте на увазі, що призупинення процесу - це не переривання процесу. Коли ви перериваєте процес, який виконується, натискаючи клавіші переривання (зазвичай, це <CTRL><C>), то процес знищується назавжди. А якщо процес знищено, то немає іншого способу відновити його, як знову запустити спочатку, використовуючи колишню команду. Зауважимо також, що деякі програми можуть перехоплювати переривання, тоді натискання клавіш <CTRL><C> не приведе до негайного припинення процесу. Це дозволить програмі виконати необхідні операції акуратного завершення. Деякі програми взагалі не дозволять вам їх перервати.

Робочі столи користувача

1.Загальні відомості про робочі столи користувача в Linux

Робочий стіл – це графічний інтерфейс користувача з операційною системою. Робочий стіл дозволяє:

переглядати в графічному режимі файлову систему і виконувати всі операції над файлами (копіювання, перейменування, вилучення тощо);

розміщувати ярлики файлів і каталогів (папок) для швидкого доступу до них;

розміщувати ярлики змінних дисків для їх монтування та доступу до їх вмісту;

розміщувати ярлики принтерів для прискорення початку друку;

зіставляти програми з файлами певного типу для їх автоматичного запуску.

Як правило, робочий стіл містить панель задач, на якій розташовуються кнопки ярликів, меню, програм і аплетів. Аплет – це невеличка вбудована програма для роботи і контролю за станом системи (наприклад: годинник, калькулятор і т.д.). Зазвичай панель задач реалізована у вигляді рядка в нижній частині екрана, хоча в більшості випадків передбачена можливість її переміщення до будь-якої сторони екрана.

Характерною особливістю робочих столів в Linux, яка відсутня у Windows, є можливість працювати з багатьма віртуальними робочими столами. На кожному із них може розташовуватись свій набір ярликів та відкритих вікон працюючих програм. Кожен віртуальний робочий стіл може мати свою гаму кольорів і рисунків, тобто ці столи функціонують незалежно один від одного.

З точки зору ОС робочий стіл - це набір Х-клієнтів та бібліотек для створення графічного інтерфейсу користувача із системою. Серед Х-клієнтів найважливішими є менеджери дисплеїв та менеджери вікон. Кожний робочий стіл має свій конкретний менеджер дисплея та конкретний менеджер вікна, тобто вони орієнтовані тільки на свій робочий стіл.

 

2.Робочий стіл KDE

Найбільш відомим робочим столом є KDE (K Desktop Environment – робочий стіл К). Авторські права на цей робочий стіл належать фірмі Trolltech.

Головна перевага KDE – забезпечення єдиного стандарту для всіх його складових частин і програм на основі об’єктно-орієнтованого підходу. В KDE всі елементи трактуються як об’єкти, до яких можна отримати доступ і виконати з ними певні дії.

KDE пропонує користувачеві весь спектр можливостей для керування зовнішнім видом і функціональними можливостями системи. Можна коректувати дуже багато речей – загальний фон робочого стола, вигляд кнопок та ярликів, вміст панелі або меню запуску програм та багато іншого. Для операцій настроювання робочого стола є спеціальний Центр Керування (Control Center), який дуже нагадує Панель керування у Microsoft Windows.

Завдяки використанню об’єктної графічної бібліотеки Qt, дотримується єдиний стиль при створенні кнопок, меню, перемикачів та інших атрибутів вікон. Наприклад, у всіх програмах KDE в правій частині меню розташована опція виклику довідки. Вся довідкова система витримана в єдиному форматі та стилі. У всіх програмах, кнопки, що виконують однакові функції, позначаються однаковими піктограмами. На перший погляд, це може здатись дрібницями. Але така однотипність сприяє швидкому засвоєнню нових програм, адже не завжди є можливість детального опису призначення кожного елементу.

Важливою перевагою KDE є повна підтримка всіма його програмами національних стандартів. Засоби багатомовної підтримки вбудовані безпосередньо в KDE, разом із документацією і файлами довідки.

На сьогоднішній день існує велика кількість програмних пакетів, спеціально створених для KDE. Бібліотеки KDE і Qt, які використовують мову С++, стають основою для розробки нових сучасних програм.

Найважливіше є те, що наявність однієї фірми-розробника означає високу ступінь відповідальності за свій програмний продукт, тобто високу надійність роботи KDE.

KDE – це великий проект, до складу якого в стандартному дистрибутиві входить більше сотні програм. Варто запам’ятати лише декілька із них, які є немов би “візитною карткою” KDE: менеджер дисплея kdm, менеджер вікна kwin, файловий менеджер Konqueror. Необхідно відзначити, що в кожній новій версії Linux розширюються функції Konqueror, поступово перетворюючи його із простого файлового менеджера в потужну графічну оболонку.

3. Робочий стіл GNOME

Робочий стіл GNOME був розроблений дещо пізніше, як альтернатива KDE. Основною причиною появи GNOME було побоювання, що фірма Trolltech має право заборонити вільне розповсюдження свого KDE. І хоча цього поки що не сталось, все ж був створений міжнародний проект для розробки графічного інтерфейсу, який повністю підпадає під дію загальної ліцензії GPL (тобто для вільного розповсюдження). Про це свідчить і сама назва нового робочого столу: GNOME - GNU Network Obect Model Environment (GNU – GNU’s Not Unix). Цей комплекс програм став по суті результатом співпраці багатьох програмістів-ентузіастів та фірм зі всього світу. З 2000 року координує всі роботи організація GNOME Foundation.

В GNOME основний наголос було зроблено на гнучкість, швидке оновлення компонентів, неповторність. Хоча цей робочий стіл більш динамічний, його компоненти, створені різними авторами, не завжди детально протестовані на предмет спільного користування. З однієї сторони, це полегшує налагодження GNOME, а з іншої – ускладнює сумісність різноманітних компонентів системи.

GNOME менш інтегрований порівняно з KDE, більше орієнтований на стандарт Open Source.

Якщо стиль KDE витримано в традиціях Microsoft Windows, то GNOME пропонує інтерфейс користувача, який основано на використанні менеджера вікон Enlightenment, (тепер його замінив sawfish). Для GNOME базовим менеджером дисплея є gdm, а графічною оболонкою, яка включає файловий менеджер - Nautilus.

З розвитком KDE і GNOME стало ясно, що вони будуть між собою конкурувати. Проте, і розробники KDE, і розробники GNOME прямують до того, щоб всі вказані розбіжності були непомітними для користувача і перехід від одного робочого столу до іншого не викликав великих проблем.

Як і KDE, робочий стіл GNOME пропонує такі основні функції:

- наявність головного меню для доступу до всіх програм та настроювання робочого столу;

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

- наявність піктограм і ярликів файлів та пристроїв;

- підтримка технології drag-and-drop для копіювання, створення посилань, переміщення або вилучення файлів і пристроїв;

- наявність пейджера для перемикання між різними віртуальними робочими столами.

Якщо на комп’ютері було інстальовано обидва розглянутих робочих столи, тоді для переходу від одного робочого стола до іншого необхідно спочатку ввести команду

switchdesk,

потім вказати ім’я нового робочого столу і виконати перезавантаження X Window. Під час нового завантаження операційної системи завжди завантажується той робочий стіл, назва якого вказана в файлі “/etc/sysconfig/desktop”. Змінити вміст цього файлу може тільки адміністратор.

 

Завдання 1.

Написать shell сценарий, который, используя графические возможности shell, выполнял вывод информации о пользователе (ФИО, группа) , ввод строки символов и обработку строки:

Задан текст, в котором слова отделены друг от друга пробелами. Если первый символ текста (т.е. начало первого слова в тексте) буква, то необходимо подсчитать количество слов в тексте, начинающихся с этой буквы, если первый символ текста – цифра, то найти слово, порядковый номер которого равен значению этой цифры, в остальных случаях выдать соответствующие сообщения.

 

Код програми:

#!/bin/bash

# определяет, является ли символ буквой

 

gdialog --title "Yaroslava" --msgbox "Kozub" 9 18

 

# isalpha(c) -> true/false

isalpha()

{

echo "$1" | grep -q "^[[:alpha:]]$"

return $?

}

 

# определяет, является ли символ цифрой

# isdigit(c) -> true/false

isdigit()

{

echo "$1" | grep -q "^[[:digit:]]$"

return $?

}

 

# подсчитывает слова в тексте, начинающиеся с символа

# count_words(text, c)

#flag globolnoy podstanovki "g"

count_words()

{

echo "$1" | sed -r "s/ +/\n/g; /^\n$/d" \

| grep "^$2.*" \

| wc -l

}

 

# ищет слово в тексте под номером, начиная с единицы

# search_word(text, n)

search_word()

{

echo "$1" | sed -r "s/ +/\n/g; /^\n$/d" \

| sed -n "$2{p;q}"

}

 

# взять первый символ текста

gdialog --inputbox "Vvedit text" 10 60 2> ptext.txt

text=$(cat ptext.txt)

fchar="${text:0:1}"

if isalpha "$fchar"; then

# если символ - буква, то подсчитать слова

# и вывести результат на экран

#echo "letter"

count_words "$text" "$fchar"

elif isdigit "$fchar"; then

# если символ - цифра, то найти слово с этим номером

# и вывести результат на экран

#echo "digit"

search_word "$text" "$fchar"

else

 

echo "unknown"

exit 1

fi

 

exit 0