Այս wikiHow- ը սովորեցնում է ձեզ, թե ինչպես պլանավորել և մշակել օպերացիոն համակարգ, եթե չգիտեք, թե ինչպես ծածկագրել C- ում կամ C ++ - ում: Օպերացիոն համակարգերը կառավարում են համակարգչային սարքավորումները և ապահովում են այն ռեսուրսները, որոնք անհրաժեշտ են ծրագրերին աշխատելու համար: Օպերացիոն համակարգը զրոյից գրելու համար անհրաժեշտ է համակարգչային գիտության, C կամ C ++ - ի նման ծրագրավորման լեզվի, հավաքման և ծածկագրերի կառավարման պրակտիկայի լավ տիրապետում:
Քայլեր
Մաս 1 -ից 2 -ից. Սովորել հիմունքները
Քայլ 1. Վերցրեք համակարգչային գիտության հիմնական դասընթացներ:
Ի տարբերություն ցանցի համար մշակման, օպերացիոն համակարգի ստեղծումը պահանջում է ալգորիթմների, տվյալների կառուցվածքների, համակարգչային սարքավորումների և ռեսուրսների կառավարման ուժեղ իմացություն: Մարդիկ ստանում են այս առարկայի աստիճաններ, այնպես որ մի ակնկալեք, որ առցանց ձեռնարկը կարդալուց հետո կգրի մի ամբողջ օպերացիոն համակարգ: Հարվարդի համակարգչային գիտության ներածություն դասընթացը հասանելի է առցանց ՝ EDX- ի միջոցով ՝ առանց որևէ արժեքի:
Քայլ 2. Սովորեք Python- ի նման բարձր մակարդակի ծրագրավորման լեզու:
Համակարգչային գիտության հիմնարար ընկալումից հետո հաջորդ քայլը C և/կամ C ++ տիրապետելն է: Ինչպես համակարգչային գիտության մասին սովորելը, այնպես էլ լեզուն տիրապետելը պարտադիր չէ. Դուք չեք կարողանա կոդավորել օպերացիոն համակարգը, եթե չեք կարող գրել ամուր ծրագրեր:
Եթե դուք նոր եք C- ում, ստուգեք Dartmouth's C Programming: Getting Started դասընթացը, որն անվճար է EDX- ի միջոցով: Այդ դասընթացն ավարտելուց հետո կարող եք անցնել շարքի հաջորդ դասընթացը `C mingրագրավորում. Լեզվի հիմունքներ: Այնուհետև անցեք հաջորդ դասընթացների, ինչպիսիք են ՝ Մոդուլային ծրագրավորում և հիշողության կառավարում, ցուցիչներ և հիշողության կառավարում:
Քայլ 3. Սովորեք հավաքների լեզու:
Հավաքման լեզուները ցածր մակարդակի լեզուներ են, որոնք նախատեսված են տարբեր պրոցեսորների հետ հաղորդակցվելու համար: Քանի որ հավաքումը տարբեր է պրոցեսորների տարբեր տեսակների համար (օրինակ ՝ x86 հավաքման լեզու Intel- ի, AMD- ի, VIA- ի և այլ պրոցեսորների համար), ձեզ հարկավոր է սովորել այն տարբերակի համար, որի համար կոդավորում եք:
- Այս բաց կոդով գիրքը, ամբողջությամբ կարդալու դեպքում, կարող է ձեզ տալ բավականաչափ հիմնավոր հասկացություն ՝ օպերացիոն համակարգ կառուցելու համար:
- Հավաքների լեզուն արվեստը բարձր խորհուրդ տվող գիրք է հավաքման մասին, որը հասանելի է ինչպես անցանց, այնպես էլ անցանց:
- Դուք նաև պետք է շատ հետազոտություններ կատարեք այն պրոցեսորների (տեսակների) վերաբերյալ, որոնց վրա պետք է աշխատի ձեր օպերացիոն համակարգը: Պրոցեսորային ճարտարապետության ձեռնարկները հեշտությամբ կարելի է գտնել Google- ի որոնման միջոցով («Intel ձեռնարկներ», «ARM ձեռնարկներ» և այլն):
Քայլ 4. Լրացրեք օպերացիոն համակարգի ձեռնարկը:
OS- ի ձեռնարկները ձեզ կտանեն հիմնական օպերացիոն համակարգի ստեղծման գործընթացում: Սա ձեզ սովորեցնում է գործընթացին և օգնում ձեզ պարզել, թե արդյոք ինչ -որ կտոր կարոտում եք: Մեկ կամ երկու ձեռնարկը ավարտելուց հետո դուք արդեն լավ ճանապարհ կունենաք ստեղծելու ձեր սեփական օպերացիոն համակարգը:
- Bare Bones- ը ձեռնարկ է, որն օգնում է ձեզ գրել ձեր առաջին պարզ 32-բիթանոց միջուկը: Ուսումնական ձեռնարկն ավարտելուց հետո հաջորդ քայլը Meaty Skeleton- ի օգտագործումն է `ձեր սեփական օպերացիոն համակարգը կառուցելու համար:
- Linux- ը Scratch- ից առցանց գիրք է, որը ձեզ օգնում է ստեղծել ձեր սեփական Linux օպերացիոն համակարգը:
- 0 -ից 1 -ի օպերացիոն համակարգերը անվճար գիրք են ՝ սկզբից մինչև վերջ տարբեր օպերացիոն համակարգեր ստեղծելու մասին:
Քայլ 5. Պարզեք ձեր օպերացիոն համակարգի նպատակները:
Ի՞նչ եք ուզում անել ձեր օպերացիոն համակարգը: Ինչպիսի՞ն պետք է լինի այն: Դուք իրոք կարիք ունե՞ք գրել մի ամբողջ օպերացիոն համակարգ, թե՞ պարզապես ցանկանում եք որոշակի տեսք ստեղծել ձեր աշխատասեղանի համար: Սրանք բոլորը բաներ են, որոնք պետք է հաշվի առնել նախքան ծածկագրելը սկսելը:
- Մտածեք այլ ծրագրավորողների թիմի հետ զարգանալու մասին: Onրագրի վրա աշխատող մշակողների թիմ ունենալը զգալիորեն կնվազեցնի զարգացման ժամանակը:
- Ավելացրեք ձեր նախագծի նպատակները, ծրագրերը և հարցերը ձեր հանրային պահոցում, որպեսզի ուրիշների համար հեշտ լինի օգնել ձեզ:
2 -րդ մաս 2 -ից. Կառուցեք ձեր օպերացիոն համակարգը
Քայլ 1. Ընտրեք զարգացման միջավայր:
Սա այն հարթակն է, որը դուք կօգտագործեք ձեր նոր օպերացիոն համակարգը կոդավորելու համար: Դա անձնական նախասիրությունների հարց է, բայց մարդկանց մեծամասնությունը կամ օգտագործում է Windows կամ UNIX համ: Եթե դուք օգտագործում եք Windows, լավ գաղափար է տեղադրել UNIX միջավայր, ինչպիսին է Cygwin- ը կամ MinGW- ը: Դուք ընդհանրապես կցանկանաք համոզվել, թե որ միջավայրն եք օգտագործում ներառում է հետևյալը.
- GCC (Gnu կազմող): Եթե դուք օգտագործում եք Windows, կարող եք տեղադրել այն Cygwin- ում կամ MinGW- ում:
- Binutils- ը օբյեկտների ֆայլերը շահարկելու համար օգտագործվող գործիքների հավաքածու է: Կրկին, եթե դուք օգտագործում եք Windows, կարող եք տեղադրել այն Cygwin- ում:
- Լավ տեքստային խմբագիր: Vim- ը և emacs- ը սովորաբար օգտագործվում են UNIX միջավայրում: Windows- ի օգտվողները կարող են օգտվել Գրառման գրքույկից կամ մի քանի ներդիրների թարմացման համար այցելել Notepad ++:
- Perl և/կամ Python. Մեկը կամ երկուսը խորհուրդ են տրվում լարային մանիպուլյացիայի համար:
Քայլ 2. Ստեղծեք ձեր տարբերակի կառավարման համակարգը:
Օպերացիոն համակարգ գրելը նշանակում է, որ դուք, ամենայն հավանականությամբ, կստեղծեք հարյուրավոր (կամ հազարավոր) կոդերի տողեր: Երբ դուք աշխատում եք վերանայումների վրա, դա կարող է շփոթեցնել: Դուրս գալու որոշ տարբերակներ են ՝ CVS, Mercurial և Subversion:
Քայլ 3. Որոշեք bootloader- ի մասին:
Եթե չեք ցանկանում ստեղծել ձեր սեփականը, կարող եք օգտագործել գոյություն ունեցողը, ինչպիսին է Grand Unified Bootloader- ը (GRUB): Եթե դուք իսկապես համարձակ եք զգում bootloader կոդավորելու համար, այցելեք Roll Your Own Bootloader- ը OSDev.org կայքում:
Քայլ 4. Ընտրեք միջուկի ձևավորում:
Միջուկը ձեր օպերացիոն համակարգի առանցքն է, որն ապահովում է ինտերֆեյս օգտագործողի և համակարգչային սարքավորումների միջև: Կան միաձույլ միջուկներ և միկրո միջուկներ: Մոնոլիտ միջուկներն իրականացնում են միջուկի բոլոր ծառայությունները, մինչդեռ միկրոմիջուկներն ունեն փոքր միջուկ ՝ զուգորդված ծառայություններ իրականացնող օգտվող դևերի հետ: Ընդհանուր առմամբ, մոնոլիտ միջուկներն ավելի արագ են, բայց միկրոմիջուկներն ունեն ավելի լավ անսարքության մեկուսացում և հուսալիություն:
Քայլ 5. Սկսեք փոքրից:
Սկսեք փոքր բաներից, ինչպիսիք են տեքստի ցուցադրումը և ընդհատումները, նախքան հիշողության կառավարման և բազմակի առաջադրանքների անցնելը: Կարող եք նաև փորձել կատարել պարզ 16-բիթանոց օպերացիոն համակարգ ՝ մեծ թռիչք կատարելու փոխարեն:
Երկու շաբաթվա ընթացքում դուք չեք ունենա ամբողջական համակարգ: Սկսեք բեռնվող ՕՀ -ով, այնուհետև անցեք թույն իրերին:
Քայլ 6. Փորձարկեք ձեր նոր օպերացիոն համակարգը վիրտուալ մեքենայի միջոցով:
Ամեն անգամ փոփոխություններ կատարելիս ձեր համակարգիչը վերագործարկելու կամ ձեր զարգացման համակարգչից ֆայլերը փորձարկման մեքենա տեղափոխելու փոխարեն օգտագործեք վիրտուալ մեքենայի ծրագիր: VMWare- ը սովորական տարբերակ է, որն աշխատում է և՛ Windows- ի, և՛ Linux- ի հետ, և դա ՝ Բոխսի հետ: Ստուգեք հնարավոր փակուղիները և այլ վրիպակներ և անհրաժեշտության դեպքում վերանորոգեք դրանք:
Քայլ 7. Ազատ արձակեք «ազատ արձակման թեկնածուին:
«Դուք կարող եք դա անել ՝ ձեր փորձարկված ծածկագիրը ձեր հանրային պահեստում վերբեռնելով: Սա թույլ կտա մարդկանց փորձարկել ձեր օպերացիոն համակարգը և հետ զեկուցել այն խնդիրների մասին, որոնց բախվում են:
Քայլ 8. Networkանց այլ օպերացիոն համակարգի մշակողների հետ:
Կա օպերացիոն համակարգի մշակողների մի ամբողջ համայնք, որը հավաքվում է տարբեր ֆորումներում, ներառյալ /r /osdev- ը Reddit- ում և Software Engineering Stack Exchange- ում: Հասկացաք հիմնական օպերացիոն համակարգի մշակման մասին, կարդացեք առկա գրառումները `տեսնելու, թե ինչպիսի բաներ են առաջանում զարգացման գործընթացում:
Տեսանյութ - Այս ծառայությունից օգտվելով ՝ որոշ տեղեկություններ կարող են կիսվել YouTube- ի հետ:
Խորհուրդներ
- Համոզվեք, որ անվտանգության գործառույթները կիրառում եք որպես ձեր առաջնահերթություն, եթե երբևէ ցանկանում եք, որ ձեր համակարգը կենսունակ լինի:
- Մշակման ավարտից հետո որոշեք ՝ ցանկանում եք ծածկագիրը թողարկել որպես բաց կոդի՞, թե՞ սեփականության:
- Որպեսզի օպերացիոն համակարգը կարողանա կառավարել բազմաթիվ պրոցեսորներ, ձեր Հիշողության կառավարիչը պետք է ունենա «կողպման» մեխանիզմներ ՝ միաժամանակ միևնույն ռեսուրսին մի քանի պրոցեսորների մուտքը կանխելու համար: Դրա համար օգտագործվող «կողպեքները» կպահանջեն ժամանակացույցի առկայություն `համոզվելու համար, որ միայն մեկ պրոցեսոր կարող է ցանկացած պահի մուտք գործել կրիտիկական ռեսուրս, իսկ մնացածը սպասված են: Այնուամենայնիվ, ժամանակացույցը կախված է Հիշողության կառավարչի առկայությունից: Սա փակուղային կախվածության դեպք է: Չկա նման խնդիրներ լուծելու ստանդարտ միջոց; որպես ծրագրավորող, ձեզնից ակնկալվում է բավական հմուտ լինել, որպեսզի պարզեք դրա հետ վարվելու իր սեփական ուղին:
- Օպերացիոն համակարգը նույնպես կարող է օգտվողի համար հարմար լինել: Համոզվեք, որ օգտագործողի համար հարմար հատկություններ եք ավելացնում ՝ դրանք դարձնելով ձեր դիզայնի անբաժանելի մասը:
- Մի միացեք OSDev.org ֆորումներին և սկսեք ակնհայտ հարցեր տալ: Դա պարզապես կհանգեցնի «Կարդացեք ձեռնարկը» պատասխանները. Դուք պետք է փորձեք կարդալ Վիքիպեդիան և տարբեր գործիքների ձեռնարկները, որոնք ցանկանում եք օգտագործել:
- Մի սկսիր օպերացիոն համակարգի նախագիծ, որը կսկսի ծրագրավորում սովորել: Եթե արդեն չգիտեք C, C ++, Pascal կամ որևէ այլ համապատասխան լեզու, ներառյալ ցուցիչի մանիպուլյացիա, ցածր մակարդակի բիթերի մանիպուլյացիա, բիթերի փոխում, ներկառուցված հավաքման լեզու և այլն, ապա պատրաստ չեք օպերացիոն համակարգի զարգացման համար:.
- Եթե դուք ինչ-որ վատ բան եք անում, օրինակ ՝ պատահական բայթ գրեք պատահական մուտքի/ելքի նավահանգիստներին, դուք կփլուզեք ձեր ՕՀ-ն և կարող եք (տեսականորեն) տապակել ձեր սարքավորումները: