Порядок створення та завершення потоків. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Порядок створення та завершення потоків.



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

П отоки створюють у рамках вже існуючого адресного простору (конкретного процесу або, можливо, ядра системи). Існує кілька ситуацій, у яких може бути створений новий потік.

Якщо процес створюється за допомогою системного виклику f o r k O, після розподілу адресного простору автоматично створюється потік усередині цього

процесу Можна створювати потоки з коду користувача за допомогою відповідного системного виклику. У багатьох ОС є спеціальні потоки, які створює ядро системи

Під час створення потоку система повинна виконати такі дії.

1. Створити структури даних, які відображають потік в ОС.

2. Виділити пам'ять під стек потоку.

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

Особливості завершення потоків

Під час завершення потоку його ресурси вивільняються (насамперед, стек); ця операція звичайно виконується швидше, ніж завершення процесу. Потік може бути завершений, коли керування дійде до кінця процедури потоку; є також спеціальні системні виклики, призначені для дострокового припинення виконання потоків.

Як і процеси, потоки можуть виконуватися синхронно й асинхронно. Потік, створивши інший потік, може призупинити своє виконання до його завершення.

Таке очікування називають приєднанням потоків. Після завершення приєднаного потоку потік, який очікував його завершення, може дістати статус виконання

Організація взаємодії між потоками.


Порівняння процесів та потоків з позиції концепції багатопотокового виконання.


Оперування ідентифікаторами потоків.


Основні можливості та функції базового інтерфейсу введення/виведення.


Сутність моделі файлового введення/виведення.

Базовою моделлю системи введення / виводу UNIX є послідовність байт, доступ до яких може здійснюватися як послідовно, так і в у довільному порядку. У типовому користувальницькому процесі UNIX немає таких понять, як методи доступу або керуючі блоки. Одним із головних завдань ОС є забезпечення обміну даними між додатками і периферійними пристроями комп'ютера. Взагалі кажучи, заради виконання цього завдання і були розроблені перші системні програми, які послужили прототипами операційних систем. У сучасній ОС функції обміну даними з периферійними пристроями виконує підсистема вводу-виводу. Клієнтами цієї підсистеми є не тільки користувачі і додатки, але і деякі компоненти самої ОС, яким потрібне отримання системних даних або їх вививоди.Основними компонентами підсистеми вводу-виводу є драйвери, керуючы зовнішніми пристроями, і файлова система.Користувальницький додаток функціонує в спеціальному режимі (щодо апаратного забезпечення), званому 'user mode' - користувацький режим. У межах цього режиму код додатку обмежений виконанням «нешкідливих» інструкцій. Інструкції апаратного введення / виводу також не можуть бути виконані кодом користувацького режиму.

Підсистема управління зовнішніми пристроями, яка називається також підсистемою введення-виводу, виконує роль інтерфейсу до всіх пристроїв, підключених до комп'ютера.

Програма, що управляє конкретною моделлю зовнішнього пристрою і що враховує всі його особливості, зазвичай називається драйвером цього пристрою (від англійського drive — управляти, вести).

Принципи застосування базового інтерфейсу введення/виведення. Порядок роботи з файлом.

Інтерфейс введення-виведення вимагає управління процесором кожного пристрою. Інтерфейс повинен мати відповідну логіку для інтерпретації адреси пристрою, що генерується процесором. Встановлення контакту повинно бути реалізовано інтерфейсом за допомогою відповідних команд типу (ЗАЙНЯТИЙ, ГОТОВИЙ, ЖДУ), щоб процесор міг взаємодіяти з пристроєм вводу-виводу через інтерфейс. Якщо існує необхідність передачі різних форматів даних, то інтерфейс повинен уміти конвертувати послідовні (впорядковані) дані в паралельну форму і навпаки. Повинна бути можливість для генерації переривань і відповідних типів чисел для подальшої обробки процесором (при необхідності). Комп'ютер, що використовує введення-виведення з розподілом пам'яті, звертається до апаратного забезпечення за допомогою читання і запису в певні осередки пам'яті, використовуючи ті ж самі інструкції мови асемблера, які комп'ютер зазвичай використовує при зверненні до пам'яті.

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


Основні можливості та функції стандартної бібліотеки введення/виведення.

Традиційною для ОС UNIX бібліотекою функцій більш високого рівня, ніж бібліотека системних викликів, є, так звана, стандартна бібліотека вводу / виводу (stdio). Основний набір функцій цієї бібліотеки служить для виконання файлових операцій з буферизацією даних в пам'яті користувача процесу. Бібліотека введення / виводу фактично стандартизована дуже давно, і їй можна безпечно користуватися в будь-якій операційній середовищі. Зокрема, одноманітні бібліотеки введення / виводу підтримуються у всіх сучасних реалізаціях системи програмування мови Сі, виконаних не в середовищі ОС UNIX (включаючи реалізації в середовищі MS-DOS).

stdio.h (від англ. standard input/output header - стандартний заголовний файл введення/виведення) заголовний файл стандартної бібліотеки мови Сі, що містить визначення макросів, констант та оголошення функцій і типів, що використовуються для різних операцій стандартного введення і виведення. Функції-члени функції, оголошені в stdio.h у загальному випадку можуть бути розділені на дві категорії: функції для операцій з файлами і функції для операцій введення-виведення.


Принципи застосування стандартної бібліотеки введення/виведення. Порядок роботи з файлом.

Традиційною для ОС UNIX бібліотекою функцій більш високого рівня, ніж бібліотека системних викликів, є, так звана, стандартна бібліотека вводу / виводу stdio. Оголошується #include <stdio.h>.

Додаткові можливості введення-виведення залежать від операційної системи, але ці функції забезпечують єдиний інтерфейс.Відповідні описи містяться в stdio.h.

Функції stdio заводять індикатор помилок для кожного файлу, на який вказує покажчик fp, для запису туди інформації про помилки введення-виведення, пов'язаних з даним файлом або потоком. Використовуйте ferror для з'ясування значення цього індикатора.

#include <stdio.h>

int ferror(FILE *fp);

Якщо певний fp файл або потік відкритий, то fclose закриває його, попередньо записавши всі оброблювані дані (викликавши fflush (fp)).fclose повертає 0, якщо він був виконаний успішно (включаючи випадок, коли fp - NULL або не відкритий файл); інакше повертається EOF.

#include <stdio.h>

int fclose(FILE *fp);

fopen ініціалізує структури даних, необхідних для читання або запису файлу. Ім'я файлу визначається рядком в file, а тип доступу до файлу - рядком у mode.Інша функція _fopen_r є повторно-входимость аналогом. Додатковий аргумент reent - покажчик на структуру, яка містить інформацію для забезпечення повторної входимость.

#include <stdio.h>

FILE *fopen(const char *file, const char *mode);

FILE *_fopen_r(void *reent, const char *file, const char *mode);

 

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



Поделиться:


Последнее изменение этой страницы: 2016-08-14; просмотров: 200; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.162.247 (0.007 с.)