# برنامه نویسی میکروکنترلر (MicroController) ها و MicroProcessor ها > برنامه نویسی سیستم های Embeded > مباحث عمومی کار با سخت افزارها، سنسورها و لوازم جانبی >  بلاک بندی و بافر

## hercool

سلام دوستان در رابطه با بلاک بندی و ایجاد بافر اطلاعات تخصصی می خواستم 
چونه ایجاد میشن و در هر دسته خود چه ویژگی هایی دارند 
برای مثال بافر از رم سیستم استفاده میکنه ؟
ایا از هارد هم استفاده میکنه ؟چطور؟
چطوری این فضا رو اختصاص میده ؟
در چه سیستم های سخت افزاری بافر رو میزارن ؟ برای مثال می دونم که رایتر ها این فضا رو دارن و بعضی نرم افزار ها 
اما چطور و با چه ویژگی ؟
بافر رو از حافظه نهان میگیریم یعنی چی؟
همین طور برای بلاک 
ممنون میشم راهنماییم کنید .

----------


## Felony

> برای مثال بافر از رم سیستم استفاده میکنه ؟


بافر در سخت افزار خودش یک نوع حافظه هست ، رم کجا بود .




> ایا از هارد هم استفاده میکنه ؟چطور؟


خیر ، همونطور که گفتم بافر خودش یه نوع حافظه هست ، هارد خودش بافر داره ، مثلا هاردهای 16 مگابایت بافر یا  32 مگابایت بافر .




> در چه سیستم های سخت افزاری بافر رو میزارن ؟ برای مثال می دونم که رایتر ها این فضا رو دارن و بعضی نرم افزار ها


بافر در قطعات سخت افزاری که نسبت به حافظه اصلی ( رم ) و پردازنده سرعت پائین تری دارن استفاده میشه ، مثلا در DVD و CD رایترها ، هارد ، پرینتر و این قبیل قطعات ، در هنگام درخواست کاربر از سیستم برای انجام عملیات X اگر نیازی به کار با سخت افزار باشه باید وقفه ای در روال عادی کار پردازشگر پیش بیاد و به درخواست شما رسیدگی کنه ( به وسیله Multi Plexer ) حال قطعه ای مثل رایتر یا پرینتر سرعت بسیار پائین تری نسبت به پردازنده و حافظه اصلی شما داره و وقتی پردازنده و حافظه اصلی میخواد منتظر دریافت اطلاعات از این دستگاه ها بشه وقتش تلف میشه ، برای همین در این دستگاه ها بافر تعبیه میشه ، بافر اطلاعات رو از این دستگاه ها که سرعت پائینی دارن میگیره و وقتی حجم این اطلاعات به حد معینی رسید وقفه رو برای پردازنده ارسال میکنه و به پردازنده اعلام آمادگی میکنه ، پردازنده به وقفه ایجاد شده پاسخ میده و اطلاعات رو از بافر سخت افزار مورد نظر میخونه و اطلاعات رو برای پردازش تو صف قرار میده و یا بسته به نیاز به حافظه اصلی منتقل میکنه و به کار عادی خودش هم ادامه میده و اینجوری نه وقتی ازش هدر شده و نه در پردازش ها وقفه ای افتاده و نه درخواستی رو بی پاسخ گزاشته .

حافظه نهان هم به معنای Cache هست که پردازنده های امروزی بسته به معماری تا 3 حافظه نهان ( L1, L2, L3 ) دارن .

برای اطلاعات کامل تر در مورد بافر بهتره در مورد حافظه های میانجی مطالعه کنید ، تو گوگل مطالب زبان اصلی بسیار مناسبی پیدا میشه .

----------


## hercool

بافر سخت افزاری از چی درست شده ؟
بافر نرم افزاری فضا رو از حافظه اصلی میگیره ؟
بافر نهان همون بافر نرم افزاری هست ؟
بافر سخت افزاری از چه جنسی ساخته شده تا بتونه قدرت انتقال رو بالا ببره ؟
یه سوال ما چند تا پردازنده داریم مگه پردازنده ورودی و خروجی هم داریم ؟

----------


## Felony

> بافر سخت افزاری از چی درست شده ؟
> بافر نرم افزاری فضا رو از حافظه اصلی میگیره ؟
> بافر نهان همون بافر نرم افزاری هست ؟
> بافر سخت افزاری از چه جنسی ساخته شده تا بتونه قدرت انتقال رو بالا ببره ؟
> یه سوال ما چند تا پردازنده داریم مگه پردازنده ورودی و خروجی هم داریم ؟


1- از یکسری نیمه هادی ، الان دقیقا اسماشون یادم نیست ولی در کل سرعتش از دیسک سخت خیلی بیشتره .

2- بله از حافظه اصلی میگیره ، البته بعضی از نرم افزارها سنگین که برای انجام وظایف نیاز به مدیریت منابع به بهترین شکل دارن ( مثلا سیستم عامل ویندوز ) اگر حافظه اصلی ( Ram ) به اندازه کافی داشته باشید که Buffer روی حافظه اصلیتون قرار میگیره و از اون استفاده میکنه ولی اگر سیستم عامل تشخیص بده که حافظه کافی در اختیار نداره از Virtual Memory استفاده میکنه و برای مدیریت بهتر منابع اطلاعاتی که مطمئن هست تا زمان n بهشون نیازی نداره رو بر روی دیسک سخت نگهداری میکنه و در زمان نیاز اونها رو به حافظه اصلی بار میکنه ( مثل عملکرد Page File در ویندوز ) ، دقیقا مثل اولویت بندی حافظه نهان پردازنده که اطلاعاتی که در L1 قرار دارن اولویت اجرای بالاتری دارن ( برای همین هم سرعت L1 بالاتر از L2 یا L3 هست ) و اولویت بعدی با L2 و بعد L3 هست ، Understand ؟

3- گفتم که از یکسری نیمه هادی .

4- پردازنده ی ورودی و خروجی نداریم ولی پردازنده ورودی و خروجی داره !

----------


## hercool

ایا برداشت من درسته؟
Virtual Memory

یعنی اینکه بخشی از بافر هارد رو میگیره یا بخشی از حافظه هارد رو تا بتونه کار کنه ؟
مثلا 1536 مینیمال و 3600 ماکسیمال من در درایو وینوزم هست که به حافظه مجازی اختصاص دادم 
حالا این بخش از هارد من گرفته میشه ؟
اگر به درایو های دیگم این بخش رو زیاد کنم میزان کل بافر سیستم بالا میره و باعث بالا رفتن سرعت میشه؟
یا بخش عمده ای از فضای سیستمم اختصاص داده میشه تا در زمان مورد نیاز به عملیات سیستم اختصاص داده بشه؟

ممنون از پاسخت اقا مجتبی
 :چشمک:

----------


## Felony

> یعنی اینکه بخشی از بافر هارد رو میگیره یا بخشی از حافظه هارد رو تا بتونه کار کنه ؟


بخشی از حافظه فیزیکی هارد رو میگیره ، یعنی داده ها رو به صورت نوعی فایل روی هارد مینویسه ، بافر هارد در کل 16 یا 32 مگابایت هست ، اطلاعاتی که در حافظه مجازی نوشته میشن ممکنه چند صد مگابایت باشن ، بنابراین برای حافظه مجازی از بافر استفاده نمیشه .




> مثلا 1536 مینیمال و 3600 ماکسیمال من در درایو وینوزم هست که به حافظه مجازی اختصاص دادم 
> حالا این بخش از هارد من گرفته میشه ؟


بله ، از حافظه فیزیکی هاردتون گرفته میشه .




> اگر به درایو های دیگم این بخش رو زیاد کنم میزان کل بافر سیستم بالا میره و باعث بالا رفتن سرعت میشه؟


گفتم که بافر یه قطعه فیزیکی هست و نمیشه بهش چیزی اضافه کرد یا ازش چیزی کم کرد ، بنابراین سرعت تفاوتی نمیکنه .




> یا بخش عمده ای از فضای سیستمم اختصاص داده میشه تا در زمان مورد نیاز به عملیات سیستم اختصاص داده بشه؟


درسته .

----------


## hercool

ممنون بابت پاسخات مجتبی جان 
یه سوال پس حافظه های مجازی از کجا تخصیص داده میشه ?

----------


## Felony

> ممنون بابت پاسخات مجتبی جان 
> یه سوال پس حافظه های مجازی از کجا تخصیص داده میشه ?


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

----------

