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

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

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

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

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

اول صورت مساله ای که برای خودم پیش اومد رو توضیح بدم و بعدش راه حل.

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

احتمالا از vmware workstation استفاده کردین. با استفاده از این نرمافزار میشه چند تا سیستم عامل رو روی یک سیستم به صورت همزمان اجرا کرد و با همدیگه کار میکنن. به این مدل مجازی سازی میگن hardware level virtualization. حالا فرض کنین که سیستم عامل میزبان (یعنی همون سیستم عاملی که workstation رو روی اون نصب کردین) حذف بشه و خود vmware workstation جای اون سیستم عامل رو بگیره. یعنی یک سیستم سخت افزاری، که سیستم عامل اون vmware workstation هستش و کل سیستم رو تبدیل میکنه به چند تا سیستم مجازی. به این حالت میکن hypervisor که esxi و esx هم یک نوع hypervisor هستن که شرکت vmware اونا رو عرضه کرده.

بعد از تهیه خود سیستم، نوبت به نصب سیستم عامل رو ماشین های مجازی هستش که بنابر نیاز ساخته شده. من میخواستم یه نسخه ubuntu رو نصب کنم. سرعت سرورهای خارجی معمولا خیلی بالا هستش (برای من بیش از 44MBps بودش، یعنی بیشتر از mbps360) اما سرعت این ور خیلی پایین هستش. طریقه نصب سیستم عامل در esxi به 3 طریق هستش (هم با vsphere میشه و هم با workstation):

  • قرار دادن سی دی نصب در داخت سی دی رام سیستم خودتون یا سرور
  • معرفی یک فایل ایمیج iso موجود در سیستم خودتون به عنوان مبدا نصب
  • بارگذاری فایل ایمیج iso به فضای ذخیره سازی سرور و نصب از طریق اون
حالا انشاا... بعدا طریقه نصب و کار کردن با vsphere رو میگم

معمولا به خاطر عدم اطمینان اتصال از روش سوم استفاده میکنم. پس اینجا صورت مساله انتقال یک فایل 500، 600 مگابایتی (در بعضی مواقع خیلی بیشتر) از طریق اینترنت به فضای ذخیره سازی esxi (به عنوان datastore شناخته میشه) هستش. با سرعت کم داخلی این کار خیلی خیلی زمان بر هستش.

یک راه بهتر این هستش که خود esxi این فایل رو دانلود بکنه. esxi بر مبنای لینوکس هستش، پس احتمالا بشه از خط فرمان استفاده کرد. در esxi یک خط فرمان کامل (البته نه در حد لینوکس همه منظوره) وجود داره. یعنی میشه با دستور wget یک فایل رو دانلود کرد. اما متاسفانه دسترسی از راه دور برای خط فرمان esxi (یعنی همون ssh) غیر فعال هستش.

اما روش فعال سازی:

  • ابتدا وارد فضای vSphere شوید
  • سرور ESXi خودتون رو انتخاب کنید
  • منوی configuration رو انتخاب کنید

  • از منوی سمت چپ، گزینه security profile رو انتخاب کنید
  • گزینه SSH رو انتخاب کنید و properties  رو انتخاب کنید

  • از پنجره ظاهر شده نحوه start شدن سرویس رو انتخاب کنید
۰ موافقین ۰ مخالفین ۰ ۲۳ مرداد ۹۳ ، ۰۰:۵۵
حامد شیخلو
فرض کنید یک سرویس رو به عنوان یک پیتزا در نظر بگیریم. حالا اگر بخوایم یک پیتزا بخوریم، چند تا راه داریم؟
  1. کلا خودمون همه چز رو (خمیر و این جور چیزا) رو درست کنیم
  2. مواد اولیه رو از بیرون بخریم و خودمون درست کنیم
  3. از بیرون سفارش بدیم
  4. بریم بیرون تو رستوران و پیتزا بخوریم
حالا بحث سرویس هم مثل اون هستش.
  1. همه کار رو خودمون بکنیم
  2. زیر ساخت رو از بیرون بگیریم
  3. محیط رو از بیرون بگیریم
  4. کل سرویس رو از بیرون بگیریم
۰ موافقین ۰ مخالفین ۰ ۱۰ مرداد ۹۳ ، ۲۳:۴۹
حامد شیخلو

یک اصل اساسی در امنیت یک شبکه،‌ این است که تنها سرویسهای اصلی در آن فعال باشد. هر سرویس اضافی در شبکه به منزله یک مسیر نفوذ برای هکرها خواهد بود.

موار  زیادی وجود دارد که یک سیستم (یا شبکه ) نیازمند مسیر دوطرفه ارتباط نمیباشد. در این موارد، سیستم مورد نظر تنها نیازمند دریافت یا ارسال داده است.

اتصال یک طرفه برای شبکه

در یک شبکه یک طرفه،‌ اتصال به صورت ارسال داده یا فقط دریافت داده است، اما در هر دو جهت انجام نمیگیرد. یک منبع داده اطلاعات خود را به یک یا چند مقصد میفرستد، اما مقصد داده نمیتواند در جواب داده ای را ارسال کند. ایده اصلی این شبکه خیلی هم جدید نیست، اما متاسفانه در کشور ما تا حد زیادی ناشناخته مانده است. ایده اولیه این شبکه به اواخر دهه پنجاه باز میگردد اما به صورت رسمی در سال ۱۹۹۷ یک گروه با عنوان  UDLR (UniDirectional Link Routing) برای فراهم اوردن استاندارد ها و اصول شبکه بندی برای این شبکه ها تشکیل شد

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

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

اتصالات در شبکه های یکطرفه

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

خود پروتکل ip یک پروتکل غیر اتصالی است. پروتکل tcp بر روی ip یک پروتکل اتصالی است. پروتکل udp بر روی ipاما یک پروتکل غیر اتصالی است، بنابراین این پروتکل بسیار برای شبکه یکطرفه مناسب خواهد بود. به پروتکل  udp اصطلاحا send-and-prey گفته میشود. سیستم ارسال کننده هیچ ایده ای از اینکه برای بسته ارسالی چه اتفاقی افتاده ندارد.

دیود داده

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

یک مثلا

این مطالب بالا ترجمه بود، و من هم ترجمم بده. کجای شبکه از این روش میتوان استفاده کرد؟ یکم عجیب هستش که تو شبکه از یک جایی داده نیاد، پس چطوری مدیریت بشه. یک مثال خیلی ساده برای کاربرد این تکنولوژی.

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

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

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

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

توسعه یک سیستم در نهایت چه تاثیری بر جنبه های متفاوت آن خواهد داشت؟ تعداد سرورها مشخصا با تعداد کاربران بیشتر خواهد شد، این یک مساله مشخص است. یکی مثال بسیار  خوب در این زمینه سیستم whatsApp هست. در ادامه یک مساله جالب در توسعه این سیستم را بررسی میکنیم.

Obviously much bigger in every dimension, except the number of engineers. More boxes, more datacenters, more memory, more users, and more scale problems. Handling this level of growth with so few engineers is what Rick is most proud of: 40 million users per engineer. This is part of the win of the cloud. Their engineers work on their software. The network, hardware, and datacenter is handled by someone else.

یک آماری هم از وضعیت این سرویس

  • 465 میلیون کاربر به صورت ماهانه
  • 19 میلیارد پیغام ورودی/40 میلیارد پیغام خروجی به صورت روزانه
  • تعداد 147 میلیون اتصال همزمان

اما سوال اصلی: چطور توسعه سیستم به اندازه چندین برابر اما بدون تغییر در تعداد مهندسان؟

اما جواب: واقعا مهندس هستن( جواب اصلی )

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

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

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

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

  • قطع کردن اتصال حافظه ذخیره سازی به صورت ناگهانی، مثلا کشیدن فلش
  • ممکن است که برق سیستم قطع شود
  • هسته کرش کند یا سیستم به یکباره ریبوت شود. این مساله بسیار کم بوجود میاید
  • کاربر ممکن است دکمه ریست را فشار دهد
در مراحل boot، سیستم لینوکس دستور fsck را اجرا میکند. کار این برنامه بررسی کردن سیستم فایل و رفع خطاهای احتمالی است. در شرایطی که سیستم یک روند خاموش شدن عادی دارد، قبل از خاموش شدن سیستم تمامی دیست ها unmount میشوند، در این شرایط fsck حالت "clean" را برگشت میدهد (حتما کرنل داده ها را به درستی نوشته است). زمانی که سیستم فایل mountمیشود، این نشانگر حذف میشود.

اگر یکی از حالات ذکر شده قبلی برای سیستم اتفاق بیافتد، پرچم "clean" برای فایل سیستم ست نخواهد شد و باید fsck برای سیستم فایل اجرا شود. همچنین برای جلوگیری از خطای احتمالی، به صورت دوره ای هم دستور fcsk اجرا میشود.

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

***An error occurred during the file system check.
***Dropping you to a shell; the system will reboot
***when you leave the shell.
Give root password for maintenance
(or type Control-D for normal startup):

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

(Repair filesystem) #

در این کاملد لاین باید فرمان مربوط به بررسی فایل سیستم وارد شود.

برای بررسی تمامی سیستم فایل ها، فرمان زیر را وارد کنید:

fsck -y /

با سویچ "y" شما ریسک رفع خطا و مشکلات ناشی از آن را قبول میکنید.

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

در سیستم فایل های ژونالیست، مانند extX ها، احتمال خرابی دیست بسیار کم است. در این فایل سیستم ها معمولا از تمامی کارکرد های سیستم مانند پایگاه داده ها لاگ نگه داری میشود.

۰ موافقین ۰ مخالفین ۰ ۱۷ تیر ۹۳ ، ۱۱:۱۹
حامد شیخلو
فرض کنید که میخواهید درستی ساختار یک متن پیچیده رو بررسی کنید، مثلا ببینید که آدرس آی پی وارد شده درست هستش یا نه، و یا مثلا میخواهید قسمتی از یک متن رو جدا کنید. در این حالت 2 راه حل دارید. 
اول اینکه کاراکتر ها رو جدا کنید و با توکن درستی متن رو بررسی کنید. شبیه کارهایی که تو کامپایلر انجام میشه.
راه بهتر استفاده از regular expression هستش. در این حالت شما یک قالب برای متن خود میسازید و متن خود را با آن مقایسه میکنید. نوشتن این قالب بسیار ساده هستش، اما فهمیدن اون و در نتیجه اشکال زدایی آن سخت هستش. مثلا قالب زیر برای شناسایی آدرس آی پی
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
  (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
راه حل این مشکل یک وبسایت ساده هستش که به صورت زنده قالب شما رو روی متن دلخواه شما اعمال میکنه و نتیجه رو راحت میتونین ببینین.
اما ایرادش چیه؟
مثل همیشه، با فارسی مشکل داره
۲ موافقین ۰ مخالفین ۰ ۰۹ خرداد ۹۳ ، ۲۱:۰۹
حامد شیخلو
سالهاست که دلیل عدم پبشرفت صنعت نرم افزار کشور، نبود قانون کپی رایت عنوان میشه.
اما تو یک زمینه کپی رایت رعایت شده، تو زمینه اندروید با مارکت هایی مثل بازار. این مساله واقعا خوب هستش. اما به مواردی توحه نشده هستش که بحران نرم افزار جدیدی بوجود میاره که شاید فقط ار ایرانی ها بر بیاد
استفاده کنندگان نرم افزار اندروید، اشخاص کاملا ناآشنا با نرم افزار هستن. نتیجه میشه پایین آمدن کیفیت نرم افزار.
حالا این مساله بر میگرده به سیاست مارکت های داخلی که فقط سود خودشون هستش.
اما از این مساله بدتر که واقعا باید فکری براش بشه، سایت های بررسی نرم افزار هستش، من همیشه برای یه بررسی ارزش قائل بودم، مخصوصا خارجی ها، اما شاید باورتون نشه، تو ایران بررسی فروشی هستش. سری به سایت appreview.ir بزنین و پیشنهاد الکی بدین، ببینین چه ایمیلی میفرسته.
فرض کنید سایتی مثل notebookcheck.net پول بگیره تا برای asus بررسی بنویسه !!!! در ایران این امکان وجود داره.
اما راه حل چیه؟
سپردن کاری به نهاد دولتی وضعیت رو بدتر میکنه، اما چرا ما سازمانی با عنوان دفاع از حقوق مصرف کنندگان در زمینه نرم افزار نداریم؟
قانون حق کپی رایت داریم، اما قانونی برای اینکه کسی بیاد و محصولی بدون قابلیت ذکر شده به مردم بده وجود نداره. پول میشه گرفت اما در مقابل محصول پاسخگویی وجود نداره. برای وبسایت ها هم همچنین.
ما فرهنگ استفاده از نرم افزار و موبایل رو نداریم. ما بدون طی کردن فاصله دهه 60 تا 90 صاحب کامپیوتر شدیم.
ما یه جزیره هستیم که یه هواپیما بعضی وقتا چیزایی میندازه برامون که کسی یادمون نداده چطور استفاده بکنیمش.
وبلاگ تو ایران شده دفترچه خاطرات. واقعا چند تا وبلاگ تخصصی داریم تو ایران؟
وبسایت های پر طرفدار ما بیشتر شبیه دارالترجمه هستن
و مشابه همین چیزا

۰ موافقین ۰ مخالفین ۰ ۰۳ ارديبهشت ۹۳ ، ۰۰:۵۴
حامد شیخلو

مژده که گل  باغ   رسول   آمده است

زهرای بتول،دخت رسول   آمده است

در هر دو جهان شادی و غوغا برپاست

نوری   ز  خدا  بهر  رسول   آمده است


ولادت حضرت زهرا و روز مادر مبارک


برگرفته شده از khademolhosein.blog.ir

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

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

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

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

حتما بخوانید، واقعا معرکه هستش

مطلب

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