د لینوس تورالډز تقلید کول: له چارت څخه خپل عملیاتي سیسټم رامینځته کړئ (VII)

په اړه بل پوسټ ته ښه راغلاست څنګه زموږ خپل عملیاتي سیسټم رامینځته کړو (په لړۍ کې مخکیني مقالې: 1, 2, 3, 4, 5 y 6). دا د وروستي پوسټ راهیسې ډیر وخت پاتې دی ، په عمده ډول د یوګوټي له امله چې ما په هغه څه کې وموند چې نن ورځ موږ لرو. مونږ به وګورو په x86 معمار کې د ساعت څرنګوالي څرنګوالی.

مخکې موږ په عمومي ډول IRQs فعال کړي وو ، مګر یوه کوچنۍ ستونزه وه ځکه چې موږ دوی په سمه توګه فعال نه کړل او موږ اضافي معلومات انتقال کړل. موږ په نهایت کې دا اصلاح کوو کارلوسورټا او زه او زه کولی شم خپل نظر ته دوام ورکړم چې څنګه دوام ورکړم.

ښه ، ساعت د IRQ دی ، په ځانګړې توګه لومړی. د دې تنظیم کولو لپاره به موږ هغه فنکشن وکاروو چې موږ دمخه د IRQs ، ND_IRQ_InstallHandler نصبولو لپاره تعریف کړی و.

int ND_TIMER_TICKS = 0؛ باطل ND :: ټیمر :: مرحله (int hz) {int تقسیم کونکی = 1193180 / hz؛ ND :: بندرګی :: آؤټ پټ بی (0x43,0،36x0)؛ ND :: بندرګی :: آؤټ پټ بی (40x0 ، تقسیم او 0xFF)؛ ND :: بندرګی :: آؤټ پټ بی (40x8 ، تقسیم کونکی >> 0)؛ oid باطل ND :: ټیمر :: ودریږئ (دمخه ټیکس) {لاسلیک شوي اوږد ایټیکس؛ اټکس = ND_TIMER_TICKS + ټیکس؛ پداسې حال کې چې (ND_TIMER_TICKS <eticks) oid باطل ND :: ټیمر :: تنظیم () {ND :: سکرین :: سیټ کولور (ND_SIDE_FOREGROUND ، ND_COLOR_BLACK)؛ ND :: سکرین :: PutString ("\ n سیټ اپ ټایمر ...")؛ ND_IRQ_InstallHandler (18 ، & ND_Timer_Handler)؛ ND :: سکرین :: سیټ کلور (ND_SIDE_FOREGROUND، ND_COLOR_GREEN)؛ ND :: سکرین :: PutString ("ترسره")؛ tern خارجي "C" باطل ND_Timer_Handler (سټراټیټ ریګز * r) {ND_TIMER_TICKS ++؛ که (ND_TIMER_TICKS٪ 0 == XNUMX) {// ND :: سکرین :: سیټ کولور (ND_SIDE_FOREGROUND، ND_COLOR_BROWN)؛ // ND :: سکرین :: PutString ("second n نور دوهم" ")؛ موږ باید یو ریښتینی سکرین وکړو}

کوډ په لاندې ډول پرمخ ځي: د پیل کولو سیسټم زنګونه ND :: ټیمر :: تنظیم، کوم چې زنګ ووهي ND_IRQ_InstallHandler په لومړي موقعیت کې دننه کولو لپاره ، IRQ0 ، د کال بیک فعالیت ، کله چې پیښه پیښیږي ، دا دی ND_Timer_Handler دا د ټیکونه. لکه څنګه چې موږ د 18 Hz ته د ساعت سرعت ټاکلی دی ، لکه څنګه چې موږ به وروسته وګورو ، که موږ دا د 18 لخوا ویشلو او موږ ته یې بشپړ اعداد راکړ ، نو دوهم به تیریږي.

دنده ND :: ټیمر :: مرحله دا موږ سره مرسته کوي چې د سرعت تنظیم کړئ وخت، دا غیر معمولي شمیره 1.19 MHz ده چې یو عام ارزښت دی. ښه ، دا فنکشن باید وبلل شي که چیرې موږ غواړو د سرعت بدل کړو وخت، په ډیفالټ کې دا 18,22 هرز ته ځي ، یو ځانګړی ارزښت چې یو څوک باید دننه پریکړه کړې وي IBM او تر نن ورځې پورې پاتې دی.

دنده ND :: ټیمر :: انتظار وکړئ دا خورا ساده دی ، یوازې د یوې لوپ سره انتظار وکړئ په داسې حال کې تر ټیکونه دوام ورکولو ته اړتیا ده.

په عکس کې موږ لیدلی شو چې که چیرې موږ د ND_Timer_Handler دننه کوډ غیرحلبه کړو نو موږ دا ترلاسه کوو:

په NextDivel کې ثانیې

په راتلونکي فصل کې به موږ وګورو چې د کیبورډ ان پټ څنګه لوستل کیدی شي او یو څه جوړ کړئ مرمۍ زموږ د سیسټم سره متقابل عمل کول. د تل په څیر ، کوډ په کې شتون لري GitHub د جواز لاندې GNU GPL v2.


د مقالې مینځپانګه زموږ د اصولو سره سمون لري ایډیټیک اخلاق. د غلطۍ راپور ورکولو لپاره کلیک وکړئ دلته.

14 نظرونه ، خپل پریږدئ

خپله نظر پرېږدئ

ستاسو د بریښنا لیک پته به خپره نه شي.

*

*

  1. د معلوماتو لپاره مسؤل: میګیوانجل ګاتین
  2. د معلوماتو هدف: د سپیم کنټرول ، د نظر مدیریت.
  3. قانونیت: ستاسو رضایت
  4. د معلوماتو راټولول: معلومات به د قانوني مکلفیت پرته دریمې ډلې ته نه لیږدول کیږي.
  5. د معلوماتو ذخیره: ډیټابیس د Occentus شبکې (EU) لخوا کوربه شوی
  6. حقونه: په هر وخت کې تاسو کولی شئ خپل معلومات محدود ، له سره تنظیم او حذف کړئ.

  1.   د نوح dijo

    د لارښوونو خورا په زړه پورې لړۍ ، په شخصي ډول ما د سکریچ څخه د لینکس توزیع رامینځته کولو په اړه ډیر څه ندي لیدلي ، او حتی لږ یې په هسپانوي کې او دومره بشپړ دي. زه فکر کوم چې تاسو کولی شئ له دې څخه ډیر څه زده کړئ او هرڅومره ژر چې زه وخت ولرم زه هیله لرم چې د دې درسونو وړ کولو وړ اوسئ.
    ټول هغه څه چې زه یې غوښتنه کوم دا دی چې تاسو حوصله مه کوئ او ټیوټوریل بشپړ کړئ ، ځکه چې ما ډیری ښه درسونه موندلي چې هیڅکله ندي بشپړ شوي.
    سلامونه او مننه :).

    1.    روډر dijo

      دا د لینکس توزیع ندی ، دا دانی is دی.

    2.    ډیسیکوډر dijo

      ته په غلطه یې. د لینکس ډیسټرو رامینځته کول د هیڅ برنامو معنی نلري ، د بیلګې په توګه ، د سکریچ څخه په لینوکس کې چې تاسو برنامه نه کوئ ، هغه څه چې تاسو یې کوئ نصب (د تالیف پراساس) بنسټیز کڅوړې دي چې یو ډیسټرو رامینځته کوي. دا خورا مختلف دی. دا ستاسو عملیاتي سیسټم رامینځته کوي. دا د لینکس سره هیڅ تړاو نلري. دا هغه څه دي چې توروالډس د هغه په ​​ورځ د مینیکس لخوا الهام اخیستی و ، او د تورالډز او انډریو ایس ترمینځ هغه توده او مشهور بحث سره. tanenbaum د monolithic دانو په مقابل کې مایکرو کارنال.

      مننه!

  2.   ناروغه dijo

    مننه چی. تر دې دمه زه ما ستاسو پوسټ ته ډیر پام نه دی کړی مګر زه په یوه پروژه کې یم نو زه به دوی ته یو نظر وګورم.
    مننه.

  3.   روډر dijo

    د یادونې وړ ده چې نورې ژبې کارول کیدی شي ، لکه هدف- C (++) ، C ++ ، D یا Rust.

    1.    اډریان اریو سټریټ dijo

      دا په C ++ کې دی ، نه په C. په هرصورت ، دا د توپیرونو لیدل ګران دي ځکه چې ډیری C ++ چلونکي د کتابتون ملاتړ ته اړتیا لري ، لکه نوي او حذف آپریټرونه. دا به په زړه پورې وي چې په رست کې عملیاتي سیسټم رامینځته کړئ. په حقیقت کې د IRC چینل شتون لري چې په Rust کې عامل سیسټمونو ته وقف شوی دی (# rust-osdev on irc.mozilla.net). هر هغه څوک چې د ماشین کوډ تالیف کوي واقعیا د ارزښت وړ دی ، په شمول جاوا که موږ د GCJ کاروو.

      1.    روډر dijo

        هو ، په حقیقت کې ، رست د عملیاتي سیسټمونو لپاره خورا په زړه پورې ژبه ده ، ځکه چې نه یوازې دا چې د C یا C ++ په پرتله زده کړه اسانه ده (دا لاهم د دوامداره بدلونونو سره دوام لري ، مګر دا خورا اسانه ده) ، مګر دا خورا خوندي دی.

  4.   روډر dijo

    په 70 کې دا خورا عام و چې په مستقیم ډول په هارډویر کې برنامه کړئ ، پرته له OS.

  5.   Christopher dijo

    عالي ... اوس زه یوازې پوهیدلو ته اړتیا لرم: 3 ...

  6.   mmm dijo

    سلام. د دې مقالو لپاره ډیره مننه. مګر ، که زه د برنامې پوهه نلرم ، زه فکر نه کوم چې زه یې باید ترسره کړم ، سمه ده؟ زما مطلب دی ، که نه ، دا به یو ښه وي ، او اوس زه څه کاپي او پیسټ کړم؟ what ... څومره خواشینی یم ، زه تل غواړم پوه شم چې دومره برنامه څنګه او څه ندي ، زه د خره ډیر یم !

    1.    ډیسیکوډر dijo

      ځان ملامت نه کړئ ، تاسو خره نه یاست. د پیل کولو لپاره ، ټول برنامه کونکي نه پوهیږي چې څنګه دانی لیکلی ، دا خورا لږ ساده کار دی ، او په عمل کې دا لوی دی. د مثال په توګه ، دلته لیکوال د کی بورډ او سکرین لپاره عمومي ډرایورونه رامینځته کوي ، د سکرین صفونو اداره کول ، کوم چې داسې میتود دی چې نن ورځ نه کارول کیږي. نن ورځ په لینکس کې ټیټی خورا خورا پیچلي دي ، او د x86 معمارۍ پورې اړه نلري چې د دوی په اختیار کې د سکرین صف لري. سربیره پردې ، د C کوډ ډیره برخه په معماری پورې اړه لري ، کله چې مثالی دا وي چې په ارشیف کې د معمار کوډ رامینځته کول او د C کوډ په کوم پروسیسر کار کولو لپاره. په هرصورت ، زه د لیکوال څخه نه لرې کیږم ، ځکه چې دانی جوانې ځانګړتیاوې ترلاسه کوي چې نن ورځ موږ د لینکس په کارنال کې نورمال ګ considerو ، د مثال په توګه ، دا اسانه کار ندی ، او تاسو ډاډه اوسئ چې یو څوک په بشپړ ډول بې کفایته دی دا کوي د یو څه لپاره لویې پروژې لکه لینکس ، gcc ، ګلیب سی ، او داسې نور د یو شخص لخوا نه جوړیږي مګر ډیری همکاران شتون لري.

      همچنان ، که تاسو غواړئ برنامه پیل کړئ ، تاسو په ویب کې یو څو لارښودونه لرئ ، که څه هم تاسو باید محتاط اوسئ او ښه لارښودونه وټاکئ. ما د لینکس په برخه کې پروګرامونه پیل کړل چې زما د سر سره حوض ته کود او هیڅ اوبه نلري (دا چې د محبوب C ژبې سره دی) ، که څه هم اوس زه یو څه لومړني انګیرنه لرم (چې دا هم خورا ښه ژبه ده). ځینې ​​سی کتابونه شتون لري په کوم کې چې تاسو په 6 پا onه کې د سر درد څومره چې تاسو ترلاسه کوئ پریږدئ ، مګر د کتابونو څخه دا شیان د تجربې په واسطه ترلاسه کیږي. دا د OSI شبکې ماډل په څیر پیښیږي. د OSi ماډل په اړه اسناد د نوي راغلي کس لپاره پوهیدل بالکل ناممکن دي ، مګر که تاسو د شبکې پرتونو ښه توضیح سره سایټ ومومئ نو تاسو ژر ترژره د تخنیکي سندونو لکه آر ایف سی سره معاملې کولو لپاره مفاهیم ترلاسه کوئ.

      په لنډه توګه ، دلته ښه ویب پا andې او لارښود شتون لري ، دا د هغې ښکته کیدو او د ښه موادو موندلو مسله ده.

      مننه!

  7.   وړیا_ډوم dijo

    سلام ، د "غلطي حلولو لپاره د خورا هڅه کولو وروسته" هیڅ ملبي بوټ سرلیک ونه موندل شو. او «تېروتنه تاسو لومړی د دانی پورته کولو ته اړتیا لرئ could ، ځکه چې زه نشم موندلی د لومړي مقالې ستونزې حل چیرې ومومم ، کوم چې زما په څیر ځینې یې درلودل ... دلته حل دی ، که دا د کوم چا لپاره کار کوي ...

    زه نه پوهیږم چې زما د غلطۍ د لامل نظریه سمه ده مګر په هرصورت ، پوښتنه دا ده کله چې په 32 بټ آپریټ سیسټم کې فایلونه تالیف کول ، نو دا غلطي رامینځته نکړه ، مګر له هغه وخته چې زه 64-بیټ لرم عملیاتي سیسټم (Gnu / لینیکس دیبیان 7) ، او دا چې کله تالیف او ازموینه مې د "نه ملټوبټ هیډر موندل شوې" تېروتنه کړې ، او یو شک شتون لري ، نو زما په اند غلطي د عملیاتي چاپیریال یا جوړښت له امله ده سیسټم په کوم کې چې موږ خپل فایلونه تالیف کوو ... او هغه څه چې ما ترسره کړل زما فایلونه ترکیب کول دي ، د چاپیریال مشخص کول یا 32-بټ جوړښت ..
    * sudo as -o kernel.o -c kernel.asm -32
    * sudo gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding -m32
    * sudo gcc -m32 -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -Freestanding
    عجیب شی دا دی چې زه یو څه شکونه لرم هاهاها ، بیا عملیاتي سیسټم چې موږ مرحله په مرحله کې رامینځته کوو د x86 معمار لپاره دی یا ایا زه غلط اعجاز….

    PS: یو څوک چې زما سره د شک په برخه کې مرسته وکړي ، او د هیلې ځیني غلطې یا زما بد څرګندونې معاف کړي ، او ښه زه بشپړ نه یم نو "بشپړتیا خپل قیمت لري" ... او خورا مهم ، د 32 بټ عملیاتي سیسټم تقویه کول ، مقدس حل… .اهاهاه

    1.    مارټین ولایلبا dijo

      جینیس! زه واقعیا غواړم چې دا ټیوټوریل ترسره کړم او ما په پیل کې د دې غلطۍ هاهاها سره وتښتیدم

  8.   آسکر dijo

    مبارک شه ، دا عالي مرسته ده. له دې وروسته زه له تاسو سره شریک کوم چې ستاسو او زما په مینځ کې نیک کارونه به وغزول شي؛

    مننه!