سادگی زیباست...

بررسی انواع معماری های سیستم عامل و برنامه های سیستمی و روشهای توسعه آنها

سادگی زیباست...

بررسی انواع معماری های سیستم عامل و برنامه های سیستمی و روشهای توسعه آنها

سادگی زیباست...

فاصله کانونی رو با یه تقسیم دو تا عدد پیدا بکن، این جواب چرا بدست میاد؟ کاری نداشته باش، جوابش بدست میاد دیگه.

درس خوندن باید طوری باشه که تونست تست زد.

این جملات رو در برنامه‌های مشابه "کنکور آسان است" میتونین بارها بشنوین

فردای مملکت در دست دانشجوی امروز است، دانشجویی که با روش‌های تست زنی تونسته تو کنکور قبول بشه.

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

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

این جماعت بعد از فارغ التحصیل شدن چی میشن؟

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

اونایی که میخواستن برن خارج و نتونستن، که میشن استاد دانشگاهی که بلده کتاب بخونه.

اونایی که تو دانشگاههای دیگه هستن، که کارشون خیلی سخته، چونکه تو تهران نخوندن و نیستن!!!!! کاش کشور ما تهران نداشت.

البته استثنا هم وجود داره، اما اسمش روشه، استثنا.

یه نمونه مثال بارز این مسائل که، آقا با بازی در اوردن یکی آدم نمیشه زیاد هستش، مثالش این پزشک های مملکت ما هستن. اینی که یکی بچش مریض باشه و دکتری برای عمل همونج یه مبلغ زیادی برای خودش بخواد چیز عادی شده. این کار رو یک حیوون هم انجام نمیده. تصور بکنین، به یکی بگی اگر میخوای زنده بمونی 10 میلیون بده. یهو بگو 10 میلیون بگو تا نکشمت دیگه.

این جماعت به عنوان یک فرد موفق(در بخش مادی) الگویی برای جامعه میشن و همین میشه که این میشیم. بحث پزشک ها رو اگر ادامه بدین حالت تحوع به آدم دست میده. تا حالا توجه کردین که چرا فقط پزشکها به ایران بر میگردن؟

برگردیم به بحث خودمون.

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

برای دکتری خیلی ساده میشه از دانشگاههای خارجی پذیرش گرفت، میدونین چرا؟ یه پروفسور خارجی برای یه پروژه ملی میزانی پول میگیره و از دانشجوهای دیگه استفاده میکنه تا کار تموم بشه. در نهایت یه پروژه برای یه کشور دیگه، یه سرمایه برای دانشگاه خارجی و یه مدرک برای دانشجو. اما برای مملکت ما، یه نفر دکتر که تخصصی تو 10 درصد یه پروژه hi tech داره و چونکه مدریتی نداشته فقط همونجای پروژه رو بلده. یعنی هیچ چی.

۱ موافقین ۰ مخالفین ۰ ۲۱ فروردين ۹۳ ، ۱۸:۴۴
حامد شیخلو
این عنوان یک سخنرانی در سال 1996 در کنفرانس تکنیکال سالانه usenix هستش که توسط آقای John Osterhout از شرکت SUN ارائه شد.
شاید بشه این کنفرانس رو در همین یک عکس خلاصه کرد:
همگام سازی بین نخ های پردازشی بسیار سخت هستش، و بیشتر زمانها خودش یک مشکل اساسی میشه. اما توسعه دهندگان در مدت چاپ این مقاله تا زمان حاضر، بسیاری از این مشکلات رو حل کردن و کار کردن با نخ ها (ساختن و محول کردن کار) بسیار راحت تر شده. اما اگر دیدمون رو شبیه به نویسنده این مقاله بکنیم، میبینیم که وضعیت زیاد هم خوب نشده.
در کارهای سنگین، شما یاسد حساب کلاک ساعت ها رو بکنین، مثلا اینکه یک برنامه محاسباتی سنگین رو با یک زبان سطح پایین با حداکثر بهینه سازی بنویسین تا کمترین کلاک ساعت از بین بره. یا مثلا، تعداد فراخوانی سیستم رو پایین بیارین تا سربار context switch حداقل بشه. ترند تکنولوژی هم به این سمت بوده، اما با انجام بررسی ها مشخص میشه که هنوز یک برنامه نویس خوب، خیلی خیلی بهتر از یه نرم افزار میتونه بهینه سازی انجام بده (البته منظورم کارایی مثل باز کردن حلقه و این جور چیزا که کامپایلرها انجام میدن نستش).
یک برنامه نوبس سیستمی، هیچ وقت کاری که نمیدونه چطوری انجام میشه رو قبول نمیکنه
۱ موافقین ۰ مخالفین ۰ ۱۵ فروردين ۹۳ ، ۲۰:۳۵
حامد شیخلو
در این مقالات قصد دارم درباره SCADA و امنیت اون مطلب بنویسم.
کلمه SCADA مخفف Supervisory Control and Data Acqusition میباشد. شبکه اسکادا وظیفه کنترل و مونیتور کردن کاربردهای حیاتی و پروسه های کنترلی را در کارخانه ها، خطوط تولید و همچنین ژنراتورهای انرژی مانند الکترونیک، گاز طبیعی، نفت، آب و همچنین کنترل خطوط راه آهن و کارهای مشابه را بر عهده دارد.
توسعه اسکادای اولیه مربوط میشود به دهه 19، زمانی که ابزارهای اندازه گیری و کنترل معرفی شدند. با استفاده از این ابزارهای امکان انتقال و مونیتوز کردن داده های بدست آمده از حسگرهای زمان حقیقی بوجود آمد. اسکادا برای کنترل این ابزارهای الکترونیکی موجود، مورد استفاده قرار گرفت.
اجزای اصلی یک شبکه اسکادا شامل موارد زیر است:
  • RTU-Remote terminal unit: یک ابزار مورد استفاده برای تبدیل داده های آنولوگ و اندازه گیریهای دوره ای به اطلاعات دیجیتال، برای مثال دستورات مربوط به با کردن یک سویچ.
  • IED-Intelligent electronic device: یک کنترلر بر پایه ریزپردازنده که توانایی صادر کردن دستورات کنترلی را دارد. برای مثال قابلیت تغییر ولتاژ برای کی دستگاه در صورتی که یک تغییر غیر ناخواسته در ولتای دستگاه احساس شود.
  • PLC-Programmable logic controller: مشابه قسمت RTU در کاری که انجام میدهد. این قسمت میتواند از طریق یک سیستم عمال بلادرنگ مدیریت شود.
  • HMI-Human machine interface: نمایش گرافیکی محیط کنترلی به مدیر را انجام میدهد.

اسکادا از چه پروتکل هایی استفاده میکند؟

اسکادا از پروتکل های زیادی استفاده میکند که عمومی ترین آنها شامل موارد زیر است:
  • OPC-object linking and Embedding for process control
  • ICCP-Inter-Control Center Protocol
  • Modbus
  • DNP3-Distributed Network Protocol version 3

OPC

پروتکل OLE برای Process Control که به آن OPC گفته میشود، یک استاندارد رابط نرم افزاری که برنامه های ویندوزی را قادر به ارتباط با ابزارهای سخت افزاری تجاری میکند. پروتکل OPC به صورت client/server پیاده سازی میشود. قسمت سرور OPC، یک نرمافزار است که کار تبدیل پروتکل ارتباطی سخت افزاری را به پروتکل OPC را انجام میدهد. قسمت کلاینت، شامل هر برنامه ای است که قصد اتصال به سخت افزار را دارد، مانند HMI. قسمت کلاینت از داده های سرور برای دریافت یا ارسال اطلاعات به سرور استفاده میکند.

ICCP

یک پروتکل لایه کاربرد است.این پروتکل اجازه انتقال اطلاعات به صورت بلادرنگ در یک شبکه گسترده(WAN) بین مراکز کنترل را میدهد. این پروتکل، اجازه انتقال اطلاعات query، اطلاعات monitoring، انتقال داده و زمانبندی بین کلاینت و طرور را میدهد.

Modbus

یک مجموعه خصوصیات پروتکل طراحی شده برای ساخت ابزارهای اتوماسیون استفاده شده با چندین ابزار دیگر و مرتبط با یکدیگر بر اساس رابط سریال RS485 و TCP/IP است. این پروتکل امروزه گسترده ترین استفاده را دارد و چندین پیاده سازی از آن وجود دارد.
  • Modbus RTU: در ارتباطات سریالی استفاده میشود. از یک CRC برای حفظ یکپارچکی پیغام استفاده میکند. عمومی ترین پروتکل پیاده سازی شده modbus است.
  • Modbus ASCII: در ارتباطات سریالی استفاده میشود و از کاراکترهای ASCII برای به منظور ارتباط پروتکلی استفاده میکند. دستورات این پروتکل با کولن (:) و یک (CR/LF) بعد از آن جدا میشود.
  • Modbus TCP/IP or Modbus TCP: از پروتکل TCP/IP برای ارتباط استفاده میکند و نیاز به checksum ندارد و این عمل توسط لایه پایین انجام میشود.
  • Modbus over TCP/IP or Modbus over TCP: مشابه Modbus TCP است، اما باید Checksum درون داده نیز قرار داده شود.
  • Modbus Plus: یک نسخه توسعه داده شده که نسخه هاس قبلی را نیز پشتیبانی میکند. این پروتکل نیازمند یک پردازنده کمکی برای پردازش سریع HDLC است. از یک زوج سیم با سرعت 1Mbps استفاده میکند.
توابع اصلی modbus را میتوان در جدول زیر مشاهده کرد:
01 Read coil status
02 Read input status
03 Read holding registers
04 Read input registers
05 Force single coil
06 Preset single register
07 Read exception status
15 Force multiple coils
16 Preset multiple registers
17 Report slave ID

DNP3

این پروتکل یک سیستم کنترلی Master/Slave است و برای نیازمندیهای صنایع الکترونیک و آب طراحی شده است. این پروتکل برای سهولت ارتباط بین چندین نوع داده دریافتی و ابزار کنترلی استفاده میشود.
در مطلب بعدی به بررسی حمله SCADA fuzzing میپردازیم.


۱ موافقین ۰ مخالفین ۰ ۱۴ فروردين ۹۳ ، ۱۷:۲۶
حامد شیخلو
برای نصب ویندوز یا هر سیستم عامل دیگه بر روی سیستمی که سی دی رام نداشته باشه، اولین راه که به ذهن آدم میرسه، استفاده از فلش هستش. اما اگر مشکل شما هم مثل مال من باشه که هم سی دی رام یکی از لبتاپ هام از کار افتاده و هم از فلش بوت نمیکنه(البته فلش هم ندارم:)) باید دنبال یه راه حل دیه باشین. حتما تو بوت سیستم دیدین که اگر سیستم عامل نباشه که بوت بشه، سعی میکنه که به DHCP سرور کانکت بشه. این برای استفاده از پروتکل PXE هستش. محیط Preboot Execution Environment  یک محیط برای بوت کردن سیستم از طریق شبکه و جدا از فضای ذخیره سازی هستش. مثلا برای سیستم های TC که نمیخوان براش هارد بزارن.
محیط ما مشابه عکس زیر خواهد بود:
۱۷ موافقین ۰ مخالفین ۰ ۱۱ فروردين ۹۳ ، ۱۶:۴۶
حامد شیخلو


این عنوان یک مقاله هستش که یکی از فولکولور علم کامپیوتر محسوب میشود. این مطلب در سال ۱۹۸۲ چاپ شد و نوشته از پست هستش.

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

یه جا در مورد سیستم عامل محبوب یک برنامه نویس واقعی صحبت میکنه، به نظر نویسنده بهترین سیستم عامل برای برنامه نویس os/379 هستش. حتی unix هم به نظرش خیلی خوب نیست و برنامه نویس از تمام جنبه سیستم باخبر نمیشه.

ساختار داده غیر از ارایه، یک تغییر مدیریتی بر روی ارایه هستش. مثلا رشته، یک ارایه از کاراکتر هستش. به نظر نویسنده نیازی به این ساختارهای جدید نیست.

اما جالب ترین جای مقاله به نظر من، مقایسه دانشگاه با کار واقعی هستش. نویسنده میگه بعد از دانشگاه فکر میکردم بهترین برنامه نویس دنیا هستم و یه برنامه خیلی پیچیده رو به ۵ زبان میتونستم بنویسم. ۱۰۰۰ خط کد رو بدون خطا مینوشتم. اولین کار واقعی که بهم دادن، فهم یه برنامه ۲۰۰،۰۰۰ خطی فرترن بود و بهینه سازی اون برای سرعت دو برابر.

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

خوانده شود: نفخ نرم افزار

((شرمنده، چونکه با موبایل نوشته بودم یکم غلط املایی داشت))

۰ موافقین ۰ مخالفین ۰ ۰۸ فروردين ۹۳ ، ۰۰:۴۳
حامد شیخلو
۱ موافقین ۰ مخالفین ۰ ۲۹ اسفند ۹۲ ، ۱۳:۳۹
حامد شیخلو

صفحه مربوط به درس سیستم عامل در ترم پاییز سال 92 در وبسایت zcs راه اندازی شد.

تمرینات در این صفحه قرار خواهد گرفت و جوابها در همانجا ارسال خواهد شد.

کلید مربوط به ثبت نام در کلاس اعلام شده است، در صورت نیاز ایمیل بزنید تا ارسال کنم.

۰ موافقین ۰ مخالفین ۰ ۲۳ اسفند ۹۲ ، ۱۴:۵۴
حامد شیخلو

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

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

مهندسی نرم افزار عبارت هستش از علم یک مهندس در پیش بینی یک روند و هنر اون در کنار هم قرار دادن موارد غیر قابل اعتماد و غیر قابل محاسبه در بدست آوردن یک محصول قابل اطمینان. حالا منظور از غیر قابل اطمینان یعنی چی؟ در مواردی که شما با یک عنصر فیزیکی طرف هستید، میزان فاکتورهای اون قابل اندازه گیری و همچنین میزان تغییر اون قابل محاسبه هستش. مثلا یک میله فلزی میزان مقاومت و همچنین میزان انبساط و انقباظ مشخص داره که در آزمایشگاه قابل محاسبه هستش. اما در مورد نرم افزار، شما چندین مدل پردازنده، چندین مدل حافظه نهان، اصلی و جانبی و بستر ارتباطی متفاوت دارید که هر کدام مشخصه های فیزیکی متفاوت دارند. این یک طرف قضیه که فرض کنیم مربوط به سخت افزار هستند(البته این فرض صحیح نیست).

شما یک بستر به نام سیستم عامل بر روی بستر سخت افزاری با انواع مختلف دارین که این تفاوت در نهایت باعث تغییر در مشخصه های لایه بالاتر میشود. برای مثال 1 ثانیه در یک سیستم، با 1 ثانیه در سیستم دیگر یا حتی همان سیستم در زمان های مختلف یکسان نیست (رجوع شود به بحث زمانسنج با رزولوشن بالا). پس شما زمان تضمین شده هم ندارید.

یک مقاله معتبر در علم کامپیوتر وجود دارد که مبحث اون خیلی ساده هستش، "تضمین اجرای یک فرآیند قبل از فرآیند دیگر". مفهوم خیلی ساده هستش و راه حل اون مقاله تعریف یک مفهوم با عنوان "happens before" هستش. این هم مشکل دوم، شما تعداد بسیار زیاد فرایند دارید که میخواهید یکی قبل دیگری انجام شود، اما تضمین روشی که باعث کاهش سرعت هم نشود یک مساله مهم است.

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

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

مهمترین مشکل، هزینه یک نرم افزار چگونه محاسبه شود. چیزی که نمیتوانیم تمامی جزئیات آن را ببینیم چگونه هزینه تعیین کنیم؟ طول زمان کاری بستگی به علم مهندس دارد. حجم نرم افزار بستگی دارد به مثلا فایل های مدیای درون آن. میزان خط کد بستگی دارد به تعداد صفحات یک نرم افزار و بستگی به علم اون نداره (مثلا یک مهندس خوب میتونه تو تعداد خطوط کم یک کار مشخص رو انجام بده).

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

۰ موافقین ۰ مخالفین ۰ ۲۱ اسفند ۹۲ ، ۱۲:۵۱
حامد شیخلو

حاج کاظم، خودت هم با عباس برو

بر خلاف عادت، این بار غیر کامپیوتری مینویسم.

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

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

ایشون یه کلیپ خوندن با صدای نه چندان دلنوازشون که تحلیل های خوبی براش نوشته شده. از اون ور رفته با خودشیفته فراهانی یه کلیپ برای تبلیغ یه امور خیریه بازی کردن (نیت بسیار خوب، اما مرده شور اجرا رو ببرن).

یه سوال، اگر امثال بهرام رادان، گلزار، و امثالهم نباشن، سینما بهتر میشه یا بدتر؟

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

من نمیدونم، آقا تو سال، 20 تا فیلم خوب (نه لودگی جلوی دوربین) بسازین، به خدا 30 40 درصد مردم میرن اون 20 تا رو نگاه کنن. عوض این n تا فیلم که 1 درصد مردم برن نگاشون کنه.

سینمای ما بی ارزش شده، از هو کردن و توهین کردن به آقای حاتمی کیا، تا ایجاد مشکل تو اکران شیار 143.

این مطلب داخل پرانتز هستش ->(مانتو و شال خانوم فولادوند، به نظرم عاریه ای بودش، اونجا دادن بهش، تهمت نشه ها، اما اصلا نه رنگش نه ترکیبش و نه به کفش پاشنه بلندشون  هیچ کدوم به هم نمیومد :))))

۲ موافقین ۰ مخالفین ۰ ۱۰ اسفند ۹۲ ، ۰۱:۰۰
حامد شیخلو

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

لیست مقالات رو میتونین از اینجا ببینید.

۰ موافقین ۰ مخالفین ۰ ۰۶ اسفند ۹۲ ، ۱۰:۰۳
حامد شیخلو