PDA

View Full Version : real-time



cpuman20
جمعه 15 خرداد 1383, 19:41 عصر
با سلام
می خواستم ببینم تعریف سیستمهای real-time چیه و این گونه سیستمها چگونه کار می کنند که به اونها real-time systems گفته می شود

ممنون

shaniaki
شنبه 16 خرداد 1383, 00:27 صبح
با عرض ادب:
این اصطلاح بیشتر یک اصطلاح کنترلی است و بهتر بود در یک فروم برقی آنرا می پرسیدی. www.barghi.net/forum
همانطور که می دانید در یک حلقه کنترلی وجود یک تابع تاخیر می تواند بی نهایت قطب و صفر به سیستم اضافه کند و در برخی موارد موجب ناپایداری آن گردد. به طور شهودی در برخی کاربرد ها که کنترلر ما باید نسبت به خارج شدن سیستم از حالت متعادل سریعا واکنش نشان دهد و یا اینکه سیستم را سریعا به حالت پایدار جدید برساند این تاخیر باید حداقل باشد.
از هنگامی که شما وضعیت فعلی یک سیستم خارجی را از طریق یکی از پورت ها به کامپیوترتان گزارش می دهید تا زمانی که سیستم عامل آن را دریافت می کند و تحویل process کنترلی شما می دهد تا هنگامی که فرمان توسط نرم افزار و سیستم عامل تحویل plant کنترلی شما می شود یک تاخیر به وجود می آید که هر چه این تاخیر کمتر باشد کیفیت سیستم شما بالاتر می رود.
در سیستم های real time سعی بر این است که با تکنیک های مختلف سخت افزاری و نرم افزاری (مثلا حذف امکانات اضافی و تک منظوره کردن سیستم و ...) این تاخیر به حداقل ممکن برسد. لینوکس به خاطر customizable بودن این قابلیت را به شما می دهد. کارهایی که می توانید در این جهت انجام دهید شامل حذف تمامی سرویس هایی که به آن ها نیاز ندارید؛ حذف تمام امکانات و ماژول های کرنل و سبک تر کردن آن؛ حذف تمام قیدهای امنیتی روی process ها و کارهایی از این قبیل می باشد.
البته همانطور که مستحضرید این کارها تا حدی می تواند عملکرد را بهبود بخشد و برای real time کردن بیشتر یک کنترل کامپیوتری سیستم عامل هایی ویژه برای این امر طراحی شده اند(مثلا QNX)

یه عشق برنامه نویسی خفن

Zouup
شنبه 16 خرداد 1383, 10:06 صبح
حذف تمام امکانات و ماژول های کرنل و سبک تر کردن آن؛ حذف تمام ...
البته همانطور که مستحضرید این کارها تا حدی می تواند عملکرد را بهبود بخشد ...

kernel modules are *not* making kernel slow as long as they are not used , so there is no
need to remove kernel modules but unload them :)

Inprise
شنبه 16 خرداد 1383, 11:21 صبح
چگونه کار می کنند که به اونها real-time systems گفته می شود

در ادبیات سیستمهای عامل ( و نه سیستمهای کنترلی ) ، یه سیستم Real Time به سیستمی گفته میشه که مدت زمان بین دریافت رکوئست و تولید پاسخ با دقت قابل قبولی "قابل پیش بینی" باشه . فی الواقع در ادبیات سیستمهای عامل RT قابل پیش بینی بودن دلتا تایم اهمیت داره . البته عموما" سیستمهای همزمان باید دارای زمان پاسخگوئی خیلی پائین و کیفیت بالا باشن .

خوش باشید

shaniaki
شنبه 16 خرداد 1383, 22:20 عصر
با عرض ادب:


kernel modules are *not* making kernel slow as long as they are not used , so there is no
need to remove kernel modules but unload them :)
ببخشید من یه سوال از شما داشتم: تا حالا هر دو تا روش رو تو یه کاربرد واقعی امتحان کردید یا اینکه *not* رو تو کتاب خوندید؟

یه عشق برنامه نویسی خفن

shaniaki
شنبه 16 خرداد 1383, 22:32 عصر
با عرض ادب:


در ادبیات سیستمهای عامل ( و نه سیستمهای کنترلی ) ، یه سیستم Real Time به سیستمی گفته میشه که مدت زمان بین دریافت رکوئست و تولید پاسخ با دقت قابل قبولی "قابل پیش بینی" باشه ....
خوش باشید
تا جایی که من می دونم در سیستم های کنترلی هم همونه. در حقیقت تعریف اساسی همونیه که شما گفتید ولی در عمل این تعریف برای زمان های کوچک(نسبی) مفید است.

اطلاعات بیشتر:
http://www.omimo.be/encyc/techno/terms/defini/def.htm#realtime

یه عشق برنامه نویسی خفن

cpuman20
شنبه 16 خرداد 1383, 23:26 عصر
با سلام و عرض ادب
نمی توان به این موضوع شک کرد که برای بالا بردن سرعت در یک سیستم عامل نیاز به خذف و سبک تر کردن کرنل آن داریم ولی می خواستم این رو بدونم چه ترفند هایی رو در سیستم های سریع Real-time بکار می برند که باعث با اهمیت تر شده یک کار یا پردازشی حاص برای سیستم می شود (حتی بدون این که ماژول خاصی رو حذف کنیم) .

قبلا از پاسخ مدیران متشکرم

shaniaki
شنبه 16 خرداد 1383, 23:40 عصر
با عرض ادب:

کارهای جنبی متفاوتی می شه کرد که البته هر کدام برد خودشونو دارند. مثال:
توی ویندوز xp تون ctrl+alt+del بزنید و وارد قسمت process ها بشید؛ روی یک process کلیک راست کنید و set priority رو روی چیز دیگه تنظیم کنید(اگر restart رو دوست دارید روی realtime تنظیم کنید) یا اینکه این کار رو موقع برنامه نویسی کنید.
توی لینوکس می تونید هنگام برنامه نویسی با تنظیم یک عدد (niceness) برای پروسس دلخواهتون اون رو دارای ارجحیت بالاتری بکنید مثلا پروسس های دارای niceness منفی دارای اهمیت بالاتر از حد عادی در حین اجرا هستند. در هنگام اجرا هم می توانید این niceness را تغییر دهید(با استفاده از دستور nice و optionی به نام n-)

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

یه عشق برنامه نویسی خفن

Zouup
یک شنبه 17 خرداد 1383, 01:31 صبح
ببخشید من یه سوال از شما داشتم: تا حالا هر دو تا روش رو تو یه کاربرد واقعی امتحان کردید یا اینکه *not* رو تو کتاب خوندید؟
یه عشق برنامه نویسی خفن

yes , i have tried many times , must of the times ethernet drivers and netfilter core modules , also i have read this in books ! i like books ! :) unloaded kernel modules (like any other file , but a elf object file ), are not taking any kind of load on the kernel , if your think like this , your are wrong , so i have to explain .
The memory where an Linux Loadable Kernel Module resides is a little different from that where the base kernel resides. The base kernel is always loaded into one big contiguous area of real memory, whose real addresses are equal to is virtual addresses. That's possible because the base kernel is the first thing ever to get loaded it has a wide open empty space in which to load. And since the Linux kernel is not pageable, it stays in it's homestead forever.


By the time you load an Linux Loadable Kernel Module, real memory is all fragmented -- you can't simply add the Linux Loadable Kernel Module to the end of the base kernel. But the Linux Loadable Kernel Module needs to be in contiguous virtual memory, so Linux uses "vmalloc" to allocate a contiguous area of virtual memory , which is probably not contiguous in real memory. But the memory is still not pageable. The Linux Loadable Kernel Module gets loaded into real page frames from the start, and stays in those real page frames until it gets unloaded.

Some CPUs can take advantage of the properties of the base kernel to effect faster access to base kernel memory. For example, on one machine, the entire base kernel is covered by one page table entry and consequently one entry in the translation lookaside buffer (TLB). Naturally, that TLB entry is virtually always present. For Linux Loadable Kernel Modules on this machine, there is a page table entry for each memory page into which the Linux Loadable Kernel Module is loaded. Much more often, the entry for a page is not in the TLB when the CPU goes to access it, which means a slower access.

najafzade
شنبه 20 بهمن 1386, 00:09 صبح
سلام
اگه میشه یک سری مقاله کامل در این زمینه اینجا بزارین.
با توضیحات بیشتر.

متشکرم.:قهقهه: