Как да програмирате много собствените си операционни системи (ОС)

Разкриване на информация Вашата поддръжка помага за поддържането на сайта! Печелим такса за препращане за някои от услугите, които препоръчваме на тази страница.


Всъщност няма области за развитие по-предизвикателни от разработката на операционна система (OS). Това е „големият връх на програмирането.“

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

Ако обаче успеете да стигнете до финала и създадете функционална операционна система, ще се присъедините към елитна група от най-полетни програмисти.

Какво е операционна система?

Най-ранните компютри не разполагаха с операционни системи.

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

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

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

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

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

Кратка история на операционните системи

Първата операционна система е създадена от General Motors през 1956 г., за да управлява единен IBM мейнфрейм компютър. Други собственици на IBM мейнфрейм следват примера и създават свои собствени операционни системи.

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

През 60-те години IBM е първият производител на компютри, който пое задачата за разработване на операционна система и започва да разпространява операционни системи със своите компютри.

IBM обаче не беше единственият доставчик, създаващ операционни системи през това време. Control Data Corporation, Corporation Science Corporation, Burroughs Corporation, GE, Corporation, Digital Equipment Corporation и Xerox, всички пуснати операционни системи на мейнфрейм и през 60-те години.

В края на 60-те години е разработена първата версия на операционната система Unix. Написан на C и свободно достъпен през най-ранните си години, Unix лесно се пренасяше в нови системи и бързо постигаше широко приемане.

Много съвременни операционни системи, включително Apple OS X и всички Linux аромати, проследяват корените си обратно до Unix.

Microsoft Windows е разработена в отговор на искане от IBM за операционна система, която да управлява гамата си от персонални компютри.

Първата ОС, създадена от Microsoft, не се нарича Windows, тя се нарича MS-DOS и е построена през 1981 г. чрез закупуване на операционната система 86-DOS от Сиатъл Компютърни Продукти и модифицирането й, за да отговори на изискванията на IBM.

Името Windows е използвано за първи път през 1985 г., когато е създаден графичен потребителски интерфейс и сдвоен с MS-DOS.

Apple OS X, Microsoft Windows и различните форми на Linux (включително Android) сега командват на по-голямата част от пазара на съвременна операционна система.

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

Операционните системи са изградени от две основни части:

  • Ядрото;
  • Системни програми.

Най- ядро е сърцето на операционната система. Това е първата програма, заредена при стартиране на компютъра, тя управлява компютърните ресурси и обработва заявки от системни програми и приложения.

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

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

Какво трябва да знаете

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

  • Основни познания по компютърни науки;
  • Теория на компютърното програмиране и най-добрите практики;
  • Езици за програмиране на ниско ниво и високо ниво.

Научете компютърни науки

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

Ето някои ресурси, за да започнете:

Курс: Компютърни науки 101 е курсът, който трябва да вземете първо, ако сте съвсем нов в областта на компютърното програмиране и компютърните науки.

Ако имате малко знания и опит под колана, пропуснете този курс в полза на Udacity на edX опциите. Ако обаче сте съвсем нови в тази област, този курс използва подход без предишен опит във въвеждането на теми от компютърни науки и програмиране.

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

edX: Въведение в компютърните науки е най-пълният и задълбочен курс по информатика в този списък. Този безплатен самостоятелен курс е проектиран от Харвардския университет и отразява съдържанието, представено в курса, със същото име, предлагано в кампуса на Харвардския университет.

В този всеобхватен курс ще научите за алгоритмите, структурите на данните, управлението на ресурсите, софтуерното инженерство и ще разгледате езици за програмиране като C, PHP и JavaScript.

Научете компютърно програмиране

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

Udacity: Процес на разработка на софтуер е отличен курс, който всеки трябва да предприеме, ако никога досега не е предприел мащабен и предизвикателен програмен проект. В този курс ще научите инструменти и техники за работа и управление, като Git и как да настроите интегрирана среда за разработка.

Научете езици за програмиране

За да разработите операционна система, ще трябва да овладеете поне два езика за програмиране:

  • Език за монтаж на ниско ниво;
  • Език за програмиране на високо ниво.

Езиците на монтажа се използват за комуникация директно с процесор. Всеки тип процесор говори машинен език и има само един съответстващ език за сглобяване за всеки тип процесор. Най-често срещаната компютърна архитектура е x86, първоначално е разработена от Intel и сега се използва от широк кръг производители на компютърни чипове, включително AMD, VIA и много други. В това ръководство ще ви насочим в посоката на изучаване на x86 език за сглобяване.

Езиците за програмиране на високо ниво работят с множество компютърни архитектури. C е езикът за програмиране, който най-често се използва и се препоръчва за писане на операционни системи. Поради тази причина ние ще препоръчаме да научите и да използвате C за разработка на ОС. Въпреки това могат да се използват и други езици като C ++ и Python.

x86 Език на сглобяване

Най- x86 Ръководство за сглобяване е чудесно място да започнете да изучавате асемблерен език. Този кратък документ предоставя кратък преглед на езика за сглобяване на x86 и ще постави основата за по-модерните ресурси, към които ще преминете към следващия.

Програмиране от Ground Up от Джонатан Бартлет е една от определящите книги на пейзажния език на монтажа. Тази книга използва асемблерен език като основа за изучаване на компютърни науки и програмиране. Този ресурс е достъпен и от Интернет архива.

Изкуството на езика на събранието от Ранди Хайд е друг емблематичен текст в света на асемблерското езиково обучение. Първоначално написан специално за курсовете по програмиране на Hyde в Cal Poly и UC Riverside, текстът е пуснат като HTML електронна книга в средата на 90-те години на миналия век и е признат за определяща работа в областта. Текстът се хоства и като поредица от PDF файлове от Yale FLINT Group.

Ако искате да използвате традиционен учебник, за да научите за x86 монтажния език, два от най-често използваните и силно препоръчвани текстове са:

  • Език на монтажа стъпка по стъпка: Програмиране с Linux от Джеф Дънтемън;
  • Модерно езиково програмиране на X86 от Daniel Kusswurm.

° С

Има много езици за програмиране на високо ниво, които бихте могли да научите и много различни ресурси, които бихте могли да използвате, за да ги научите. Нашата препоръка и препоръката, която най-често се повтаря от общността за разработка на ОС, е да научите C и ние намерихме няколко отлични ресурса, които ще ви превърнат в компетентен програмист на C.

Получете бърз преглед на езика за програмиране на C, като го попълните C урок. Този ресурс няма да ви превърне в експерт, но ще ви даде добро основно разбиране на езика и ще ви подготви да се справите с по-трудни теми и ресурси.

Научете C по трудния начин е безплатна HTML книга, която включва много упражнения за практика. Този текст ще ви преведе през целия език на програмиране на C и ако въведете работата, отделете време и завършете всички упражнения, ще сте на път да станете компетентен програмист на C до момента, в който попълнете този урок.

Ако традиционният учебник е нещо, през което е по-вероятно да проработите, тези два текста са едни от най-популярните за овладяване на езика за програмиране на C.

  • Езикът за програмиране на C от Kernighan и Ritchie;
  • C Програмиране Абсолютно ръководство за начинаещи от Пери и Милър.

Уроци за разработка на ОС

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

Linux от нулата ще ви преведе през процеса на изграждане на цялостна операционна система Linux. Напълно този урок няма да създаде пълноценна операционна система, но ще ви даде солидна кодова база, върху която да изградите цялостна операционна система. Справете се с модерни уроци като Beyond Linux от Scratch, Automated Linux от Scratch, Cross Linux от Scratch или Hardened Linux от Scratch, за да изградите вашата основна операционна система в полезен софтуер.

Малката книжка за развитието на ОС от Ерик Хелин и Адам Ренберг е разработен като част от усъвършенстван курс по компютърни науки, който авторите са завършили, докато са студенти като Кралския технологичен институт в Стокхолм. Този курс преминава през цялостния процес на разработване на операционна система x86, като започнете с настройка на програма за програмиране, кулминация в програмирането за многозадачност и засяга теми като управление на системната памет и разработване на файлови системи по пътя.

Серия за разработка на операционна система от Broken Thorn Entertainment е поредица от 25 урока, които ви превеждат през процеса на създаване на ОС от самото начало. Начинаещи, внимавайте: тази серия предполага, че вече знаете как да заобиколите IDE и сте компетентен програмист на език C и монтаж.

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

  • Съвременни операционни системи от Tanenbaum и Bos;
  • Дизайнът на операционната система UNIX от Морис Бах;
  • Концепции за операционна система от Silberschatz, Galvin и Gagne.

Общности за развитие на ОС

Докато тръгвате да станете разработчик на ОС, има няколко места, където можете да намерите други разработчици на ОС, от които да се научите и да съдействате на:

  • OSDev.org е уики с много информация за развитието на ОС, както и форум, където можете да се срещнете и да получите отзиви от други съмишленици програмисти.
  • Каналът за развитие на OS в reddit е страхотна общност, в която можете да научите за развитието на ОС и да се насладите на момент на левитност, когато задачата за разработване на ОС стане малко трудна.
  • Компютърните науки, програмистите и StackOverflow от StackExchange са места, на които можете да зададете технически въпроси на други програмисти, когато се сблъскате с проблем, който изглежда не можете да разберете сами..

резюме

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

Следващи стъпки – Търсите уеб-домакин? Вижте нашето ръководство за уеб хостинг & нашите препоръчани домакини.

Вижте и другите ни ръководства за езиците на програмиране.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map