Системен софтуер

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене
Системният софтуер осигурява връзката между хардуера и приложния софтуер

Системният софтуер е софтуер, който е проектиран да управлява компютърния хардуер и да осигурява платформа за работа на приложния софтуер. За разлика от приложния софтуер не е създаден за да бъде управляван от крайният потребител.

Основни типове[редактиране | редактиране на кода]

Основните типове системен софтуер са:

  • Компютърният BIOS и микропрограмите (фърмуер) осигуряват основната функционалност за работа и контрол на хардуера, свързан към или вграден в компютъра.
  • Операционната система (по-известни примери са Microsoft Windows, Mac OS X и Линукс) е една от най-важните и най-често използваните програми в компютрите. Позволява на различни части от компютъра да работят заедно, като извършва основни задачи като прехвърляне на данни между оперативната памет и дисковете или изобразяване на изходни данни върху дисплея. Предоставя също платформа за стартиране на системен софтуер от по-високо ниво и на приложен софтуер.
  • Инструментален софтуер са програмите, които осигуряват средства за използване и обслужване на компонентите на компютъра, както и средства за разработване на други програми и различни приложения. В тази група попадат сервизните програми (Utilities), с които се извършва диагностика, управление на устройства, презапис от един на друг носител, архивиране, антивирусни програми и др. .

Преглед[редактиране | редактиране на кода]

Преглед на системния софтуер на компютъра

При написването на една програма (сорс програма) на програмен език, посредством системния софтуер, тя минава през различни трансформации преди да може да бъде изпълнена. [1]

Компилатор[редактиране | редактиране на кода]

Компилаторът е компютърна програма, която превежда (компилира) даден компютърен изходен код в семантично отговарящ код на език от (обикновено) по-ниско ниво. Целевият език може да бъде машинен език или асемблерен език за конкретен процесор или процесорна фамилия, както и междинен език за конкретна виртуална машина (например байткод за виртуална машина на Java) или друг език от високо ниво. Когато се компилира до машинен език, крайният продукт е изпълнима програма или обектен код.

Видове[редактиране | редактиране на кода]

  • Местен (native) компилатор

Резултатът от превеждането е код, изпълним на платформата на самия компилатор.

  • Смесен (cross) компилатор

Резултатът е изпълним код, предназначен за платформа, различна от тази на компилацията. Използва се например при създаване на код за вградени системи, където или няма възможност, или е по-трудно да се създават програми.

  • Еднопреходен компилатор (single-pass compiler), също ограничен компилатор (narrow compiler)

Този компилатор превежда програмата последователно и на един път (single-pass) за всеки компилиран блок, т.е. компилаторът не се връща обратно на вече преведени части. Много програмни езици са замислени така, че да бъдат превеждани еднопреходно (напр. Паскал).

  • Многопреходен компилатор (multi-pass compiler), също разширен компилатор (wide compiler)

Този компилатор превежда програмата на няколко стъпки и намира приложение най-вече за:

  • прекъсване на предходни заявявания на променливите (forward declaration, forward reference)
  • провеждане на оптимизациите (свързани с изразходване на много ресурси) върху пълната синтактична дървовидна структура

Асемблер[редактиране | редактиране на кода]

Асемблерът е програма, която създава обектен код, като превежда комбинации от мнемоники, синтаксис за операции и режими за адресиране в техните числови еквиваленти. Това представяне обикновени включва операционен код, както и контролни битове. Асемблерът също изчислява константни изрази и намира адресите в паметта. Употребата на символични референции е ключова характеристика за асемблерите, спестяваща досадните изчисления и ръчната смяна на адреси, след модификации в програмите. Повечето асемблери също така включват улесняващи макро инструкции за извършване на текстови замествания,  за генериране на често срещани кратки поредици от инструкции вътре в кода, вместо извикване на подпрограми. Освен това за някои асемблери е възможно да извършват някои несложни типове оптимизации на групи от специфични инструкции. Подобно на началните езици за програмиране като Fortran, Algol, Cobol и Lisp, асемблерите след 1950 година разполагат и с първите поколения текст базирани компютърни интерфейси. Може да съществуват няколко асемблера с различен синтаксис за определен процесор или друга програмируема архитектура.

Трансформация на кода

Свързващ редактор[редактиране | редактиране на кода]

След като  обектният код бъде създаден от асемблера, той бива препращан към  свързващия редактор (англ.: linker)[2]. Свързващият редактор приема един или повече обектни файлове и ги комбинира, като позволява  връзки помежду им. Обектните  файлове се свързват един към друг с помощта на символи. Такъв символ може да бъде: дефиниран външен (публично дефиниран), недефиниран външен или вътрешен.

Външно дефинираните символи могат да бъдат повиквани от други модули, а външно недефинираните символи повикват други модули, където тези символи са дефинирани. Това е известно още като „външно свързване“. Вътрешните символи, от друга страна, се използват само вътрешно в рамките на един обектен файл, с цел да се подобрят неговите способности за преместване.  Обекти от библиотеки също могат да се добавят и сливат.

Свързващият редактор изчислява местата на паметта, които всеки модул ще заеме и изменя обектният код така, че той да може да бъде зареден на различен адрес.

Свързващите редактори могат да бъдат статични и динамични. Разликата е в това, че статичните създават напълно свързан изходен обектен файл. Динамичните свързващи редактори обаче отлагат свързването на недефинирани символи, в резултат на което се получава непълно свързан обектен  файл.  Такъв файл ще бъде напълно свързана след като се зареди от операционната система посредством Зареждащата програма (Loader).

Зареждаща програма[редактиране | редактиране на кода]

Зареждащата програма[3] е тази част от операционната система, която взема вече компилиран, изпълним обектен файл и го зарежда. Обектните  файлове се вземат от вторичната памет и се поставят в главната памет на системата и се подготвят за изпълнение. След като всички файлове са заредени, контролът се предава от операционната система към новозаредената програма и програмата започва да се изпълнява.

По-специално, зареждаща програма: определя  големината на сегментите, текстови и данни, заделя памет и адреси от паметта за програмата, копира  функциите и данните в заделената памет, копира  променливите подавани на програмата в  стека, инициира машинните регистри  и показалеца на стека и преминава към  стартова процедура.[4]

Има различни видове Зареждащи програми, като всяка има своите предимства и недостатъци. Например:

  • „състави и започни“  (Compile and Go loader) – прост и лесен за прилагане, но кодът трабва да бъде  зареждан всеки път, когато се изпълнява.
  • Абсолютен (Absolute loader) – ефикасен, но труден при използване на подпрограмни библиотеки.
  • Преместващ (Relocating loader) – ефикасен, когато трябва да се изпълняват заедно няколко независими програми.
  • Директно свързващ (Direct linking loader )– Вид Преместваща зареждаща програма. Предоставя гъвкаво между сегментно свързване.

Редактор и дебъгер[редактиране | редактиране на кода]

Редакторът на изходен код е текстов редактор, прилаган конкретно за редактиране на изходен код от програмистите. Той може да е отделно приложение или пък да е вграден в интегрирана среда за разработка (IDE) или уеб браузър. Редакторите на изходен код са основен програмен инструмент, тъй като се използва за създаване и променяне на файлове от програмистите. Има много различни редактори:

  • Atom
  • Eclipse
  • IntelliJ IDEA built-in editor
  • Microsoft Visual Studio Code
  • Microsoft Visual Studio built-in editor
  • NetBeans
  • Notepad++
  • Sublime Text
  • Други

Дебъгерът е компютърна програма за проследяване на процеса на изпълнение на компютърни програми (дебъгване). Обикновено целта на такова проследяване е намиране на грешки, които се наричат „бъгове“.

Този тип програми се използва от програмисти за тестване на новосъздадени продукти, за да се предотвратят възможни неизправности в процеса на работа на дадения продукт. Когато програмата се изпълнява в дебъг-режим, тя е значително забавена, за да може да се открие момента на възникването на дадения „бъг“.

Системен софтуер и приложен софтуер[редактиране | редактиране на кода]

Системен софтуер[редактиране | редактиране на кода]

Системен софтуер са приложения или програми, които са направени специално, за да контролират хардуера на персонален компютър и се използват за платформа, върху която приложният софтуер да се използва. Това значи, че системният софтуер е създаден с цел да комуникира с вътрешните компоненти на вашия компютър, като например твърдия диск, оперативната памет, процесора и други, така че на потребителя да не му се налага да го прави. Системния софтуер съдържа всички драйвъри нужни за този тип комуникация и в казано по най-лесния за разбиране начин е интерфейса между потребителя и хардуера. Операционната система(ОС) на компютъра ви не е само най-важния системен софтуер, но също и най-често използвания. Тя е софтуера, който управлява частите на компютъра по начин, по който потребителя има постоянни визуализация на действия случващи се в компютъра му. Някои от отговорностите на ОС включват трансфера на данни между паметта и твърдия диск, както и цялата информация за всички необходими компоненти на дисплея(текст, картинки, курсори и др.). Този дисплей се нарича графичен потребителски интерфейс или GUI и е цялостния резултат на ОС. Важно е да се запомни, че ОС се управлява самостоятелно от приложния софтуер и потребителя. Това значи, че ОС не зависи нито от потребителя, нито от други програми, за да функционира. Други видове системен софтуер включват BIOS и др. Тези устройства помагат на потребителя да си комуникира със инструменти като например:

  • инструменти за диагностика
  • преводачи
  • други


Приложен софтуер[редактиране | редактиране на кода]

Приложен софтуер са най-често използваните програми, които работят на един компютър. Те обикновено изпълняват полезни задачи, които не се асоциират със поддръжка на компютъра, зареждане на ОС, или връзка с хардуера. Приложният софтуер разчита на системния софтуер за връзка с физическите компоненти на компютъра и не може да работи без него. Ако се представят визуално, приложният софтуер би оперирал директно върху системния софтуер и би бил най-видимата част за потребителя, докато системният софтуер би останал незабележим. След това системният софтуер ще комуникира с хардуера от името на приложния софтуер и ще пренесе всяка информация от приложния софтуер. Всяка информация, нужна на хардуера, ще бъде подадена на стъпки през системния софтуер към приложния софтуер. Приложният софтуер е най-разпространения вид софтуер и най-често се достъпва през графичния интерфейс на ОС. Някои от най-известните примери за приложен софтуер включват:

Този списък по никакъв начин не изчерпва какви възможности има приложния софтуер, защото ежедневно се създават нови приложения за ежедневните дейности на хората.

Операционна система[редактиране | редактиране на кода]

Операционната система е един от най-важните компоненти на един компютър и позволява на хардуера да комуникира със софтуера. Операционната система може да изпълнява както прости, така и сложни задачи. Операционните системи могат да бъдат класифицирани като multiuser (многопотребителска), multiprocessing (многопроцесна), multitasking (многозадачна), multithreading (многонишкова) и real time (реално времева). Операционната система не допуска различни програми и потребители, работещи едновременно, да си пречат. Потребителят взаимодейства с операционната система чрез набор от команди. Всички приложни програми се нуждаят от операционна система. Операционната система също така оптимизира работата на компютъра, като повечето от работата ѝ се извършва неявно. Системата отговаря за управлението на мрежовите връзки. Имайки предвид развитието на новите технологии, операционните системи трябва да се развиват, за да могат да ги поддържат. Като цяло операционната система е ядрото на всеки един компютър.

Източници[редактиране | редактиране на кода]

  1. System Software by M. Joseph
  2. https://en.wikipedia.org/wiki/Linker_%28computing%29
  3. https://en.wikipedia.org/wiki/Loader_%28computing%29
  4. http://www.slideshare.net/akshaykhatri125/linker-and-loader-18359420