Індивідуальні завдання

 

Завдання на 60 балів:

 

1. Написати програму, яка створює новий процес і запускає редактор vi з командною стрчкою "vi hello.c".

2. Написати програму, яка створює новий процес і запускає файловий менеджер "Midnight Commander".

3. Написати програму, що запускає утиліту "grep", яка в свою чергу шукає стрічку "pthread_create" в усіх файлах та підкаталогах поточного каталогу.

4. Написати програму, що запускає команду "ls" для перегляду вмісту поточного каталогу.

5. Написати програму, що задопомогою команди "mkdir" створює підкаталог "hello" в поточному каталозі.

6. Написати програму, що за допомогою команди “ps” виводить на екран активні процеси в системі.

7. Написати програму, що за допомогою команди “perror” взнає опис помилки з номером 117.

8. Написати програму, що за допомогою команди “gzip” створює архів всього вмісту поточного каталогу.

9. Написати програму, що за допомогою команди “jobs” взнає про всі завдання в системі.

10. Написати програму, що за допомогою команди “hostname” взнає ім’я машини на якій її було запущено.

 

Завдання на 85 балів:

 

1. Написати програму, яка запускає новий процес, що в свою чергу друкує розмір в байтах основних типів мови С у вашій системі (char, short, int, long, float, double, long double, unsigned).

2. Завдання таке ж, як і в 1 цього підпункту, тільки запускається не процес, а новий потік.

3. Новий процес виводить на екран символи від A до z і цифри від 0 до 9 разом з іх ASCII-кодами значеннями.

4. Завдання таке ж, як і в 3 цього підпункту, тільки запускається не процес, а новий потік.

5. Новий процес виводить на екран максимальні значення, що представляються основними типами мови С у форматі: "тип - макс. знач.". Максимальні значення вивести в десятковій формі для типів char, short, int, long, float, double, long double, unsigned.  

6. Завдання таке ж, як і в 5 цього підпункту, тільки запускається не процес, а новий потік.

7. Завдання таке ж, як і в 5 цього підпункту, тільки максимальні значення виводяться в шістнадцятковій формі.  

8. Завдання таке ж, як і в 5 цього підпункту, тільки запускається не процес, а новий потік, і значення виводяться в шістнадцятковій формі.

9. Новий процес за допомогою функції ctime() друкує поточну дату у зручній для користувача формі. (Див. on-line допомогу по функції ctime()).

10. Завдання таке ж, як і в 9 тільки запускається новий потік.

11. Новий процес виводить на екран весь свій командний рядок разом зі своєю назвою.

12. Новий процес виводить на екран вміст свого масиву змінних оточення (Див. on-line допомогу по змінній “environ”).

 

Завдання на 95 балів:

 

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

2. Завдання теж саме, що і в 1, тільки сортування відбувається методом вибору.

3. Задано три вказівники на цілі числа. Програма з командного рядка першим параметром після своєї назви бере розмірність масивів, динамічно виділяє для них пам'ять і заповнює випадковими числами. Далі запускаються три потоки, що кожен сортує свій масив бульбашковим методом. Масиви передаються сортуючим потокам в якості останнього параметру функції pthread_create. Головний потік повинен дочекатися завершення кожного з новостворених потоків. Після закінчення сортування головний потік програми виводить на екран відсортовані масиви у вигляді: "Масив <номер>: <значення>". Сортування відбувається по спаданню.

4. Завдання таке ж, як і в 3 цього підпункту, тільки сортування відбувається по зростанню.

5. Використовуючи розклад функції sin(x) в ряд Маклорена (див. Додаток 1), написати програму, що реалізує обчислення функції sin(x) в новому процесі. Точність обчислень (кількість доданків в сумі) взяти з командого рядка батьківського процесу. Результат порівняти зі значенням стандартної функції sin(x) з математичної бібліотеки мови С (math.h).

6. Завдання таке ж, як і в 5 цього підпункту, тільки обчислення відбувається в новому потоці.

7. Завдання таке ж, як і в 5 цього підпункту, тільки обчислити значення cos(x).

8. Новий процес зі своєї командної стрічки бере ціле число n і обчислює функцію n!. Обчислення провести рекурсивним способом; результат вивести в sdtout.

9. Завдання таке ж, як і в 8 цього підпункту, тільки обчислення проводиться за допомогою ітерацій.

10. Завдання таке ж, як і в 8 цього підпункту, тільки запускається не процес, а новий потік.

11. Завдання таке ж, як і в 8 цього підпункту, тільки запускається не процес, а новий потік, і обчислення проводиться за допомогою ітерацій.

12. Новий процес зі своєї командної стрічки бере ціле додатнє число n і обчислює функцію fibonacci(n) рекурсивним способом; результат вивести в stdout (див. Додаток 1).

13. Завдання таке ж, як і в 12 цього підпункту, тільки обчислення проводиться за допомогою ітерацій.

14. Завдання таке ж, як і в 12 цього підпункту, тільки запускається новий потік.

15. Завдання таке ж, як і в 12 цього підпункту, тільки запускається новий потік і обчислення проводиться за допомогою ітерацій.

 

Контрольні запитання

1. Що таке обчислювальний процес?

2. Що таке обчислювальний потік?

3. Яка різниця між обчислювальними процесами та потоками?

4. Що призвело до створення моделі обчислювального потоку?

5. За допомогою яких системних викликів створюються обчислювальні процеси в ОС Linux?

6. Яка функція згідно з стандартом POSIX створює новий потік?

7. Як можна дочекатися завершення роботи деякого потоку?

8. Яка бібліотека містить функції для роботи з потоками?

 


Для нотаток
Для нотаток
Для нотаток


[1] Ряд Фібіоначчі це така послідовність цифр в якій наступний член рахується як сума двох попередніх. Наприклад: 0 1 1 2 3 5 8 13 21 34...

 






Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: