рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Переключення контекстів, оброблення переривань та проблеми керування процесами в умовах паралельного виконання

Переключення контекстів, оброблення переривань та проблеми керування процесами в умовах паралельного виконання - раздел Образование, Тема 1. Основні концепції операційних систем   Перемикання Контексту (Англ. Context Switch) — У Багатозадачн...

 

Перемикання контексту (англ. Context Switch) — у багатозадачних ОС і середовищах, процес припинення виконання процесором одного завдання (процесу, потоку, нитки) зі збереженням усієї необхідної інформації і стану, необхідних для подальшого продовження з перерваного місця, і відновлення і завантаження стану завдання, до виконання якої переходить процесор.

 

У процедуру перемикання контексту входить т. н. планування завдання — процес ухвалення рішення до якого завдання передати управління.

При перемиканні контексту відбувається збереження і відновлення наступної інформації :

Регістровий контекст регістрів загального призначення (у тому числі регістр прапора)

Контекст стану співпроцесора з плаваючою точкою

Стан регістрів MMX/SSE (x86)

Стан сегментних регістрів (x86)

Стан деяких регістрів(x86), що управляють

У ядрі ОС з кожним потоком пов'язані наступні структури:

· Загальна інформація pid, tid, uid, gid, euid, egid,.

· Стан процесу/потоку

· Права доступу

· Використовувані потоком ресурси і блокування

· Лічильники використання ресурсів (наприклад таймери використаного процесорного часу)

· Регіони пам'яті, виділені процесу

Крім того, що дуже важливо, при перемиканні контексту відбуваються наступні програмно-непомітні апаратні дії, що впливають на продуктивність :

Відбувається очищення конвеєра команд і даних процесора

Очищається TLB, що відповідає за сторінкове відображення лінійних адрес на фізичні

Крім того, слід врахувати наступні факти, що впливають на стан системи :

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

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

З точки зору прикладного рівня можна розділити voluntary і non - voluntary context switches: процес/, що Виконується, потік може сам передати управління іншому потоку або ядро само може відібрати управління.

Ядро ОС може відібрати управління у процесу/потоку, що виконується, при витіканні кванта часу виділеного на виконання. З точки зору програміста це означає що управління могло піти від потоку в «самий непідходящий» момент часу коли структури даних можуть знаходитися в суперечливому стані через те, що їх зміна не була завершена.

Виконання блокуючого системного виклику. Коли додаток робить уведення-виведення, ядро може вирішити, що можна віддати управління іншому потоку/процесу в очікуванні, поки запрошений цим потоком дискове або мережеве уведення-виведення буде виконано. З точки зору загальної продуктивності системи, це самий «кращий» варіант.

Ядра, що синхронізують примітиви. Мьютексы, Семафори і т. д. Це і є основне джерело проблем з продуктивністю. Недостатньо продумана робота з синхронізуючими примітивами може в «поганих випадках» призводити до десяток тисяч, а при поганому проектуванні і сотням тисяч перемикань контексту в секунду.

Системний виклик явно очікуючий настання події (select, poll, epoll, pause, wait,.) або моменту часу (sleep, nanosleep,.). З точки зору продуктивності — це хороший варіант, ядро ОС завжди знає, хто чекає і чого чекає.

Як видно з вищесказаного, перемикання контексту є дуже ресурсоємною операцією, причому, чим більше «навороченее» являється процесор, тим більше ресурсоємною ця операція стає. Виходячи з цього, ядро використовує ряд стратегій щоб, по-перше, скоротити кількість перемикань контексту, а в других, зробити перемикання контексту менш ресурсоємним.

Методи зменшення кількості перемикань контексту :

Існує можливість конфігурації що виділяється потоку кванта процесорного часу. При зборці ядра Linux можливо вказати Server/Desktop/Low - Latency Desktop. Для серверних конфігурацій цей квант більший.

Методи зниження ресурсоемкости перемикання контексту :

При перемиканні контексту між потоками, що розділяють одно адресний простір в межах одного процесу, ядро не чіпає регістр CR3, тим самим зберігаючи TLB

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

Реальне збереження/відновлення контексту регістрів співпроцесора плаваючої точки і MMX/SSE контекст відбувається при першому зверненні нового потоку, що оптимізовано під випадок, коли більшість потоків роблять тільки операції з регістрами загального призначення.

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

Обробник переривань (чи процедура обслуговування переривань) — спеціальна процедура, що викликається по перериванню для виконання його обробки. Обробники переривань можуть виконувати безліч функцій, які залежать від причини, яка викликала переривання.Обробник переривань — це низькорівневий еквівалент обробника подій. Ці обробники викликаються або по апаратному перериванню, або відповідною інструкцією в програмі, і відповідно зазвичай призначені для взаємодії з пристроями або для здійснення виклику функцій операційної системи.

На сучасних ПК обробники основних апаратних і програмних переривань знаходяться в пам'яті BIOS. Сучасна операційна система, під час свого завантаження, замінює ці обробники своїми. При завантаженні драйверів пристроїв, операційна система розподіляє управління обробкою переривання між ними. У операційних системах сімейства Windows програмні переривання використовуються для викликів багатьох API функцій. У асемблері X86 переривання викликається командою int.

У сучасних системах обробники переривань діляться на Високопріоритетні Обробники Переривань (ВОП) і Низькопріоритетні Обробники Переривань (НОП).

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

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

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

У різних системах ВОП і НОП іменуються по-різному. У операційній системі Windows ВОП називається обробником переривання, а НОП — відкладений виклик процедури (DPC, Deferred Procedure Call)

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

Стан процесів

У багатозадачній (многопроцессной) системі процес може знаходитися в одному з трьох основних станів :

 

ВИКОНАННЯ - активний стан процесу, під час якого процес має усі необхідні ресурси і безпосередньо виконується процесором;

ОЧІКУВАННЯ - пасивний стан процесу, процес заблокований, він не може виконуватися зі своїх внутрішніх причин, він чекає здійснення деякої події, наприклад, завершення операції введення-виводу, отримання повідомлення від іншого процесу, звільнення якого-небудь необхідного йому ресурсу;

ГОТОВНІСТЬ - також пасивний стан процесу, але в цьому випадку процес заблокований у зв'язку із зовнішніми по відношенню до нього обставинами: процес має усі потрібні для нього ресурси, він готовий виконуватися, проте процесор зайнятий виконанням іншого процесу.

В ході життєвого циклу кожен процес переходить з одного стану в інше відповідно до алгоритму планування процесів, що реалізовується в цій операційній системі. Типовий граф станів процесу показаний на малюнку 2.1.

В змозі ВИКОНАННЯ в однопроцесорній системі може знаходитися тільки один процес, а в кожному із станів ОЧІКУВАННЯ і ГОТОВНІСТЬ - декілька процесів, ці процеси утворюють черги відповідно очікуючих і готових процесів. Життєвий цикл процесу розпочинається із стану ГОТОВНІСТЬ, коли процес готовий до виконання і чекає своєї черги. При активізації процес переходить в стан ВИКОНАННЯ і знаходиться в нім до тих пір, поки або він сам звільнить процесор, перейшовши в стан ОЧІКУВАННЯ якої-небудь події, або буде насильно "витіснений" з процесора, наприклад, внаслідок вичерпання відведеного цьому процесу кванта процесорного часу. У останньому випадку процес повертається в стан ГОТОВНІСТЬ. У цей же стан процес переходить із стану ОЧІКУВАННЯ, після того, як очікувана подія станеться.

Мал. 2.1. Граф станів процесу у багатозадачному середовищі

 

Упродовж існування процесу його виконання може бути багаторазово перерване і продовжене. Для того, щоб відновити виконання процесу, необхідно відновити стан його операційного середовища. Стан операційного середовища відображається станом регістрів і програмного лічильника, режимом роботи процесора, покажчиками на відкриті файли, інформацією про незавершені операції введення-виводу, кодами помилок виконуваних цим процесом системних викликів і так далі. Ця інформація називається контекстом процесу.

 

Окрім цього, операційній системі для реалізації планування процесів потрібно додаткову інформацію: ідентифікатор процесу, стан процесу, дані про міру привілейованої процесу, місце знаходження кодового сегменту і інша інформація. У деяких ОС (наприклад, в ОС UNIX) інформацію такого роду, використовувану ОС для планування процесів, називають дескриптором процесу.

Дескриптор процесу в порівнянні з контекстом містить більше оперативну інформацію, яка має бути легко доступна підсистемі планування процесів. Контекст процесу містить менш актуальну інформацію і використовується операційною системою тільки після того, як прийнято рішення про відновлення перерваного процесу.

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

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

· створити інформаційні структури, що описують цей процес, тобто його дескриптор і контекст;

· включити дескриптор нового процесу в чергу готових процесів;

· завантажити кодовий сегмент процесу в оперативну пам'ять або в область свопінгу.

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

1. Що таке переключення контекстів та для чого воно використовується?

2. Як відбувається оброблення переривань?

3. Як відбувається керування процесами в умовах паралельного виконання?

Література

Електроний ресурс http://www.tup.km.ua/citforum/Opersys/sos/glava 6.htm


– Конец работы –

Эта тема принадлежит разделу:

Тема 1. Основні концепції операційних систем

Мета Ознайомитися і вивчити історію розвитку ОС Ознайомитися з існуючими класифікаціями сучасних операційних систем Дізнатися про функції та... План Історія розвитку операційних систем Класифікація сучасних... Сторія розвитку операційних систем Перші ЕОМ були побудовані і знайшли...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Переключення контекстів, оброблення переривань та проблеми керування процесами в умовах паралельного виконання

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

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

Операційна система Unix
Вважається, що в появі Юнікса зокрема винна... комп'ютерна гра. Річ у тому, що Кен Томпсон (дивитеся фото лі

Операційна система DOS
ДОСы були завжди. Перші - від IВМ, року в 1960-х, вони були дуже обмежені функціонально. Нормальні, такі, що

Операційна система OS/2
Усе почалося з OC VM (Virtual Machine), що вийшла в 1972 році. Випущений тоді продукт називався VM/370 і був призначений для підтримки сервера для певної кількості користувачів. Ця ОС, що давно від

Операційна система Windows
Windows була, напевно, першою операційною системою, яку Білу Гейтсу (дивитеся фото ліворуч) ніхто не замовля

Класифікація сучасних операційних систем
Операційна система складає основу програмного забезпечення ПК. Операційна система представляє комплекс системних і службових програмних засобів, який забезпечує взаємодію користувача з комп'ютером

Функції типових операційних систем
Основна функція усіх ОС - посередницька. Вона полягає в забезпеченні інтерфейсів : · користувача (між користувачем і програмно-апаратними засобами По реалізації інтерфейсу

Властивості операційних систем
Властивості ОС - розраховані на багато користувачів, багатозадачні, мережеві ОС. Многозада́чность (англ. multitasking) — властивість операційної системи або середовищ

Архітектура операційних систем
  Будь-яка складна система повинна мати зрозумілу і раціональну структуру, тобто розділятися на частини — модулі, що мають цілком закінчене функціональне призначення з чітко обумовлен

Ядро і допоміжні модулі ОС
Найбільш загальним підходом до структуризації операційної системи є розподіл усіх її модулів на дві групи: · ядро — модулі, що виконують основні функції ОС; · модулі, що виконують

Багатошарова структура ОС
Обчислювальну систему, працюючу під управлінням ОС на основі ядра, можна розглядати як систему, що складається з трьох ієрархічно розташованих шарів : нижній шар утворює апаратура, проміжний — ядро

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

Концепція віртуальних машин
Віртуальна машина (ВМ, від англ. virtual machine) - · програмна і/або апаратна система, що емулює апаратне забезпечення деякої платформи і виконуюча програми для цієї платформи (target — ц

Програмна сумісність
Апаратна залежність і переносимість ОС Багато операційних систем успішно працюють на різних апаратних платформах без істотних змін у своєму складі. Багато в чому це пояснюєть

Компоненти режиму користувача
  Розглянемо відмінність режиму користувача від режиму ядра на прикладі Windows. Для запобігання доступу додатків до критично важливих даних операційної системи і усунення ри

Тема 3. Паралелізм в середовищі операційних систем
Мета: вивчити поняття паралельного виконання процесу, ознайомитися з апаратною підтримкою багатозадачного режиму ОС, вивчити структури, використовувані для задання процесів. Ознайо

Поняття паралельного виконання процесу
  Паралельними називаються процеси, у яких "інтервали часу виконання перекриваються за рахунок використання різних ресурсів однієї і тієї ж обчислювальної системи або за рахунок

Апаратна підтримка багатозадачного режиму
  Розрахований на багато користувачів режим - це можливість роботи декількох користувачів з базою однієї організації під різними обліковими записами. Під обл

Реєстрація нового користувача
Щоб зареєструвати нового користувача, адміністратор входить в систему, використовуючи сертифікат ключа, вносить дані про нового користувача і вибирає сервіси, з якими працюватиме користувач.

Структури, використовувані для задання процесів
  Дві що належать ядру структури даних описують процес: запис в таблиці процесів і простір процесу. Таблиця процесів. Таблиця процесів містить поля, які мають

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

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

Алгоритми планування
У ОС Windows реалізовано витісняюче пріоритетне планування, коли кожному потоку привласнюється певне числове значення - пріоритет, відповідно до якого йому виділяється процесор. Потоки з однаковими

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

Завдання
Процеси можна об'єднувати в об'єкти завдань (job objects), що дозволяє управляти процесами як групою, встановлювати ліміти ресурсів для усіх процесів, що входять в об'єкт завдання, і вести облікову

Сторія створення MS - DOS
DOS (англ. Disk Operating System — дискова операційна система) — батьківщина тісно пов'язаних операційних систем, які домінували на ринку сумісних із IBM PC комп' ютерів до 1995 року. DOS — однозад

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

Які існують типи дистрибутивів MS - DOS
Операційна система MS - DOS поставляється в двох варіантах. Перший варіант призначений для установки на непідготовлений (неформатований) диск комп'ютера і зазвичай поставляється разом з комп'ютером

Чому в MS - DOS відсутні російські символи та як русифікувати MS - DOS?
Набір символів, які можуть відображатися на екрані ваших комп'ютерів в текстових і графічних режимах MS, - DOS, розташований в мікросхемі постійного відеоадаптера, що запам'ятовує пристрої (ПЗП).

Тема 6. Операційна система WINDOWS
Мета: Вивчення операційної системи WINDOWS. Навчитися роботі в ній. Вивчити структуру ОС WINDOWS План 6.1. Робота з вікнами, переглядання вмісту комп'ютера

Тема 6. Операційна система WINDOWS
Мета: Вивчення операційної системи WINDOWS. Навчитися роботі в ній. Вивчити структуру ОС WINDOWS План 6.1. Робота з вікнами, переглядання вмісту комп'ютера

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

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

Складові елементи та структури даних процесу у Windows
На зміну ini -файлам, що має ряд концептуальних обмежень, ще в Windows 3.1 було введено поняття реєстру — реєстраційної бази даних, що зберігає різні налаштування ОС і додатків. Спочатку реєстр був

Створення та завершення процесів у Windows
  Створення процесів Створення Win32 процесу здійснюється викликом однієї з таких функцій, як CreateProcess, CreateProcessAsUser (для Win NT/2000) і CreateProcessWith

Завершення процесів
Процес завершується якщо: - Вхідна функція первинного потоку повернула управління. - Один з потоків процесу викликав функцію ExitProcess. - Потік іншого процесу викликав

Програмний інтерфейс керування процесами Win32 API
У ОС Windows між додатком і сукупністю системних викликів (системних сервісів в термінології Microsoft) розташований додатковий абстрактний шар - програмний інтерфейс Win32 API. За рахунок цього Wi

Складові елементи та структури даних потоку у Windows
У об'єкті ядра "потік" є змінна — лічильник числа простоїв даного по струму При виклику CreateProcess або CreateThread він ініціалізувався значенням, рав ным 1, яке забороняє системі виді

Створення потоків у Windows
  Первинний потік створюється автоматично при створенні процесу. Інші потоки створюються функціями CreateThread і CreateRemoteThread (тільки у Win NT/2000/XP).  

Архівація інформації
  У системі Windows немає вбудованих функцій для роботи з упакованими архівами, тому більшості користувачів доводиться обзаводитися спеціальними утилітами і при цьому вирішувати пробл

Тема 7. Операційні системи UNIX та LINUX
Мета: вивчення історії створення та найпоширеніших версій ОС Unix та Linux. Іх структуру. План 7.1. Історія виникнення операційної системи UNIX та LINUX

Сторія виникнення операційної системи UNIX та LINUX
UNIX був розроблений американською лабораторією Bell Labs, що входила до складу контори Bell Systems. Історія цієї компанії в області інформаційних технологій почалася в 1957 році, коли її співробі

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

Системні характеристики операційної системи LINUX
Linux - багатозадачна і розрахована на багато користувачів операційна система для бізнесу, освіти і індивідуального програмування. Linux належить сімейству UNIX -подобных операційних систем, яка мо

Качан інсталяції операційної системи UNIX
Щоб завантажити систему виконаєте наступні кроки: Переконаєтеся, що усі пристрої із зовнішніми джерелами живлення, підключені до вашої системи (такі як монітор) включені. Перекона

Качан інсталяції операційної системи LINUX
Для того, щоб почати власне установку Red Hat Linux, вставте настановну дискету (при виготовленні Ви повинні були помітити її як "Boot Diskette'') в дисковод і перезавантажите комп'ютер. Після

Запуск нових програм в ОС UNIX
  Управління пакетами за допомогою RPM Red Hat Package Manager(RPM) - це відкрита система управління пакетами, доступна усім, і використовувана усіма користувачами Red Hat Li

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

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

Основні завдання забезпечення захисту інформації в операційних системах
Ефективність захисту інформації в автоматизованих системах досягається застосуванням засобів захисту інформації (СЗИ). Під засобом захисту інформації розуміється технічний, програмний засіб або мат

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

Локальна та мережна безпека даних
Украй важливо зрозуміти, що безпека - це не продукт, який можна купити в магазині і бути упевненим у власній захищеності. "Безпека"; - особлива комбінація як технічних, так і адміністрати

Локальна та мережна безпека даних
Украй важливо зрозуміти, що безпека - це не продукт, який можна купити в магазині і бути упевненим у власній захищеності. "Безпека"; - особлива комбінація як технічних, так і адміністрати

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

Підтримка багатопроцесорності в LINUX
Ранні SMP системи Linux були слабозв'язаними багатопроцесорними системами, тобто побудованими з декількох окремих систем, пов'язаних високошвидкісним з'єднанням (таким як 10G Ethernet, Fibre Channe

Сильносвязанная багатопроцесорна обробка
Сильносвязанная багатопроцесорна обробка відноситься до обробки на рівні кристала (CMP -- chip - level multiprocessing). Представте слабозв'язану архітектуру, зменшену до рівня кристала. Це і є іде

SMP і ядро Linux
Коли тільки з'явився Linux 2.0, підтримка SMP складалася з основної системи блокування, яке упорядковувало доступ в системі. Пізніше невеликий прогрес в підтримці SMP був, але тільки з ядром 2.6 на

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги