Операционна система

от Уикипедия, свободната енциклопедия

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

ОС разпределя задачите по време, планира ефикасното използване на ресурсите на системата и може да включва специализиран софтуер за изчисление на ресурси: стойност на процесорното време, използвана памет, ресурси за печат и други. При входно-изходните операции и динамично разпределение на паметта ОС действа като посредник между приложния софтуер и хардуера[1][2], макар че приложните команди обикновено се изпълняват директно, чрез системни повиквания към функции на ОС. ОС се среща на повечето устройства с компютри – от мобилни телефони през игрални конзоли до уеб сървъри и суперкомпютри.

Примери за популярни съвременни ОС са: AIX, Android, BlackBerry, BSD, Chrome OS, iOS, GNU/Linux, macOS, QNX, Microsoft Windows, SteamOS,[3] Windows Phone и z/OS. Първите девет имат общ произход, свързан с UNIX. Други популярни ОС в реално време са FreeRTOS, Micrium и VxWorks.

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

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

Исторически необходимостта от оптимално използване на скъпите изчислителни ресурси води до появата на концепцията „пакетен режим“ на изпълнение на програмите, който предполага наличието на определен ред, при което ОС може да зарежда програмата в оперативната памет от външни носители на данни, без да изчаква завършването на изпълнението на предходната програма и така се избягва излишен престой на процесора. В развития вариант на пакетния режим времето на процесора се разпределя между изпълнението на няколко програми (понятието за „многозадачност“ или „мултипрограмиране“). Исторически понятието многозадачност възниква през 60-те години, когато входно-изходните устройства са отначало телетипи, а по-късно терминали. Тъй като скоростта на въвеждането на данни от оператор е много по-ниска от скоростта на обработка на същите данни от процесора, използването на компютъра от само един оператор води до прахосване на скъпи изчислителни ресурси. „Разделението по време“ (time sharing) позволява създаването на многопотребителски системи, в които централният процесор и блокът на оперативната памет обслужват много потребители. При това част от задачите (като въвеждане или редактиране на данни) могат да се изпълняват в диалогов режим чрез терминали, а други (като обемните изчисления) – в пакетен режим.

След появата на персоналните компютри и работните станции разделението по време на практика е заменено с многозадачност.

Едно- и многозадачни[редактиране | редактиране на кода]

Еднозадачната ОС изпълнява само една задача в даден момент, докато многозадачната изпълнява няколко задачи едновременно. Това се постига чрез разделение на времето на работа на процесора според инструкциите на специална подсистема (task scheduling subsystem). Тук отново има варианти:

а) при разпределена многозадачност (pre-emptive multitasking) ОС отпуска на задачата определено време да ползва процесора. Ако тя не успее да приключи за това време, ОС я форсира да отстъпи процесора на следващата задача, която се нуждае от него. Такива ОС са Unix-базираните като Solaris, Linux, 32-битовите версии на Windows NT и Win9x, както и AmigaOS.
б) При кооперативната многозадачност приложението, стартирано от ОС, използва 100% от процесора. В този случай, ако друга програма изиска процесорно време, то или няма да ѝ бъде предоставено, което ще доведе до нарушаване на функциите на това приложение и/или до терминирането му, или ще бъде предоставено след приключване на първото – такива са 16-битовите версии на Microsoft Windows.

Първата ОС с реализирана многозадачност е UNIX. Други такива ОС са GNU/LINUX, Windows NT и по-късно Mac OS, OS/2. Това са и реално първите 32-битови ОС. Разпределената многозадачност е най-използваният тип в практиката. Всички съвременни ОС я поддържат, като спазват приоритети при използването на системните ресурси. По този начин програми с по-висок приоритет могат по-често да използват процесорно време от програми с по-нисък такъв.

Едно- и многопотребителски[редактиране | редактиране на кода]

Еднопотребителските ОС не различават потребителите, но не са непременно еднозадачни, тъй като няколко програми могат да се изпълняват в съчетание.[4] Например MS DOS е еднопотребителска еднозадачна ОС.

Многопотребителските ОС разширяват концепцията за многозадачност, като различават потребителите по отношение ползването на процеси и ресурси, като например дисково пространство. Те планират ефикасното използване на ресурсите на системата и могат да съдържат специализиран софтуер за изчисление на процесорното време от много потребители, както и да отчитат използваната памет, ползване на принтер и други използвани ресурси.

Разпределени[редактиране | редактиране на кода]

Разпределената ОС управлява група компютри така, че те изглеждат като един компютър. Развитието на компютърните мрежи, при които отделните машини са свързани и комуникират една с друга прави възможни разпределените изчислителни системи (distributed computing).[5]

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

Вградените ОС са предназначени за вградени компютърни системи. Те са проектирани за работа на малки машини като PDA, които притежават малка автономност и малко ресурси и затова са много компактни и ефикасни по самия си замисъл. Примери за такива ОС са Windows CE и Minix 3.

ОС в реално време[редактиране | редактиране на кода]

Прилагането на компютри за управление на производствени процеси изисква работа в реално време, т.е. синхронизация на изпълнението на софтуера с външни физически процеси. Включването на функции за реално време в ОС позволява да се създават системи, едновременно обслужващи производствените процеси и решаващи други задачи (в пакетен режим и/или в режим на разделение по време). Популярни ОС в реално време (real-time operating systems) са FreeRTOS, Micrium и VxWorks

Специализирани и потребителски[редактиране | редактиране на кода]

В днешно време съществуват много разновидности на тясно специализирани ОС. Такива например са мрежовите ОС като Unix, Solaris, NetWare и др. Операционните системи за суперкомпютрите, които обикновено са собствени разработки или са преработени съществуващи ОС, като Solaris, HP-UX, както и ОС за разпределени и облачни изчисления са също силно специализирани[6]. За разлика от тях Windows, Mac OS, OpenSolaris, GNU/Linux, BSD (NetBSD, OpenBSD, FreeBSD, PC-BSD, PicoBSD) са предназначени да изпълняват много по-широк кръг от задачи. Те се наричат потребителски операционни системи.

История[редактиране | редактиране на кода]

Предшествениците на първите компютри са създадени да изпълняват единични задачи, например калкулаторът, и нямат ОС. С напредъка на технологиите през 50-те години се създават първите компютри, които са еднозадачни и еднопотребителски, като всеки потребител ги ползва в отреденото му време и зарежда програмата си. Входно-изходните устройства са с перфокарти или перфолента, а дебъгването става посредством челен панел с лампички и превключватели. Постепенно започват да се създават служебни програми за зареждане и мониторинг (напр. resident monitor), така че изпълнението на програмите да стартира автоматично, за да се ускори обработката. Първите концепции за ОС са изведени от Алън Тюринг според принципите на универсалната машина на Тюринг по време на работата му с компютъра Mark 1 в Манчестър.[7] Мнозина считат усъвършенствания през 1962 г. модул Atlas Supervisor на манчестърския компютър Atlas за първата съвременна ОС[8][7].

ОС в съвременния им вид се появяват в началото на 1960-те, когато се появяват компютрите със запаметена програма и се въвеждат машинните езици.[7] Добавят се функции за контрол на хардуера, софтуерни библиотеки, прекъсвания и паралелна обработка на информацията. Библиотеките позволяват да се избегне многократното програмиране на едни и същи действия (операции по вход-изход, изчисление на математически функции и т.н.) През 1950-те и 1960-те водеща роля в разработката на ОС играе компанията IBM, лидер на пазара на мейнфрейм компютри. През този период се сформират и реализират основните идеи за необходимите функционалности на ОС като: пакетна обработка (batch processing), входно-изходни прекъсвания, буфериране на данните, многозадачност, spooling, runtime library, свързващ редактор (link-loading) и сортиране на данните, макар че реализацията им не е задължителна част от ОС. При появата на персоналните компютри през 1980-те техните ОС наподобяват концепциите на използваните в големите машини.

В повечето от мейнфрейм компютрите на IBM се използва операционна система OS/360, включително за програмата Аполо.

Мейнфрейм компютри[редактиране | редактиране на кода]

През 60-те години IBM разработва OS/360 – единна операционна система за цяла серия от различни машини, което обуславя големия им пазарен успех. Днешните ОС в мейнфрейм компютрите на IBM са далечни потомци на тази оригинална система, но приложният софтуер, писан за OS/360, все още е използваем. Тази ОС въвежда и концепцията за контрол на всички системни ресурси, включително разпределението на основната и допълнителната памет, като при терминиране на някой процес независимо по каква причина контролът върху ресурсите се връща на ОС.

CP-67 е алтернативна ОС на IBM, която въвежда концепцията за виртуална машина и също поставя началото на цяла поредица от нови машини. Други операционни системи за серията машини IBM S/360 са: COS/360 (Compatibility Operating System), DOS/360 (Disk Operating System), TSS/360 (Time Sharing System), TOS/360 (Tape Operating System), BOS/360 (Basic Operating System) и ACP (Airline Control Program).

General Electric и MIT разработват General Electric Comprehensive Operating Supervisor (GECOS), в който е въплътена концепцията за приоритетни нива във формата на пръстен. След придобиването ѝ от Honeywell тази ОС е преименувана на General Comprehensive Operating System (GCOS).

Digital Equipment Corporation разработва множество ОС за своите компютри, например TOPS-10 и TOPS-20 системи с разделение по време за 36-битовите системи PDP-10. TOPS-10 е особено популярна сред университетските среди, в частност в ранните години на ARPANET.

Съществуват и други ОС, свързани с различни компании: MTS (Michigan Terminal System), MUSIC (Multi-User System for Interactive Computing) и ORVYL (Stanford Timesharing System).

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

  • Burroughs MCP – B5000 от 1961 до Unisys Clearpath/MCP днес
  • IBM OS/360 – IBM System/360, от 1966 до IBM z/OS днес
  • IBM CP-67 – IBM System/360, от 1967 до IBM z/VM
  • UNIVAC EXEC 8UNIVAC 1108, от 1967 до OS 2200 на Unisys Clearpath Dorado

Микрокомпютри[редактиране | редактиране на кода]

PC DOS е една от първите ОС за персонални компютри с команден ред

Първите микрокомпютри нямат нужда от сложните ОС, разработени за мейнфрейм и миникомпютрите; разработени са минималистични ОС, често зареждани от ROM и известни като resident monitor. Една от ранните дискови операционни системи е CP/M, поддържана от много от първите микрокомпютри и значително имитирана в MS-DOS на Microsoft, станала много популярна след като е избрана за операционна система на IBM PC (тази версия се нарича IBM DOS или PC DOS). През 1980-те Apple Computer Inc. (днес Apple Inc.) прекратява своята популярна серия микрокомпютри Apple II и пуска на пазара Apple Macintosh с новаторска ОС с графичен потребителски интерфейсMac OS.

Появата на процесорния чип Intel 80386 с 32-битова компютърна архитектура и възможност за страниране на паметта (paging), дава възможност персоналните компютри да ползват многозадачни ОС като разработените за мейнфрейм и мини компютрите. Майкрософт разработват операционната система VMS за DEC. По-късно същите разработчици създават Windows NT, която лежи в основата на по-късните ОС на Майкрософт. Стив Джобс напуска Apple и стартира нова компания NeXT Computer Inc., разработила NEXTSTEP ОС. NEXTSTEP по-късно е закупена от Apple и използвана, заедно с програмен код от FreeBSD като сърцевина на Mac OS X. Първите ОС и на „Майкрософт“ и на „Епъл“, появили се през 1980-те, са еднопотребителски, първоначално 8-битови и трудни за употреба. Впоследствие се появяват и 16-битови операционни системи. И двете компании разбират, че трябва да разработват нови технологии и това води до създаването на ОС Windows 95 и новите версии на Mac OS. Въпреки че Windows 95 е рекламирана като 32-битова многопотребителска многозадачна ОС, тя се базира на DOS, която е 16-битова, и Windows 95 всъщност представлява хибридна 16-битова/32-битова система.

Ричард Столман стартира GNU Project с цел да създаде напълно свободен софтуер в замяна на собственическата (на английски: proprietary) ОС UNIX. Членовете на проекта успяват да дублират функционалностите на различни части от UNIX, но операционната система GNU Hurd се оказва непродуктивна. През 1991 финландският студент по компютърни науки Линус Торвалдс със съмишленици и работейки по интернет, разработва първата версия на Linux kernel. Тя скоро е съчетана с други GNU компоненти и системен софтуер, оформяйки пълноценна ОС. Оттогава резултатът се нарича просто „Linux“ от софтуерната индустрия, макар че Столман и Фондацията за свободен софтуер предпочитат името GNU/Linux. Операционната система Berkeley Software Distribution, известна като BSD, е вторият важен клонинг на UNIX, произлязъл през 1970-те от Калифорнийския университет в Бъркли. Разпространявана свободно и пригодна за много миникомпютри, в крайна сметка тя започва да се прилага и в много персонални компютри под формата на FreeBSD, NetBSD и OpenBSD.

Примери за ОС[редактиране | редактиране на кода]

Unix и базирани на нея[редактиране | редактиране на кода]

Еволюция на Unix ОС

Първоначално Unix е написана на асемблер.[9] Кен Томпсън е основен разработчик на езика за програмиране B, свързан основно с BCPL, като изхожда от опита си в проекта MULTICS. Езикът B е заменен от езика C и Unix, пренаписана на C, се развива в голямо сложно семейство от взаимно свързани ОС, оказващи силно влияние в развитието на всички следващи.

Групата от Unix-базирани ОС има няколко основни подгрупи: System V, BSD и Linux. Името „UNIX“ е търговска марка на консорциума The Open Group, който сертифицира употребата ѝ за всяка ОС, която отговаря на изискванията. Сертифицирани са четири ОС: HP-UX на HP и AIX на IBM произхождат от оригиналната System V Unix и могат да работят само на оригинален хардуер на съответната компания. За разлика от тях, Solaris на Sun Microsystems може да работи на различни типове хардуер, включително сървъри x86 и Sparc, както и на PC. OS X на Apple, заместила по-старата Mac OS (небазирана на Unix), е хибрид между NeXTSTEP, Mach и FreeBSD.

Определението „Unix-базирани“ се използва за общо название на ОС, които наподобяват оригиналния UNIX. Те работят на най-разнообразни компютърни архитектури. Използват се много при сървъри в бизнеса и при работни станции в научноизследователски организации. Популярни варианти на UNIX са Linux и BSD, които са свободен софтуер.

За осигуряване на оперативна съвместимост с Unix е създаден специален стандарт POSIX.

BSD и производни[редактиране | редактиране на кода]

Първият сървър за World Wide Web в CERN използва NeXTSTEP, основана на BSD

BSD е подгрупа на Unix, включваща FreeBSD, NetBSD и OpenBSD. Тези ОС се използват най-често на уебсървъри, макар че могат да работят и като ОС на персонални компютри. Интернет дължи съществуването си до голяма степен на BSD, тъй като много от комуникационните протоколи, използвани от компютрите за връзка, изпращане и получаване на данни по мрежите са използвани широко и усъвършенствани в BSD. World Wide Web е демонстрирана за първи път с ОС NeXTSTEP, основана на BSD.

Корените на BSD са в Unix. През 1974 Калифорнийският университет в Бъркли инсталира първия си компютър с ОС Unix. С течение на времето студентите и преподавателите започват да добавят нови програми за улеснение на работата, като например текстов редактор. През 1978 университетът получава нови VAX компютри с инсталирана ОС Unix и студентите я модифицират допълнително, за да използват пълноценно възможностите на хардуера. Проектът получава финансиране от DARPA. Впоследствие много учебни заведения, компании и правителствени организации започват да използват версията на ОС от Бъркли вместо официалната версия, дистрибутирана от AT&T.

Стив Джобс, който през 1985 напуска Apple Inc., основава нова компания NeXT Inc. за производство на висок клас компютри с ОС NeXTSTEP, производна на BSD. Един от тези компютри е използван от Тим Бърнърс-Лий при създаването на World Wide Web.

Проектът BSD дава начало на различни производни ОС като FreeBSD и NetBSD.

OS X[редактиране | редактиране на кода]
Логотип на OS X Lion

OS X на Apple (с предишно име Mac OS), е фамилия от ОС с графичен интерфейс, като последната версия на ОС се инсталира стандартно на всички продавани компютри Macintosh. Тя е наследник на оригиналната Mac OS, разработена през 1984. За разлика от нея OS X е разработена въз основа на NeXT, след като Apple придобива компанията през 1997. Първата ѝ версия Mac OS X Server 1.0 е от 1999, следва десктоп версия Mac OS X v10.0 през 2001. Оттогава има още шест различни клиент или сървър версии, докато двете се сливат в OS X 10.7 „Lion“ и марката е ребрандирана като „OS X“. Версиите носят отначало имената на големи хищници, а след това на местности в Калифорния[10]. последната версия macOS Sierra е пусната в края на октомври 2016.

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

Ubuntu, десктоп дистрибуция на Linux
Android, популярна мобилна ОС, използва модифицирана версия на Linux ядрото

Линукс ядрото се появява през 1991 като страничен проект на Линус Торвалдс, докато той е студент във Финландия. Той съобщава за своя проект в бюлетин на нюзгрупа за компютри на студенти и програмисти и получава подкрепа от страна на доброволци, като по този начин е създадено пълно и функционално ядро на ОС.

Linux е Unix-базирана ОС, но за разлика от BSD и нейните варианти не използва програмния код на Unix. Поради отворения си лиценз програмният код на Линукс ядрото може да бъде изучаван и променян и в резултат на това тази ОС се използва на най-разнообразни компютърни устройства, от суперкомпютри до умни часовници. Макар използването ѝ на персонални компютри да е ниско (1,82% през 2011),[11] тя е много популярна при сървърите [12] и вградените системи[13] като например мобилните телефони. Linux заменя Unix на много платформи и през 2010 се използва на десет от най-мощните суперкомпютри в света.[14] Linux ядрото се използва в популярни дистрибуции като Red Hat, Debian, Ubuntu, Linux Mint и Android на Google.

Хром и Хромиум[редактиране | редактиране на кода]

Хром на Гугъл е ОС, изградена от Google на базата на Линукс ядро. Тъй като е насочена към потребители, прекарващи повечето време в интернет, тя е тънък клиент с ограничени възможности за работа на локални приложения, макар че има вградени файл мениджър и медия плейър. Тя силно разчита на интернет или уеб приложения, за да изпълнява задачи в браузъра като например текстообработка. Нейният вариант с отворен код Хромиум ОС (Chromium OS) се използва основно от разработчици, докато Chrome OS е операционната система, инсталирана на пусканите на пазара Chromebooks.[15][16]

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

Уиндоус е семейство ОС със затворен код, разработвани от Майкрософт и насочени основно към компютри с Intel архитектура, които по някои оценки са около 88.9 процента от свързаните с интернет компютри.[11][17][18][19] Най-новата версия е Windows 11. От предходните версии Windows 7 изпревари Windows XP като най-използвана ОС.[20][21][22]

Началото на Windows е поставено през 1985 като форма на мидълуер работещ върху MS-DOS, която на времето е стандартната ОС, инсталирана на повечето персонални компютри с Intel архитектура на пазара. Първият PC, използвал Windows, е IBM Personal System/2, пуснат на пазара през 1987 г. През 1995 дебютира Windows 95, която вече не е така свързана с MS-DOS. ОС от серията Win9x са обратно съвместими с MS-DOS[23][24] и с 16-битовите драйвери за Windows 3.x[25]. Windows ME, излязла през 2000, е последната от семейството Win9x. По-късните версии вече се базират на ядрото Windows NT. Текущите клиентски версии на Windows работят на микропроцесори IA-32, x86-64 и 32-битови ARM.[26]

Сървърните версии на Windows се използват широко. В последните години Майкрософт насочи много сили и средства, за да насърчи използването на Windows като сървърна ОС. Въпреки това, делът му на използване при сървърите не е така голям като при персоналните компютри, защото среща конкуренцията на Linux и BSD.[27][28].

Други ОС[редактиране | редактиране на кода]

Съществуват много ОС, които навремето си имат голямо значение, но днес вече не, например AmigaOS; OS/2 от IBM и Майкрософт; Mac OS, предшестваща OS X; BeOS; XTS-300; RISC OS; MorphOS; Haiku; BareMetal и FreeMint. Някои все още се използват в пазарни ниши и продължават да се разработват като бутикови платформи за специализирани приложения. OpenVMS, някога на DEC, все още се разработва от Hewlett-Packard. Други ОС се използват изключително в научните организации, за обучение или за изучаване на концепциите при разработката на ОС. Типичен пример за първия тип е Minix, докато Singularity се използва за изследователски цели.

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

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

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

Ядрото прави връзката между приложния софтуер и хардуера на компютъра

Ядрото е основният компонент на ОС. То се грижи за всички изпълнявани процеси, както и за комуникацията с наличните устройства. То осигурява работата на обвивката и на приложните програми. С помощта на фърмуера и драйверите на хардуера, ядрото осъществява контрол върху всички устройства. То дава на приложните програми достъп до паметта RAM, разпределя хардуерните ресурси, управлява състоянията на процесора с оглед на оптималната му работа и организира данните за дълготрайно съхранение в паметта като поддържа файлови системи на носители като дискове, магнитни ленти, флаш памет и др.

Управление на процеси[редактиране | редактиране на кода]

ОС осъществява връзка между приложната програма и хардуера, като това става по определени правила и процедури (управление на процеси), предварително програмирани в ОС. ОС съдържа и набор от услуги (services), които опростяват разработката и изпълнението на програмите. Докато програмата е просто пасивен набор от инструкции, съхраняван в някаква памет, то след като тя бъде заредена в оперативната памет и изпълнението ѝ започне, вече става процес, т.е процесът е програма в етап на изпълнение. Той е съвкупност от програмния код, обработваните данни и от служебните структури от данни свързани с него, които се генерират и управляват от ОС. Изпълнението на програмата включва присвояването на памет и други ресурси, установява приоритетите на процесите в многозадачните ОС и взаимодействието с потребителя или хардуера.

ОС изпълнява следните дейности, свързани с управление на процесите[29]:

  • Създаване (на английски: create) и унищожаване (на английски: delete) на процеси
  • Спиране (на английски: suspend) и възобновяване (на английски: resume) на процеси
  • Предоставяне на механизми за синхронизация и комуникация между процесите.

Прекъсвания[редактиране | редактиране на кода]

Прекъсванията са много важни за ОС, тъй като представляват ефикасен инструмент на взаимодействие между нея и обкръжението ѝ. В по-стари ОС се използват и други методи (изчакване на реакция, polling), но модерните ОС и процесори поддържат обработка на прекъсванията (Interrupt handler). Прекъсванията осигуряват автоматично съхранение на локалните регистри и стартират специфичен код в отговор на конкретни събития. Дори простите компютри поддържат хардуерни прекъсвания и програмистът може да посочи програмен код, който да бъде изпълняван в такива случаи.

Режими[редактиране | редактиране на кода]

Многопотребителските системи поставят задачата за даване на приоритети (разделение по пълномощия), така че изпълняваните програми да не се намесват една в друга (нарочно или случайно), а също така да се предотврати изменение на самата ОС. Първоначално разработчиците на процесори решават проблема, като предлагат архитектури с два режима на работа на процесора – реален режим (в който изпълняваната програма има достъп до цялото адресно пространство) и защитен режим (в който достъпът до адресното пространство е ограничен в диапазона, заделен при пускането на програмата за изпълнение). Впоследствие се въвежда и режим на супервайзор (на английски: supervisor mode), който се използва от ядрото на ОС за задачи от ниско ниво, които се нуждаят от неограничен достъп до хардуера, като например контрол на записа и изчистването на паметта и комуникация с устройства като графичната карта. За всичко останало се използва защитният режим. Приложният софтуер се стартира в защитен режим и неговата комуникация с хардуера става посредством ядрото, което контролира всичко в режим на супервайзор.

Когато компютърът се включи, той автоматично стартира режима на супервайзор. Първите няколко програми, независимо дали BIOS, EFI, bootloader или самата ОС, имат неограничен достъп до хардуера. Когато обаче ОС предаде контрола на друга програма, тя може да стартира защитен режим на работа на процесора.

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

Много ОС могат да „заблудят“ програмите да използват разпръснати области по твърдия диск или RAM все едно са една непрекъсната област в паметта, наречена виртуална памет.

Сред другите си функции едно ядро на многозадачна ОС трябва да осъществява постоянно управление на паметта.

Това означава управление на компютърната памет на системно ниво. Необходимо условие за добро управление е разпределението на паметта да става динамично при поискване от програмите, както и ненужната вече памет да бъде освобождавана. Tова е от критично значение за сложните компютърни системи.[30]

Има няколко начина за увеличаване на ефективността на управлението. Системите с виртуална памет разделят адресите в паметта, използвани от конкретен процес, от физическите адреси чрез страниране (paging) и размяна (swapping) с вторични носители (secondary storage) и така да „увеличават“ наличната RAM. Виртуалната памет дава на програмиста и ползвателя усещане за наличие на много повече RAM в компютъра, отколкото има реално.[31]

Защитата на паметта прави възможно ограничаването на достъпа на даден процес до компютърната памет. Някои методи за защита са memory segmentation и paging. При тях се използват регистри в защитен режим, които указват на процесора до кои адреси има достъп изпълняваният процес. Опитът да се използват други адреси води до преминаване на процесора в режим на супервайзор и контролът се поема от ядрото. Това се нарича segmentation violation и най-общо ядрото терминира процеса и докладва за грешка (в UNIX това е page fault).

В съвременните ОС паметта, която се използва по-рядко, може да се съхранява временно на диск, за да се освободи място за другите програми. Този процес се нарича swapping.

Многозадачност[редактиране | редактиране на кода]

Ядрото на ОС съдържа в себе си програма (диспечер) за планиране на процеси (task scheduling subsystem), която управлява времето за изпълнение на всеки процес и реда на предаване на контрола по изпълнението от една програма на друга. От многото процеси, конкуриращи се за достъп до процесора, се избира един и ядрото му разрешава достъп до централния процесор и паметта. След приключване контролът се връща на ядрото, така че друга програма да може да ползва същите ресурси. Преходът от изпълнение на една програма към друга се нарича превключване на контекста (context switch).

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

За много еднопотребителски ОС кооперативната многозадачност е напълно задоволителна, тъй като домашните компютри обикновено използват малко на брой и добре тествани програми. Windows NT е първата версия на Microsoft Windows с разпределена многозадачност, но тъй като тази версия е насочена към професионалисти, първата реализация за домашни потребители реално е Windows XP.

Достъп до файлови системи[редактиране | редактиране на кода]

Файловите системи позволяват да се организират файловете, често с използването на указатели или „папки“

Основна черта на всички ОС е управлението на достъпа до данните, записани на диска, чрез система за управление на файловете. Различните ОС имат различен начин на работа с файловите системи, но най-общо ОС извършва следните дейности, свързани с управлението на файлове[29]:

  • Създаване и изтриване на файлове.
  • Създаване и изтриване на йерархична структура (директории, указатели, папки).
  • Поддръжка на примитивните операции с файлове и директории – писане, четене, преименуване, местене и т.н.
  • Устойчиво съхраняване на файловете и директориите върху външните запомнящи устройства.
  • Архивиране на файлове и директории.

Файловата система създава удобства на потребителя, като му дава възможност да работи с данните и да извършва операции над тях. Така той е освободен от проблемите, свързани с физическото представяне на данните и с физическите особености на запомнящите устройства, защото работи с логическа единица за данни – файл, а ОС се грижи за достъпа до файловете и ефективното използване на заемания ресурс.

Ранните ОС поддържат само един тип дисково устройство и един вид файлова система. Връзката между файловата система и физическите носители на информация не е задължително директна. Съществуват и виртуални файлови системи (virtual file system) (например при UNIX и Linux), както и мрежови файлови системи, които дават възможност за достъп до файлове на отдалечен компютър.

Поддръжката на файлови системи силно варира за различните ОС, макар че има няколко чести файлови системи, за които почти всички ОС имат драйвери. При Windows всяка файлова система обикновено е ограничена до определен носител, например CD трябва да използват ISO 9660 или UDF, а от Windows Vista насам единствена файлова система е NTFS. За разлика от нея, Linux работи с много типове файлови системи. Linux и UNIX са ОС, които работят с файлови системи независимо от средата на запис, било то твърд диск, CD, DVD, USB флаш.

Драйвери за хардуер[редактиране | редактиране на кода]

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

Например в случая на управление на входно-изходни устройства, ОС се грижи те да се заемат и освобождават за индивидуално или съвместно използване. Основните извършвани операции са четене, запис и управление. За изпълнението на тези три операции ядрото трябва да извърши иницииране на входно-изходните операции и обработка на прекъсванията по вход/изход, постъпили от канала (устройството) при завършване на операцията или при възникване на грешка.

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

Илюстрация на командна линия в Bourne Again Shell. Всяка команда се въвежда ръчно след подканящия знак и резултатът от изпълнението се изобразява отдолу. Текущият подканящ знак е в дъното.

За връзка между потребителя и ядрото служи т.нар. обвивка или команден интерпретатор (на английски: Shell, шел – обвивка), който представлява потребителски интерфейс за достъп до ОС. Той може да бъде реализиран като интерфейс с команден ред или графичен потребителски интерфейс. Чрез тях се осъществява разглеждане на файловата структура и се отправят заявки чрез входни устройства като клавиатура и мишка, а в резултат ОС отговаря с подканящ знак (command prompt), информационно съобщение (status message) или извежда друг резултат към изходните устройства (монитор, принтер).

Графичен потребителски интерфейс[редактиране | редактиране на кода]

KDE Plasma Desktop графичен интерфейс. Програмите са представени като изображения на екрана, а файловете, папките и приложенията са означени с икони и символи. За навигация се използва мишка.

Повечето от съвременните компютри използват графичен потребителски интерфейс (ГПИ). Първата ОС с графичен интерфейс е инсталирана на компютрите Lisa на „Епъл“, а първият компютър с мишка е Macintosh на „Епъл“. В оригиналната разработка на Mac OS, той не е обвивка, а част от ядрото на ОС. Не след дълго Майкрософт успява да внедри ГПИ в MS-DOS и така се появява Windows.

Макар чисто технически ГПИ да не е нужен за работата на ОС, въвеждането му в ядрото може да намали броя на превключванията на контекста. Други ОС са конструирани като модули, в които графичната част е отделена от ядрото и ОС. Такива са UNIX, VMS и много други ОС от 80-те години, както Linux и Mac OS X. По-съвременните реализации на Microsoft Windows като Windows Vista използват графична система, която е предимно в потребителското пространство (user-space) докато подпрограмите за изчертаване на графики на версиите между Windows NT 4.0 и Windows Server 2003 са предимно в пространството на ядрото. При Windows 9x има много малко разграничение между интерфейса и ядрото.

Някои ОС позволяват на потребителя да инсталира или създаде потребителски интерфейс по желание. На повечето Unix и Unix-базирани ОС (BSD, Linux, Solaris) стандартно се използва съчетанието на система за прозорци X Window System с графична среда (GNOME или KDE). Microsoft Windows също предлага алтернативи на инсталираната по подразбиране обвивка Windows shell, но самата обвивка не може да се отдели от Windows.

ГПИ еволюират с времето. Например при Windows потребителският интерфейс се сменя с всяка нова голяма версия, а този на Mac OS се промени коренно с въвеждането на Mac OS X през 1999.[32]

Работа в мрежа[редактиране | редактиране на кода]

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

Мрежовата архитектура клиент-сървър дава възможност на един компютър (клиент) да се свърже с друг (сървър). Сървърите предлагат разнообразни услуги чрез своите портове или други точки за достъп извън IP адреса на сървъра. Обикновено всеки порт се обслужва от програма, обработваща заявките към него, а изпълняван във фонов режим демон на свой ред препраща заявките към ядрото на ОС и може да използва локалните хардуерни ресурси.

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

От гледна точка на компютърната сигурност ОС трябва да е в състояние да прави разграничение между процесите. Някои системи различават „привилегировани“ от „непривилегировани“ процеси, но най-често се изисква идентификация (като например потребителско име), последвана от процес на автентикация. Един от начините за автентикация на потребител пред компютърна система – например операционна система – е да въведе идентификатор, например име на потребител и парола – които разрешават ползването на определен ресурс. Често процесът се нарича „влизане“ или „логин“ (на английски: login). Друг аспект на сигурността е авторизацията (authorization) – обсегът на достъпните ресурси за конкретния потребител.

В допълнение към разрешителния режим на достъп, една система с високо ниво на сигурност осъществява и контролни функции, като следи заявките за достъп до ресурси. Вътрешната сигурност (от вече изпълнявани програми) се осъществява, като потенциално вредните заявки се изпълняват чрез прекъсвания и препращане към ядрото. Ако на програмите се даде директен достъп до хардуера и ресурсите, те не могат да се считат за сигурни.

Външната сигурност касае заявките извън компютъра, като мрежова връзка или влизане от дистанция. Външните заявки често преминават през драйверите към ядрото, откъдето могат да бъдат насочени към приложенията или да бъдат изпълнени директно. Сигурността на ОС отдавна е сериозна грижа поради чувствителните данни, съхранявани на компютрите. В САЩ е създадена специална система за оценка на компютърната сигурност Trusted Computer System Evaluation Criteria (TCSEC), която е от основно значение за пазара на ОС.

Едно от използваните средства за сигурност са защитните стени, които откриват и предотвратяват неразрешен достъп. Повечето ОС включват защитна стена, активирана по подразбиране. В допълнение може да бъде конфигурирана софтуерна защитна стена, която да позволява или отхвърля мрежов трафик от дадена услуга или приложение, които се изпълняват от ОС. Така е възможно да бъде инсталиран и задействан несигурен софтуер като Telnet или FTP, но да се избегне заплахата от нарушение на сигурността, защото защитната стена би отказала всеки трафик по съответния порт.

Алтернативна стратегия при компютри, които не отговарят на изискванията за виртуализация на Попек и Голдбърг е ОС да не изпълняват потребителски програми в техния оригинален код, а да емулират процесор или виртуална машина с p-code като например Java.

Пазарен дял на основните ОС[редактиране | редактиране на кода]

Популярност на операционните системи според броя на инсталациите
Операционна система 2012 г.[33] (броя) 2013 г.[33](броя) 2019 г.[34] (в %)
Android 504 878 37.89%
Windows 346 328 36.49%
iOS/Mac OS 214 267 13.75%
BlackBerry 35 24 -
OS X - - 6.25%
неизвестно - - 3.39%
Linux - - 0.79%
Други 1,117 803 1.43%

Вижте също[редактиране | редактиране на кода]

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

  1. Stallings. Operating Systems, Internals and Design Principles. Pearson, Prentice Hall, 2005. с. 6.
  2. Dhotre, I.A. Operating Systems. Technical Publications, 2009. с. 1.
  3. Operating System Market Share // Net Applications.
  4. Lorch, Jacob R., and Alan Jay Smith. „Reducing processor power consumption by improving processor time management in a single-user operating system.“ Proceedings of the 2nd annual international conference on Mobile computing and networking. ACM, 1996.
  5. Mishra, Balmukund, Ninni Singh, and Ravideep Singh. „Master-slave group based model for co-ordinator selection, an improvement of bully algorithm.“ Parallel, Distributed and Grid Computing (PDGC), 2014 International Conference on. IEEE, 2014.
  6. Silberschatz Galvin Gagne. Operating Systems Concepts. New York, Wiley, 2012. ISBN 978-1118063330.
  7. а б в Classic Operating Systems. Springer, 2001. ISBN 0-387-95113-X. с. 4 – 7.
  8. Lavington, Simon. Early British Computers. Manchester University Press, 1980. ISBN 0-7190-0803-4. с. 50 – 52.
  9. Ritchie, Dennis. Unix Manual, first edition // Lucent Technologies. Архивиран от оригинала на 2008-05-18. Посетен на 22 ноември 2012.
  10. Apple introduces mac OS X Maverick's at WWDC // YouTube. TechandPlayTV, 10 юни 2013. Посетен на 17 ноември 2013.
  11. а б Top 5 Operating Systems from January to April 2011 // StatCounter, October 2009. Посетен на 5 ноември 2009.
  12. IDC report into Server market share // Idc.com. Архивиран от оригинала на 2012-09-27. Посетен на 7 август 2012.
  13. Linux still top embedded OS // Архивиран от оригинала на 29 май 2012.
  14. Jermoluk, Tom. TOP500 List – November 2010 (1 – 100) | TOP500 Supercomputing Sites // Top500.org, 3 август 2012. Архивиран от оригинала на 2011-04-08. Посетен на 7 август 2012.
  15. Chromium OS // Chromium.org.
  16. Chromium OS FAQ // The Chromium Projects. Посетен на 28 февруари 2014.
  17. Global Web Stats // Net Market Share, Net Applications, May 2011. Посетен на 7 май 2011.
  18. Global Web Stats // W3Counter, Awio Web Services, September 2009. Посетен на 24 октомври 2009.
  19. Operating System Market Share // Net Applications, October 2009. Посетен на 5 ноември 2009.
  20. w3schools.com OS Platform Statistics // Посетен на 30 октомври 2011.
  21. Stats Count Global Stats Top Five Operating Systems // Посетен на 30 октомври 2011.
  22. Global statistics at w3counter.com // Посетен на 23 януари 2012.
  23. Troubleshooting MS-DOS Compatibility Mode on Hard Disks // Support.microsoft.com. Архивиран от оригинала на 2011-12-29. Посетен на 7 август 2012.
  24. Using NDIS 2 PCMCIA Network Card Drivers in Windows 95 // Support.microsoft.com. Архивиран от оригинала на 2012-01-11. Посетен на 7 август 2012.
  25. INFO: Windows 95 Multimedia Wave Device Drivers Must be 16 bit // Support.microsoft.com. Архивиран от оригинала на 2012-01-11. Посетен на 7 август 2012.
  26. Arthur, Charles. Windows 8 will run on ARM chips – but third-party apps will need rewrite // The Guardian.
  27. Operating System Share by Groups for Sites in All Locations January 2009 // Архивиран от оригинала на 2009-07-06. Посетен на 2015-08-07.
  28. Behind the IDC data: Windows still No. 1 in server operating systems // ZDNet, 26 февруари 2010. Архивиран от оригинала на 2010-03-01. Посетен на 2015-08-07.
  29. а б Чорбаджиев, Любомир. Структура на операционните системи // Технологическо училище „Електронни системи“ Технически университет, София. Посетен на 17 септември 2015.
  30. Gibson, Steve. Tech Talk: Placing the IBM/Microsoft XMS Spec Into Perspective. 15 август 1988.
  31. Stallings, William. Computer Organization & Architecture. New Delhi, Prentice-Hall of India Private Limited, 2008. ISBN 978-81-203-2962-1. с. 267.
  32. Poisson, Ken. „Chronology of Personal Computer Software“ Архив на оригинала от 2008-05-14 в Wayback Machine.. Посетен на 7 май 2008. Last checked on 2009-03-30.
  33. а б Lance Whitney. Android device shipments to top 1 billion this year -- Gartner // 7 януари 2014.
  34. Computer Hope. What is the most popular operating system? // Посетен на 2020-02-02.
  Тази страница частично или изцяло представлява превод на страницата Operating system в Уикипедия на английски. Оригиналният текст, както и този превод, са защитени от Лиценза „Криейтив Комънс – Признание – Споделяне на споделеното“, а за съдържание, създадено преди юни 2009 година – от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница, за да видите списъка на съавторите. ​

ВАЖНО: Този шаблон се отнася единствено до авторските права върху съдържанието на статията. Добавянето му не отменя изискването да се посочват конкретни източници на твърденията, които да бъдат благонадеждни.​