زیر ویرایش های ۳۰ و ۳۱

امروز چند تا کار کوچلو روی سیستم عامل انجام دادم. اول از همه اسکریپت های مربوط به شبیه سازی و کامپایل رو به روز کردم که با ویرایش های جدید سیستم عامل ها و گراب کار کنه. حالا دیگه لازم نیست که تصویر فلاپی برای سیستم عامل بسازیم تا بتونیم اجراش کنیم، می شه به کمک منوهای run.sh تصویر cd-rom هم ساخت و این باعث می شه که سیستم عامل رو بشه روی سیستم های جدید هم اجرا کرد.  همینطور یه باگ رو داخل heap برطرف کردم. کلا قسمت مدیریت حافظه سیستم عامل یکسری ایرادات داره که باید سر فرصت بشینم برطرفشون کنم.

فعلا چیزی که متوجه شدم اینه که gcc 4.8 یکسری بهینه سازی انجام می ده که می تونه به کد نهایی آسیب بزنه برای همین دارم خیلی از قسمتهای اسمبلی (مخصوصا توکار) رو از اول می نویسم. امیدوارم ایرادات رو به زودی حل کنم.

ارسال شده توسط پویا شاهین فر در تاريخ ۷ شهریور ۱۳۹۵. نظر بدهيد.

زیر ویرایش ۲۹ و ۳۰

در این زیر ویرایش ها موتکس (mutex)  و لیست پیوندی(link list) برای استفاده در فایل سیستم اضافه شد.

یه باگ در کانتینر صف گرفته شد و همینطور یه پارامتر به تابع strcpy اضافه شد تا عملیات کپی رشته  با امنیت بیشتری انجام شه.

 

به احتمال زیاد زیر ویرایش بعدی برای VFS خواهد بود. که از ساختار لینوکس با اعمال یکسری تغییرات جزئی استفاده خواهد شد. مثل لینوکس برای نگهداری ساختار از ساختمان داده های inode و dentry و superblock استفاده می کنم. با این تفاوت که مجوزها رو از شی inode به dentry انتفال دادم. این قضیه باعث میشه که هر لینک سخت بتونه مجوزهای جداگانه داشته باشه. به این شکل گروه های کاربری مختلف می تونن لینک های سخت خودشون با دسترسی های مختلف رو داشته باشن.

البته یه ساختار mask هم در inode نگهداری میشه تا سیستم امنیت رو بتونه حفظ کنه و مجوزهای فایل به راحتی تغییر نکنه. یعنی اگر مالک تمامی مجوزهای ماسک رو بده شما امکان تغییر بقیه مجوزها رو در لینک خودتون دارید اما در غیر این صورت امکان صدور مجوزها در لینک های خودتون نیست. به عنوان مثال فرض کنید مالک مجوز ماسک ۷۷۷ رو داده و شما یه لینک سخت با مجوز ۱۱۱ برای یه گروه خواص در دایرکتوری خودش ایجاد میکنید. حالا این گروه در دایرکتوری خودش فقط امکان خوندن اون فایل رو داره.

یه آیتم دیگه که در نظر دارم اما فعلا اضافه نمیکنم union directory سیستم عامل plan9 است. که باعث میشه هر فایل چند اسم داشته باشه که اگر مثلا در سیستم بصورت لوکال وجود نداشته باشه اتوماتیک از مسیرهای داده شده بهش از روی شبکه و … فچ شه. (این قضیه بیشتر به سیستم های توزیع شده مربوط هست که فعلا در برنامه توسعه قرار نداره. اما در آینده حتما روش سوئیچ میشه.)

نمی دونم چقدر این ساختار می تونه درست باشه؟! اما به نظرم بهتر از لینوکس ( و یونیکس) هست. منتظر نظرات شما دوستان عزیز هستم. (راستی این مورد فقط برای hard link ها هست.)

ارسال شده توسط پویا شاهین فر در تاريخ ۹ تیر ۱۳۹۳. ۱۵ نظر.

زیر ویرایش ۲۸

تعدادی از دوستان طی چند ماه اخیر با ایمیلهایی که زده بودن اعلام کردن که آراکس در برخی از سیستم ها کامپایل نمیشه با پیگیری هایی که کردم متوجه شدم آراکس با سیستم های ۶۴ بیتی مشکل داره. بنابراین اسکریپتهای کامپایل رو به روز رسانی کردم.

دوستانی که سیستم عامل ۶۴ بیتی دارن در ابتدا باید مقدمات کامپایل برنامه های ۳۲ بیتی را در آن را فراهم کنن. به عنوان مثال برای توزیع ابونتو می تونید با دستور زیر اینکار رو انجام بدید:

sudo apt-get install gcc-multilib libc6-dev-i386

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

  1. تصویر آماده رو از آدرس http://www.araxos.ir/files/image.zip دریافت کنید.
  2. محتویات اون رو در آدرس پوشه bin در مسیر سورس آراکس کپی کنید.
  3. اسکریپت run.sh رو اجرا کنید و وارد تنظیمات کلی بشید.
  4. مقدار Image رو از Create به update-only تغییر بدید.

 

ارسال شده توسط پویا شاهین فر در تاريخ ۲۶ خرداد ۱۳۹۳. ۶ نظر.

زیر ویرایش ۲۷

سلام مجدد

svn با زیر ویرایش ۲۷ به روز شد:

 

  1. اسکریپت های اجرا با qemu و ابونتو ۱۲٫۰۴ سازگار شد.
  2. دو باگ در قسمتهای مدیر حافظه و پردازنده گرفته شد.

ظاهرا سیستم عامل فعلا stable شده پس تصمیم دارم کار نوشتن فایل سیستم رو شروع کنم. کتاب تتباوم رو که مطالعه میکردم چند تا ایده خوب برای فایل سیستم و API به ذهنم رسید که باید در مورد عملی شدن و ابعاد اونها بیشتر بررسی کنم. به احتمال زیاد این ایده ها رو اول مقاله کنم و بعد در سورس قرارشون بدم

ارسال شده توسط پویا شاهین فر در تاريخ ۲۸ دی ۱۳۹۲. ۵ نظر.

Plan9

Plan9 یه سیستم عامل دیگه از آزمایشگاهای بل با ایده های جدید

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

سیستم عامل قبلی بل یعنی یونیکس بشکل فزاینده ای دنیای امروزی صنعت کامپیوتری رو تغییر داد اما این دفعه کن تامپسون و گروهش سیستم عامل دیگه ای که اسمش کمتر شنیده شده رو معرفی کردن. اسم این سیستم عامل نقشه ۹ (Plan9) است. مبنای طراحی یونیکس بیشتر از سیستم های توزیعی نشات می گرفت اما هیچ وقت این سیستم عامل نتونست به معنای واقعی یک سیستم توزیعی ( با رعایت تمام اصول) رو پیاده سازی کنه. گروه تامپسون در Plan9 تصمیم گرفتن که قسمت بزرگی از مشکلات یونیکس رو برطرف کنند. تا این سیستم عامل هرچه بیشتر بتونه به اهداف اونها نزدیک بشه.

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

امروز من این سیستم عامل رو نصب کردم وشروع کردم به کار با اون. حتی یه برنامه ساده هم نوشتم. باید بگم که واقعا همه چی فرق کرده حتی برنامه نویسی C.
plan9_first_1

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

به هر حال در آینده بیشتر در مورد این سیستم عامل و ایده های مطرح شده در اون می نویسم. ( با اینکه دردسرش خیلی زیاده اما ازش خیلی خوشم اومده‌)

ارسال شده توسط پویا شاهین فر در تاريخ ۲ بهمن ۱۳۹۱. ۶ نظر.

منوی جدید

svn با ویرایشهای ۲۲،۲۳ و ۲۴ به روز شد.

برای کاربرهای لینوکس یه اسکریپت شل جدید اضافه کردم که امکان کامپایل، ایجاد تصویر سیستم عامل و اجرا و تنظیم کردن شبیه سازها رو فراهم می کنه. دلیل اضافه کردن این اسکریپت راحتر کردن کارهایی مثل ایجاد تصویر دیسک و اجرای شبیه سازهای مختلف هست. برای اجرای اسکریپت کافیه به کاربر ریشه سوپیچ کنید و بعد اسکریپت run.sh رو اجرا کنید.

در حال حاضر اسکریپت توانایی اجرای شبیه سازهای qemu و bochs رو داره اما در آینده قصد دارم که به کمک اون بشه از شبیه سازهای دیگه مثل virtual box هم بهره برد

در svn ویرایش ۲۴ یک باگ مربوط به PIT هم گرفته شده  که نه خودش رو توی qemu و نه سیستم واقعی نشون داده بود بلکه تنها در شبیه ساز bochs متوجه اون شدم.

 

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

ارسال شده توسط پویا شاهین فر در تاريخ ۱۶ آذر ۱۳۹۱. يك نظر.

دیباگ بزرگ

svn با ویرایشهای ۱۸، ۱۹، ۲۰ و ۲۱ به روز شد.

حتما می دونید که الان حدود یک سال هست که دارم با یک باگ سر و کله میزنم. امروز بالاخره تونستم اون باگ و تعداد زیادی از باگهای دیگه رو پیدا و حل کنم. مشکل بزرگی که وجود داشت داخل makefile پروژه بود. من گزینه -Wall کامپایلر رو فعال نکرده بودم و در نتیجه اخطارها بهم گزارش نمی شد. با فعال کردن این گزینه متوجه باگهای زیادی داخل کد شدم که اونها رو برطرف کردم.در حال حاضر مشکل خاصی داخل کد دیده نمیشه.

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

 

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

ارسال شده توسط پویا شاهین فر در تاريخ ۱۹ آبان ۱۳۹۱. ۳ نظر.

سمافورها

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

 

به احتمال زیاد مشکل مدیر حافظه از امن نبودن kmalloc و kfree در مقابل چند برنامه گی هست. منتها این موضوع رو باید بیشتر بررسی کنم. چون از spinlockها برای اتمیک کردن این دو تابع استفاده کردم و منتها جواب نداد. یه باگ دیگه در تخصیص صفحه جدید هست که بعد از تخصیص صفحه و استفاده از اون صفحه با خطای page fault رو به رو میشیم.

از اونجا که روی حافظه کار می کردم و مرتبا ازش track می گرفتم متوجه تخصیصهای متوالی داخل زمانبند سیستم (برای انتقال یک فرایند از یک صف به صف دیگه ) شدم که با بهینه کردن زمانبند هم این تخصیص های حافظه رو به حداقل رسوندم

ارسال شده توسط پویا شاهین فر در تاريخ ۱۱ شهریور ۱۳۹۱. ۴ نظر.

Arax OS تقلبی

با سلام

به تازگی یک توزیع لینوکس در ارمنستان با نام Arax OS بیرون داده شده که شباهت اسمی با سیستم عامل من داره. برخی از لینکهای این سیستم عامل تقلبی عبارتند از:

http://www.linkedin.com/company/arax-os

http://arax.arnet.am/

 

توی مرحله اول باید بگم که سیستم عامل من هیچ ارتباطی با این توزیع لینوکس و حتی خود لینوکس نداره. و از اونجا که از سال ۲۰۰۸ فعالیت سیستم عامل آراکس شروع شده و سال ۲۰۰۹ به این نام به تایید sf.net که یکی از منابع معتبر نرم افزارهای متن باز هست رسیده. هرگونه فعالیتی با این نام اجازه کتبی ادمینهای این سیستم عامل رو نیاز داره.

منتها همنطور که خودتون هم می دونید ارمنستان از لحاظ نرم افزاری هم یه جای بی در و پیکر مثل ایرانه و کپی رایت و … داخلش معنی نداره. شاید نتونم جلوی فعالیت این توزیع رو بگیرم اما فعلا از طریق sf.net پیگیر این قضیه شدم. ظاهرا توی چند سال اخیر هر کی دلش بخواد می تونه با اسمهای ایرانی و مالکیتهامون بازی کنه.

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

پیشاپیش از همکاری تمام دوستان کمال تشکر رو میکنم.

لینکهای سیستم عامل آراکس:

  • http://sourceforge.net/projects/arax/
  • http://www.araxos.ir
  • http://blog.araxos.ir
ارسال شده توسط پویا شاهین فر در تاريخ ۲۴ خرداد ۱۳۹۱. ۵ نظر.

تاخیر در انتشار

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

ارسال شده توسط پویا شاهین فر در تاريخ ۲۳ اردیبهشت ۱۳۹۱. ۶ نظر.