اطلاعیه

Collapse
No announcement yet.

نحوه کار کرنل های مولتی تسک

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    نحوه کار کرنل های مولتی تسک

    با سلام خدمت تمامی دوستان و اساتید : :bye
    یه چند وقتیه که بد جوری فکرم مشغول پروژه مولتی تسکینگ با استفاده از میکرو های PIC یا (ترجیحا) DSPIC شده! :surprised:
    البته شاید این سوال پیش بیاد که اصلا مگه کاری هست که نیاز به مولتی تسک داشته باشه اونم با میکرو ؟
    البته می شه بگیم در سطح ما ها با پروژه های سادمون نه نیازی نداریم.ولی دونستن یه چیز همیشه بهتر از ندونستنشه و احتمالا در اینده نزدیک به در دمون می خوره!
    حالا طبق اطلاعات اندک من توی سیستم های مولتی تسکینگ یه تایمر داریم که با فاصله زمانی معین اینتراپت ایجاد می کنه تا بتونه فعالیت حاضر را متوقف کنه و یه فعالیت بعدی رو پیش بگیره.
    حالا ممکنه که فعالیت رو یه دستور اسمبلی تعریف کنیم یا تکه از برنامه که مثلا روی ال سی دی می نویسه . که این خودش جای بحث زیادی داره!
    حالا این جا پای استک میاد وسط با استک پوینتر (stack & stack pointer)
    من یه سری اطلاعات دیگه ایی از این سیستم های مولتی تسکینگ دارم ولی بدلیل پراکندگی و دید کلی ناقص می خوام که دوستانی که اطلاعات دقیقتر و کاملتری دارن یه توضیح کامل از قسمتهای مختلف این نوع سیستمها بدن تا بعد بریم سراغ قسمتهای بعدی!
    فکر میکنم بهتره که با برنامه پیش بریم طبق زیر:(پس حدالمقدور از برنامه خارج نشیم و پست های نا مربوط نزنیم :redface
    1- اشنایی کلی و دقیق با سیستمهای مولتی تسکینک (برای میکرو نه کامپیوتر)
    2-اشنایی دقیق با قسمتهای مختلف این سیستم و وظیفه و نحوه کارکرد هر قسمت
    3-سعی در پیاده سازی همین سیستم برای یک میکرو خاص (DSPIC30F6014)

    بسم الله
    هر کدوم از دوستان که میتونه به پیشرفت مرحله اول کمک کنه بیاد جلو . مامنتظریم!!!

    [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

    #2
    پاسخ : نحوه کار کرنل های مولتی تسک

    فکر کنم برای شروع کتاب پروژه های پیشرفته با C نوشته ابراهیم دوگان کتاب خوبی باشه. البته فکر کنم ترجمه شدش تو بازار هست. فقط یه بدی که داره، کامپایلری که استفاده میکنه MicroC هست. ولی برای درک خود RTOS فکر نکنم بد باشه. بازم اگه شما مرجع مناسبتری میشناسید معرفی کنید.
    بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
    موفقيت پيش رفتن است نه به نقطه ي پايان رسيدن
    نلسون ماندلا

    دیدگاه


      #3
      پاسخ : نحوه کار کرنل های مولتی تسک

      سلام
      امروز دارم میرم انقلاب ببینم چه طور کتابیه.
      در مورد منابع برای این کار :زیاد هست ولی معمولا توضیح خود سیستم های ارائه شده هست و توضیح پایه ایی نیست و توضیح نحوه استفاده از پراسیجر ها هست ولی
      فعلا خودم دارم به یه نتایج جالبی می رسم .یه هو دیدی یه برنامه مولتی تسک گذاشت نوشتم گذاشتم اینجا!!!
      (راستی امضات خیلی قشنگه!جمله اولش)

      [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

      دیدگاه


        #4
        پاسخ : نحوه کار کرنل های مولتی تسک

        یه توضیحاتی اینجا برای سیستمهای مولتی تسک روی میکروکنترلرها دادم ، شاید به کارت بیاد
        http://www.eca.ir/forum2/index.php?topic=41965.10
        آن دم که مرا مي زده بر خاک سپاريد زير کفنم خمره اي از باده گذاريد
        تا در سفر دوزخ از اين باده بنوشم
        آنلحظه که با دوزخيان کنم ملاقات يک خمره شراب ارغوان برم به سوغات
        هرقدر که در خاک ننوشيدم از اين باده صافي ، بنشينم و با دوزخيان کنم تلافي

        دیدگاه


          #5
          پاسخ : نحوه کار کرنل های مولتی تسک

          خیلی عالی بود
          ولی اطلاعاتم تقریبا در همون حد هست.!!!
          من نمی خوام سیستم های عامل دیگرو پورت کنم . می خوام خودم یه سیستم عامل بنویسم .! :mrgreen:
          البته می دونم خیلی راحت نیست ولی خوب کار هر چی سختتر لذتش بیشتر :read:
          البته یه مشکلی که اون تاپیک داره اینه که (البته مشکل نیست) اینه که برای avr هست و چون کار اصلی سیستم عامل با استک و w ریجستر هاست و این دو توی avr و pic با هم فرق می کنن نمیشه راحت بینشون ارتباط بر قرار کرد ولی من حتما اون تاپیکو دنبال میکنم و از مفاهیم کلیش استفاده می مکنم.
          فکر میکنم که اصول و قلب یه سیستم مولتی تسک به این روال باشه : (البته من قبلا یه برنامه کوچولوی دو کاره نوشته بودم ولی کمی ایراد داشت)
          --------------------------------
          main:
          غیر فعال کردن اینتراپت
          گرفتن ادرس شروع هر تسک روی فلش
          اختصاص دادن و پاک کردن رم برای تسک ها
          فعال کردن اینتراپت
          while 1:
          task_1
          task_2
          ...
          task_n
          wend
          حالا بخش اینتراپت که وظیفه تعویض تسک ها رو هم بر عهده داره
          interupt:
          گرفتن و ذخیره w ریجستر ها رو رم
          گرفتن ادرس موجود روی استک
          تغییر ادرس روی استک برای تسک بعدی در بازگشت
          گرفتن w ریجسترهای مخصوص این تسک از رم
          return
          با هر بار اینتراپت روال به تسک بعدی منتقل میشه
          البته این برنامرو من چند روز دیگه می نویسم و امتحان می کنم
          ولی خیلی احتمالات ممکنه برای هر تسک و کلا سیستم اتفاق بیافته که باید پیش بینی بشه

          [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

          دیدگاه


            #6
            پاسخ : نحوه کار کرنل های مولتی تسک

            سلام عباس آقا. اون کتاب پروژه های پیشرفته با C رو تونستید پیدا کنید؟ اگه پیدا کردید لطفا بفرمائید چجوریا بود(خوب توضیح داده بود و پروژه هاش بدردبخور بود)؟
            بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
            موفقيت پيش رفتن است نه به نقطه ي پايان رسيدن
            نلسون ماندلا

            دیدگاه


              #7
              پاسخ : نحوه کار کرنل های مولتی تسک

              برای شروع شما میتونی یک راه ساده رو بری. بیا چند تا تسک ایجاد کن و به ازای هر کدوم یک استک بگیر. برای سوئیچ کردن بینشون هم از روال وقفه استفاده نکن. هر وقت یک تسک صلاح دید بیاد و تسک بعدی رو اجرا کنه. البته روتین اجرا کردن تسک دیگه اینجوریه که مقادیر واسط رو در استک نگهداری کنه. تسک بعدی رو انتخاب کنه. و استک تسک جدید رو استفاده کنه. مقادیر مورد نیازش رو از استک برداره و عین اینکه هیچ اتفاقی نیفتاده به کارش ادامه بده. این میشه پایه یک کرنل preemptive یا انحصاری.
              من عین این روتینها رو تحت داس برای حل مسئله ای با حدود 50 خط C و 100 خط اسمبلی نوشتم.

              دیدگاه


                #8
                پاسخ : نحوه کار کرنل های مولتی تسک

                سلام عباس آقا. اون کتاب پروژه های پیشرفته با C رو تونستید پیدا کنید؟ اگه پیدا کردید لطفا بفرمائید چجوریا بود(خوب توضیح داده بود و پروژه هاش بدردبخور بود)؟
                علیک سلم اقا رضا
                اقا ما رفتیم انقلاب از هر مغازه پرسیدیم گفت نداره چند تا هم اصلا گفتن همچین کتابی نیست.!!! oo:
                مطمئنی که اسم یا نویسند رو اشتباه نکردی؟؟؟
                این میشه پایه یک کرنل preemptive یا انحصاری.
                خیلی ممنون
                ولی بر عکس نگفتید!؟این کرنل نمیشه cooprative
                اگه ممکنه در مورد هر جفتش توضیح بدین؟؟؟
                ممنون از دوستان :nerd:

                [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

                دیدگاه


                  #9
                  پاسخ : نحوه کار کرنل های مولتی تسک

                  به این برنامه که نوشتم دقت کنید.توی این برنامه دو تا تسک داریم و هر تسک فقط یه لامپ ال ای دی رو خاموش روشن می کنه ولی لامپ مربوط به تسک 1 بیشتر روشنه یعنی زمان دقیق بین هر کدوم پخش نمی شه و یه جای کار ایراد داره نظر شما چیه؟
                  program POP
                  dim t_a00 as byte
                  dim t_a01 as byte
                  dim t_a02 as byte
                  dim t_a10 as byte
                  dim t_a11 as byte
                  dim t_a12 as byte
                  dim i,j,nn as byte
                  sub procedure interrupt
                  INTCON=$20
                  TMR0L=0x00

                  if nn=0 then
                  t_a00=TOSL 'read top of stack
                  t_a01=TOSH
                  t_a02=TOSU

                  TOSL=t_a10 'write top of stak
                  TOSH=t_a11
                  TOSU=t_a12
                  else
                  t_a10=TOSL 'read top of stack
                  t_a11=TOSH
                  t_a12=TOSU

                  TOSL=t_a00 'write top of stack
                  TOSH=t_a01
                  TOSU=t_a02
                  end if
                  nn=1-nn 'change task flag
                  end sub

                  sub procedure T_1()
                  while 1
                  portj.5=1
                  portj.5=0
                  wend
                  end sub

                  sub procedure T_2()
                  while 1
                  portj.7=1
                  portj.7=0
                  wend
                  end sub

                  main:
                  trisj=0
                  portj=0
                  T0CON=%11001111
                  TMR0L=0x00
                  INTCON=0xA0 'enable interupt
                  nn=0
                  t_a02=0x00 ''
                  t_a01=0x00 'start address of T_1 in flash
                  t_a00=0x7e ''

                  t_a12=0x00 ''
                  t_a11=0x00 'start address of T_2 in flash
                  t_a10=0x86 ''

                  while 1
                  T_1()
                  T_2()
                  wend
                  end.

                  [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

                  دیدگاه


                    #10
                    پاسخ : نحوه کار کرنل های مولتی تسک

                    نوشته اصلی توسط abbasmh
                    علیک سلم اقا رضا
                    اقا ما رفتیم انقلاب از هر مغازه پرسیدیم گفت نداره چند تا هم اصلا گفتن همچین کتابی نیست.!!! oo:
                    مطمئنی که اسم یا نویسند رو اشتباه نکردی؟؟؟خیلی ممنون
                    ولی بر عکس نگفتید!؟این کرنل نمیشه cooprative
                    اگه ممکنه در مورد هر جفتش توضیح بدین؟؟؟
                    ممنون از دوستان :nerd:
                    سلام عباس آقا.
                    بنده مطمئن بودم که گفتم. آخه یکی از بچه ها تو همین فروم معرفی کرده بود :
                    http://www.eca.ir/forum2/index.php?topic=40312.msg199129#msg199129
                    اینم سایت اختصاصی کتاب هست:
                    http://www.havar.ir/pic_book.html

                    ولی فکر کنم تو بازار به سختی گیر میاد.
                    بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
                    موفقيت پيش رفتن است نه به نقطه ي پايان رسيدن
                    نلسون ماندلا

                    دیدگاه


                      #11
                      پاسخ : نحوه کار کرنل های مولتی تسک

                      ممنون
                      پسر خوب نوشتی
                      فکر کنم برای شروع کتاب پروژه های پیشرفته با C نوشته ابراهیم دوگان کتاب خوبی باشه. البته فکر کنم ترجمه شدش تو بازار هست. فقط یه بدی که داره، کامپایلری که استفاده میکنه MicroC هست. ولی برای درک خود RTOS فکر نکنم بد باشه. بازم اگه شما مرجع مناسبتری میشناسید معرفی کنید.
                      نوشتی "پروژه های پیشرفته با C نوشته ابراهیم دوگان"
                      اصل اسمش اینه که "پروژه های پیشرفته با میکروکنترولرهای pic به زبان C" و ترجمه و تالیف هوار بطحایی
                      ولی به هر حال ممنون تا اخر هفته دوباره میرم انقلاب.

                      [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

                      دیدگاه


                        #12
                        پاسخ : نحوه کار کرنل های مولتی تسک

                        نه لازم نیست این کار رو بکنید چون لینکشو پیدا کردم:
                        http://www.filefactory.com/file/0dfe7a/n/Advanced_PIC_Microcontroller_Projects_in_C.pdf
                        اینم لینک CD کتاب:
                        http://rapidshare.com/files/210390882/Supplements.rar
                        و لینک منابع که چندتا کتاب دیگه هم پیدا میکنید:
                        http://www.sonsivri.com/forum/index.php?topic=13146.0
                        بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
                        موفقيت پيش رفتن است نه به نقطه ي پايان رسيدن
                        نلسون ماندلا

                        دیدگاه


                          #13
                          پاسخ : نحوه کار کرنل های مولتی تسک

                          با سلام مجدد به همگی دوستان :bye
                          رای شروع شما میتونی یک راه ساده رو بری. بیا چند تا تسک ایجاد کن و به ازای هر کدوم یک استک بگیر. برای سوئیچ کردن بینشون هم از روال وقفه استفاده نکن. هر وقت یک تسک صلاح دید بیاد و تسک بعدی رو اجرا کنه. البته روتین اجرا کردن تسک دیگه اینجوریه که مقادیر واسط رو در استک نگهداری کنه. تسک بعدی رو انتخاب کنه. و استک تسک جدید رو استفاده کنه. مقادیر مورد نیازش رو از استک برداره و عین اینکه هیچ اتفاقی نیفتاده به کارش ادامه بده.
                          توی این برنامه همین کارو کردم.
                          بلاخره مثل ادم راه افتاد!!! :wow:
                          دو تا لامپ رو هر 500 میلی ثانیه روی دوتا پین جدا توی دو تا تسک جدا خاموش روشن میکنه!!!(واقعا ارزششو داره با مولتی تسکینگ لامپ خاموش روشن کنیم!نه!؟ :mrgreen
                          البته این برنامه خیلی ساده و غیر بهینه برای شروع کار هست و بعدا کامل میشه.
                          برنامه قبلی رو اینجوری اصلاح کردم:(با کامپایلر microbasic)

                          [code=vb]

                          program POP
                          dim sfr_temp as byte[2][6] 'for FSR
                          dim stack_temp as byte[2][3] 'for stack address
                          dim i,j,nn as byte

                          sub procedure S_T() 'switch task

                          if nn=0 then
                          sfr_temp[0][0]=FSR0L ''
                          sfr_temp[0][1]=FSR0H '
                          sfr_temp[0][2]=FSR1L 'save FSR
                          sfr_temp[0][3]=FSR1H '
                          sfr_temp[0][4]=FSR2L '
                          sfr_temp[0][5]=FSR2H ''

                          stack_temp[0][2]=TOSL ''
                          stack_temp[0][1]=TOSH 'read top of stack
                          stack_temp[0][0]=TOSU ''

                          TOSL=stack_temp[1][2] ''
                          TOSH=stack_temp[1][1] 'write top of stak
                          TOSU=stack_temp[1][0] ''
                          nn=1
                          FSR0L=sfr_temp[0][0] ''
                          FSR0H=sfr_temp[0][1] '
                          FSR1L=sfr_temp[0][2] 'get FSR
                          FSR1H=sfr_temp[0][3] '
                          FSR2L=sfr_temp[0][4] '
                          FSR2H=sfr_temp[0][5] ''
                          else
                          sfr_temp[1][0]=FSR0L ''
                          sfr_temp[1][1]=FSR0H '
                          sfr_temp[1][2]=FSR1L 'save FSR
                          sfr_temp[1][3]=FSR1H '
                          sfr_temp[1][4]=FSR2L '
                          sfr_temp[1][5]=FSR2H ''

                          stack_temp[1][2]=TOSL ''
                          stack_temp[1][1]=TOSH 'read top of stack
                          stack_temp[1][0]=TOSU ''
                          TOSL=stack_temp[0][2] ''
                          TOSH=stack_temp[0][1] 'write top of stack
                          TOSU=stack_temp[0][0] ''
                          nn=0
                          FSR0L=sfr_temp[1][0] ''
                          FSR0H=sfr_temp[1][1] '
                          FSR1L=sfr_temp[1][2] 'get FSR
                          FSR1H=sfr_temp[1][3] '
                          FSR2L=sfr_temp[1][4] '
                          FSR2H=sfr_temp[1][5] ''
                          end if
                          end sub
                          sub procedure T_1()
                          while 1
                          portj.5=1
                          delay_ms(500)
                          S_T()
                          portj.5=0
                          delay_ms(500)
                          S_T()
                          wend
                          end sub
                          sub procedure T_2()
                          while 1
                          portj.7=1
                          delay_ms(500)
                          S_T()
                          portj.7=0
                          delay_ms(500)
                          S_T()
                          wend
                          end sub

                          main:
                          trisj=0
                          nn=0
                          asm 'get start address of T_1 in flash
                          MOVLW @@#_T_1
                          MOVWF _stack_temp+0, 0
                          MOVLW @#_T_1
                          MOVWF _stack_temp+1, 0
                          MOVLW #_T_1
                          MOVWF _stack_temp+2, 0
                          end asm
                          asm 'get start address of T_2 in flash
                          MOVLW @@#_T_2
                          MOVWF _stack_temp+3, 0
                          MOVLW @#_T_2
                          MOVWF _stack_temp+4, 0
                          MOVLW #_T_2
                          MOVWF _stack_temp+5, 0
                          end asm

                          'stack_temp[0][0]=0x00 ''
                          'stack_temp[0][1]=0x00 'start address of T_1 in flash
                          'stack_temp[0][2]=0xa8 ''

                          'stack_temp[1][0]=0x00 ''
                          'stack_temp[1][1]=0x01 'start address of T_2 in flash
                          'stack_temp[1][2]=0x3c ''

                          while 1
                          T_1()
                          T_2()
                          wend
                          end.

                          [/code]

                          خیلی باهاله!!!من که دارم کلی حال میکنم!(انگار اپالو هوا کردم )
                          رضا اقا لطفا در باره سیستم های cooperative & premative بیشتر توضیح بدید.؟؟؟؟
                          از مزایا و معایب هر کدوم.
                          (اقا رضا بابایی واقعا ممنون ایشالاهفردا می خونمش)
                          راستی تعداد رضا ها توی تاپیک داره زیاد میشه
                          خیلی ممنون

                          [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

                          دیدگاه


                            #14
                            پاسخ : نحوه کار کرنل های مولتی تسک

                            بعد از کلی گشت وگذار توی اینترنت و خوندن مطالب مختلف به یه نتایجی رسیدم.چکیده مطالب مهم و جملات کلیدی:
                            For small systems where the programmer has complete control of every task, cooperative multitasking can be superior to pre-emptive multitasking.
                            ----------------------------
                            In other situations, preemptive multitasking can be superior .. but unfortunately, I'm pretty sure it's impossible to implement preemptive multitasking on 12x and 16x series PIC chips. On 18x series, apparently it is possible.
                            ----------------------------
                            µC/OS-II on the other hand is preemptive and should be used when system responsiveness is important as task switches can occur in a deterministic amount of time.
                            ----------------------------
                            A type of multitasking in which the process currently controlling the CPU must offer control to other processes. It is called cooperative because all programs must cooperate for it to work. If one program does not cooperate, it can hog the CPU. In contrast, preemptive multitasking forces applications to share the CPU whether they want to or not.
                            ----------------------------
                            Cooperative multitasking means that all the application have to be "well behaved" and give up the CPU
                            frequently. The scheduler has no way to interrupt a process that doesn't want to give up the CPU.
                            ----------------------------
                            A preemptive multitasking OS will interrupt a running process when its timeslice is up. Cooperative multitasking, on the other hand, relies on the process itself to be nice and hand over control to other processes
                            when it does not need it. In the latter case, a poorly designed application can easily monopolize the entire machine.
                            حالا اگه بخوامبه فارسی اون چیزایی رو که فهمیدم بگم:
                            روش cooprative :
                            توی این روش یه روال تغییر تسک داریم که با اجرا شدن اون cpu تسک حاضر رو رها می کنه و سراغ تسک بعدی می ره.این روال تغیر تسک خودش توی هر تسک اجرا می شه درواقع هر تسک هر موقع که بخواد میاد این روال رو فرا میخونه و بعد از فراخانی cpu تسک حاضر رو رها می کنه و سراغ تسک بعدی میره.تسک بعدی هم خودش هر موقع خواست دوباره روال تغییر تسک رو فرا می خونه و cpu رو به تسک بعدی میده.این سیستم مثل یه زنجیره که دو سرش به هم بستس که هر تسک یه دونه از دونه های زنجیره.
                            در واقع روال کلی رو هر کدوم از تسک ها کنترل می کنن.
                            حالا مزایا:
                            برنامه نویسی خود کرنل راحت هست.
                            دسترسی به منابع مشترک تسک ها خیلی راحتتره.
                            معایب:
                            اگه یه تسک درست توسط ما نوشته نشده باشه یا منتظر یه اتفاق خاص باشه پس cpu به تسک های بعدی نمیره پس در کل سیستم هنگ می کنه.
                            نوشتن هر کدوم از تسکها سختتره.
                            برنامه نویس باید کاملا به هر تسک مطمئن باشه و اشراف داشته باشه تا مطمئن بشه که سیسم هنگ نمی کنه.
                            کار بر نمی تونه دقیق cpu رو بین تسک ها تقسیم کنه.
                            -------------------------------------
                            فکر می کنم در کل برای کار های ساده تر که زیاد وابسطه زمان نیستند و تعداد تسک ها کمه مناسب تره.(نظر خودم)
                            سیسم preemative :
                            این سیستم دقیقا مثل سیستم قبلیه با این تفاوت که روال تغییر تسک دیگه توسط هر تسک اجرا نمیشه بلکه توسط یه عامل خارجی که وابسته تسکها نیست مثل اینتراپت کنترل میشه.دیگه هر تسک روی روال کلی سیستم تاثیر نداره بلکه این سیستم خارجی میاد کنترل و مدیریت تسک ها رو نظارت می کنه.این سیسم مثل یه سرباز خون با یه رئیسه.هر کدوم از تسک ها یه سرباز و رئییس عامل خارجی.
                            معمولا هم از اینتراپت حاصل از تایمر ها استفاده میشه که زمان دقیقی بدست میده.
                            حالا مزایا:
                            اولا cpu دقیقا بین تسک ها تقسیم میشه.
                            برنامه نویسی تسک ها راحتتر میشه.
                            اگه یه تسک درست نوشته نشده باشه دیگه کل سیستم هنگ نمیکنه و فقط همون تسک کار نمی کنه.
                            خیلی راحتتر می شه زمان پاسخگویی هر تسک رو تخمین زد پس بیشتر به درد سیستم های Real Time می خوره.
                            انعطاف کار خیلی بالاتره.
                            معایب:
                            برنامه نویسی کرنل مشکله.
                            توی استفاده از منابع مشترک کار برنامه نویس سختتر می شه.
                            ------------------------
                            در کل بیشتر به در کارهای مهمتر و بزرگتر و پیچیده تر میخوره.(نظر خودم)

                            امیدوارم که چیزی رو اشتباه نفهمیده باشم.حالا اگه اساتید کلامی توی تکمیل یا رفع اشکال مطالب من دارن اعلام کنن. :nerd:
                            من هنوز دارم روی مفاهیم کلی مطالعه می کنم. :read:
                            (انگشتم درد گرفت :mrgreen

                            [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

                            دیدگاه


                              #15
                              پاسخ : نحوه کار کرنل های مولتی تسک

                              ولله من یه چیزی پروندم!! شما که ماشالله تا تهش رفتین.
                              راستی شما چرا بجای یک کرنل مالتی تسک یکه همه جا هست یک کرنل مبتنی بر state machine نمینویسین؟ کلی بار زمانیش هم کمتره و از حافظه هم استفاده بهینه تری میشه. فقط باید یک ادیتور مثل VisualState داشته باشین تا کلا دیگه بترکونه.

                              دیدگاه

                              لطفا صبر کنید...
                              X