Систе́мне програмува́ння (або програмування систем) — це вид програмування, який полягає у розробці програм, які взаємодіють з системним програмним забезпеченням (операційною системою), або апаратним забезпеченням комп'ютера. Головною відмінністю системного програмування в порівнянні з є те, що прикладне програмне забезпечення призначене для кінцевих користувачів (наприклад, текстові процесори, графічні редактори), тоді як результатом системного програмування є програми, які обслуговують апаратне забезпечення або операційну систему (наприклад, дефрагментація диска) що обумовлює значну залежність такого типу ПЗ від апаратної частини. Слід зазначити, що «звичайні» прикладні програми можуть використовувати у своїй роботі фрагменти коду, характерні для системних програм, і навпаки; тому чіткої межі між прикладним та системним програмуванням немає. Оскільки різні операційні системи відрізняються як внутрішньою архітектурою, так і способами взаємодії з апаратним та програмним забезпеченням, то принципи системного програмування для різних ОС є відмінними. Тому розробка прикладних програм, які здійснюватимуть одні і ті ж дії на різних ОС, може суттєво відрізнятися.
В загальному для системного програмування характерні такі особливості (одна або кілька):
- програміст повинен враховувати особливості операційної системи та/або апаратного забезпечення, на яких передбачається запуск програми, та використовувати ці особливості (наприклад, застосовуючи оптимізовані алгоритми для певної архітектури)
- зазвичай використовуються або діалекти які:
- можуть працювати у ресурсо-обмеженому середовищі
- максимально раціональні та мають мінімальні затримки за часом виконання
- мають малі бібліотеки (RTL), або взагалі їх не мають
- дозволяють виконувати прямий доступ до пам'яті та керівної логіки
- дозволяють програмісту писати частини програми на асемблері
- зневадження може бути складним, якщо неможливо запустити програму у відповідному режимі через обмеження у ресурсах. Виконання програми у імітованому середовищі може зняти цю проблему.
Системне програмування суттєво відрізняється від прикладного програмування, що змушує програмістів спеціалізуватися в одній із цих галузей.
Для системного програмування часто доступна тільки обмежена кількість інструментів. Зневадження інколи має підвищену складність. Бібліотеки періоду виконання, якщо взагалі доступні, мають набагато менші можливості, і роблять менше перевірок на помилки. Через ці обмеження, часто використовуються моніторинг та реєстрація даних; операційні системи мають бути забезпечені дуже якісними підсистемами реєстрації даних.
Історія
Спочатку системні програмісти неодмінно використовували асемблер. Експерименти з підтримкою апаратної частини у високорівневих мовах програмування у кінці 60-х призвели до появи таких мов як та BCPL, але С, яка допомогла росту Unix, набула поширення вже у 1980-х. Віднедавна деяке використання знайшлось і для , наприклад у драйверів у Mac OS X. Станом на 2022-й в експериментальному режимі функціонує підтримка мови Rust для програмування ядра Linux.
Приклади
Прикладами програмного забезпечення, розробленого в результаті системного програмування, є реалізація основних частин операційної системи та програм для мережевої роботи. Наприклад, розробка віртуальної пам'яті або драйверів для операційної системи.
Джерела
- Коноваленко І. В., Федорів П. С. Системне програмування у Windows з прикладами на Delphi, Т:ТНТУ.- 2012.
- Харт Джонсон М. Системное программирование в среде Windows / Джонсон М. Харт ; пер. с англ. — М. : Издательский дом «Вильямс», 2005.
- Rust For The Linux Kernel Sent Out For Review A Fourth Time. www.phoronix.com (англ.). Процитовано 14 липня 2022.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Siste mne programuva nnya abo programuvannya sistem ce vid programuvannya yakij polyagaye u rozrobci program yaki vzayemodiyut z sistemnim programnim zabezpechennyam operacijnoyu sistemoyu abo aparatnim zabezpechennyam komp yutera Golovnoyu vidminnistyu sistemnogo programuvannya v porivnyanni z ye te sho prikladne programne zabezpechennya priznachene dlya kincevih koristuvachiv napriklad tekstovi procesori grafichni redaktori todi yak rezultatom sistemnogo programuvannya ye programi yaki obslugovuyut aparatne zabezpechennya abo operacijnu sistemu napriklad defragmentaciya diska sho obumovlyuye znachnu zalezhnist takogo tipu PZ vid aparatnoyi chastini Slid zaznachiti sho zvichajni prikladni programi mozhut vikoristovuvati u svoyij roboti fragmenti kodu harakterni dlya sistemnih program i navpaki tomu chitkoyi mezhi mizh prikladnim ta sistemnim programuvannyam nemaye Oskilki rizni operacijni sistemi vidriznyayutsya yak vnutrishnoyu arhitekturoyu tak i sposobami vzayemodiyi z aparatnim ta programnim zabezpechennyam to principi sistemnogo programuvannya dlya riznih OS ye vidminnimi Tomu rozrobka prikladnih program yaki zdijsnyuvatimut odni i ti zh diyi na riznih OS mozhe suttyevo vidriznyatisya V zagalnomu dlya sistemnogo programuvannya harakterni taki osoblivosti odna abo kilka programist povinen vrahovuvati osoblivosti operacijnoyi sistemi ta abo aparatnogo zabezpechennya na yakih peredbachayetsya zapusk programi ta vikoristovuvati ci osoblivosti napriklad zastosovuyuchi optimizovani algoritmi dlya pevnoyi arhitekturi zazvichaj vikoristovuyutsya abo dialekti yaki mozhut pracyuvati u resurso obmezhenomu seredovishi maksimalno racionalni ta mayut minimalni zatrimki za chasom vikonannya mayut mali biblioteki RTL abo vzagali yih ne mayut dozvolyayut vikonuvati pryamij dostup do pam yati ta kerivnoyi logiki dozvolyayut programistu pisati chastini programi na asembleri znevadzhennya mozhe buti skladnim yaksho nemozhlivo zapustiti programu u vidpovidnomu rezhimi cherez obmezhennya u resursah Vikonannya programi u imitovanomu seredovishi mozhe znyati cyu problemu Sistemne programuvannya suttyevo vidriznyayetsya vid prikladnogo programuvannya sho zmushuye programistiv specializuvatisya v odnij iz cih galuzej Dlya sistemnogo programuvannya chasto dostupna tilki obmezhena kilkist instrumentiv Znevadzhennya inkoli maye pidvishenu skladnist Biblioteki periodu vikonannya yaksho vzagali dostupni mayut nabagato menshi mozhlivosti i roblyat menshe perevirok na pomilki Cherez ci obmezhennya chasto vikoristovuyutsya monitoring ta reyestraciya danih operacijni sistemi mayut buti zabezpecheni duzhe yakisnimi pidsistemami reyestraciyi danih IstoriyaSpochatku sistemni programisti neodminno vikoristovuvali asembler Eksperimenti z pidtrimkoyu aparatnoyi chastini u visokorivnevih movah programuvannya u kinci 60 h prizveli do poyavi takih mov yak ta BCPL ale S yaka dopomogla rostu Unix nabula poshirennya vzhe u 1980 h Vidnedavna deyake vikoristannya znajshlos i dlya napriklad u drajveriv u Mac OS X Stanom na 2022 j v eksperimentalnomu rezhimi funkcionuye pidtrimka movi Rust dlya programuvannya yadra Linux PrikladiPrikladami programnogo zabezpechennya rozroblenogo v rezultati sistemnogo programuvannya ye realizaciya osnovnih chastin operacijnoyi sistemi ta program dlya merezhevoyi roboti Napriklad rozrobka virtualnoyi pam yati abo drajveriv dlya operacijnoyi sistemi DzherelaKonovalenko I V Fedoriv P S Sistemne programuvannya u Windows z prikladami na Delphi T TNTU 2012 Hart Dzhonson M Sistemnoe programmirovanie v srede Windows Dzhonson M Hart per s angl M Izdatelskij dom Vilyams 2005 Rust For The Linux Kernel Sent Out For Review A Fourth Time www phoronix com angl Procitovano 14 lipnya 2022