انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: 🇮🇷 در 10 خرداد 1400، 03:37 بظ
-
چند سوال درباره برنامه نویسی سیستمی (مثل برنامه نویسی سیستم عامل) دارم که گفتم اینجا بپرسم چون تعداد توسعه دهنده های اوبونتو اینجا زیاده.
۱. ما وقتی کدی رو می نویسیم، اجراش می کنیم تا مشکلاتش رو پیدا کنیم. یه سیستم عامل رو چطور میشه به طور مداوم تغییر داد و سپس اجرا کرد؟ چون اجرا کردن سیستم عامل به راحتی بقیه برنامه ها نیست.
۲. چقدر باید از چی سر دربیارم که بتونم وارد این حوزه بشم؟ باید اطلاعاتم از سخت افزار زیاد باشه؟ در چه حد باید برنامه نویسی بلد باشم؟
۳. چه راهنمایی هایی دیگری برای ورود به این حوزه دارید؟
ویرایش ۱:
۴. چه آموزشی (ترجیحا دوره ویدئویی) رو برای شروع این زمینه پیشنهاد میدید؟
-
چند سوال درباره برنامه نویسی سیستمی (مثل برنامه نویسی سیستم عامل) دارم که گفتم اینجا بپرسم چون تعداد توسعه دهنده های اوبونتو اینجا زیاده.
۱. ما وقتی کدی رو می نویسیم، اجراش می کنیم تا مشکلاتش رو پیدا کنیم. یه سیستم عامل رو چطور میشه به طور مداوم تغییر داد و سپس اجرا کرد؟ چون اجرا کردن سیستم عامل به راحتی بقیه برنامه ها نیست.
۲. چقدر باید از چی سر دربیارم که بتونم وارد این حوزه بشم؟ باید اطلاعاتم از سخت افزار زیاد باشه؟ در چه حد باید برنامه نویسی بلد باشم؟
۳. چه راهنمایی هایی دیگری برای ورود به این حوزه دارید؟
نیاز نیست بعد از هر تغییر دوباره بوت کنید می تونید از یک نرم افزار مجازی ساز مثل VirtualBox استفاده کنید
-
نیاز نیست بعد از هر تغییر دوباره بوت کنید می تونید از یک نرم افزار مجازی ساز مثل VirtualBox استفاده کنید
آخه بالاخره باید در مجازی ساز هم نصب کنم. هر بار این کار رو انجام دادن زیاد زمانبر نیست؟
-
چند سوال درباره برنامه نویسی سیستمی (مثل برنامه نویسی سیستم عامل) دارم که گفتم اینجا بپرسم چون تعداد توسعه دهنده های اوبونتو اینجا زیاده.
۱. ما وقتی کدی رو می نویسیم، اجراش می کنیم تا مشکلاتش رو پیدا کنیم. یه سیستم عامل رو چطور میشه به طور مداوم تغییر داد و سپس اجرا کرد؟ چون اجرا کردن سیستم عامل به راحتی بقیه برنامه ها نیست.
۲. چقدر باید از چی سر دربیارم که بتونم وارد این حوزه بشم؟ باید اطلاعاتم از سخت افزار زیاد باشه؟ در چه حد باید برنامه نویسی بلد باشم؟
۳. چه راهنمایی هایی دیگری برای ورود به این حوزه دارید؟
فکر میکنم اولین نیازمندیش این باشه که با یک زبان سطح پایین آشنا باشید. اسمبلی، C، C++ زبان های سطح پایین مشهوریند.
نکته بعدی اینکه شما باید برای سیستم عامل خودتون (مثال) باید یک بوت لودر استفاده کنید مثال بارزش هم همین گراب خودمونه بعدش میتونید بوتش کنید ببنید چه کردید.
-
البته زبانهای ++c/c دیگه سطح پایین محسوب نمیشن.
-
البته زبانهای ++c/c دیگه سطح پایین محسوب نمیشن.
درسته ولی بازم خیلی ممکنه به کارتون بیاد
-
۱. ما وقتی کدی رو می نویسیم، اجراش می کنیم تا مشکلاتش رو پیدا کنیم. یه سیستم عامل رو چطور میشه به طور مداوم تغییر داد و سپس اجرا کرد؟ چون اجرا کردن سیستم عامل به راحتی بقیه برنامه ها نیست.
سلام ابتدا باید ببینید دنبال چه هستید. در این مورد، شناخت آنچه نیازهست و درک اون، کمک به حل مسئله یا ساخت یک نمونه بهتر میکند.
پس بهتره ریز بشید در مسائل و ببینید دنبال چی هستید، اون کد روی اون بخش چه تأثیری قرار داشته باشه، کد بر روی چه بخشهای چه اثری میگذاره، دقیقا نیاز به بهبود توی چه زمینهای هست و ...
-
فکر میکنم اولین نیازمندیش این باشه که با یک زبان سطح پایین آشنا باشید. اسمبلی، C، C++ زبان های سطح پایین مشهوریند.
نکته بعدی اینکه شما باید برای سیستم عامل خودتون (مثال) باید یک بوت لودر استفاده کنید مثال بارزش هم همین گراب خودمونه بعدش میتونید بوتش کنید ببنید چه کردید.
گراب که دارم و همچنین برای زبان هم C/C++
-
سلام ابتدا باید ببینید دنبال چه هستید. در این مورد، شناخت آنچه نیازهست و درک اون، کمک به حل مسئله یا ساخت یک نمونه بهتر میکند.
پس بهتره ریز بشید در مسائل و ببینید دنبال چی هستید، اون کد روی اون بخش چه تأثیری قرار داشته باشه، کد بر روی چه بخشهای چه اثری میگذاره، دقیقا نیاز به بهبود توی چه زمینهای هست و ...
مشکل تشخیص مشکل نیست؛ زمان اجرا مد نظرم هست. هر بار اجرای کد سیستم عامل زمان خیلی زیادی مصرف نمی کنه؟ هر بار بوت سیستم عاملی که نوشتیم (حتی در مجازی ساز) فکر کنم خیلی زمانبر باشه. برنامه نویس های برنامه های سیستمی مخصوصا سیستم عامل هر بار این کار رو می کنن؟
-
سلام منظورتون از برنامههای سیستمی رو بدونم بهتر میتونم کمک کنم. یک نمونه مثال بزنید لطفا.
-
برای اجرای مجازی سیستمعاملها با سرعت بالا معمولا از QEMU استفاده میشه.
یک توصیه:
توسعهدهنده سیستمعامل serenity خیلی وقت هست که فیلمهای لحظه به لحظهٔ توسعه این سیستمعامل (شبهیونیکس) رو داخل کانال ویدیویی قرار میدهد که از طریق سایتهای داخلی هم قابل دسترسی هستند. این فیلمها شامل روش کدنویس، رفع خطاهای موجود، برطرف کردن آسیبپذیریها، افزودن ویژگی جدید یا حذف کدِ غیر ضرور، متصل کردن یک برنامه از پیش نوشته شده به این سیستمعامل، مصاحبه با اشخاصی که در نوشتن کدهای این سیستمعامل سهیم بودهاند و ... میشود:
https://github.com/SerenityOS/serenity
https://www.dideo.ir/ch/yt/UC3ts8coMP645hZw9JSD3pqQ/andreas-kling
-
wiki.osdev.org (http://wiki.osdev.org)
به این سایت یه سری بزنید.
از اونجایی که یک سیستم عامل یک اپلیکیشن نیست باید برای کامپایل کردن اون از یک کامپایلر متقابل (Cross compiler) استفاده کنید که آموزش ایجاد اون داخل همون لینک هست باید باتوجه به نوع سیستم عامل میزبان مراحل رو دنبال کنیدhttps://wiki.osdev.org/GCC_Cross-Compiler (https://wiki.osdev.org/GCC_Cross-Compiler) برای بوت لودر هم می تونید از گراب استفاده کنید فقط باید سیستم عامل شما با استادارد مولتی بوت همخوانی داشته باشه. بوت شدن سیستم عامل نوشته شده در ماشین مجازی زمان زیادی نمی بره معمولا کسی یاد نمی ده یک سیستم عامل کامل بسازیم باید خودتون تلاش کنید تا به نتیجه برسید مطالعه هم خیلی مهم هست اگه بخواهیم صرفا کد های دیگران رو کپی کنیم به این کارمون نمیشه گفت ساختن یک سیستم عامل. این لینک هم نگاه کنید https://wiki.osdev.org/Bare_Bones (https://wiki.osdev.org/Bare_Bones)
-
این لینک:
https://github.com/leowhitehead/basilica-os/tree/master
(https://github.com/leowhitehead/basilica-os/tree/master)
اگه همون کراس کامپایلر رو آماده کرده باشید با nasm بخش اسمبلی و با grub-common xorriso می تونید یک فایل iso بسازید باید make هم نصب کرده باشید با دستور make کامپایل می کنه و فایل ایمیج رو می سازه و با دستور make clean فایل های object, iso رو حذف می کنه
-
سلام منظورتون از برنامههای سیستمی رو بدونم بهتر میتونم کمک کنم. یک نمونه مثال بزنید لطفا.
مثل سیستم عامل
-
برای اجرای مجازی سیستمعاملها با سرعت بالا معمولا از QEMU استفاده میشه.
یک توصیه:
توسعهدهنده سیستمعامل serenity خیلی وقت هست که فیلمهای لحظه به لحظهٔ توسعه این سیستمعامل (شبهیونیکس) رو داخل کانال ویدیویی قرار میدهد که از طریق سایتهای داخلی هم قابل دسترسی هستند. این فیلمها شامل روش کدنویس، رفع خطاهای موجود، برطرف کردن آسیبپذیریها، افزودن ویژگی جدید یا حذف کدِ غیر ضرور، متصل کردن یک برنامه از پیش نوشته شده به این سیستمعامل، مصاحبه با اشخاصی که در نوشتن کدهای این سیستمعامل سهیم بودهاند و ... میشود:
https://github.com/SerenityOS/serenity
https://www.dideo.ir/ch/yt/UC3ts8coMP645hZw9JSD3pqQ/andreas-kling
ممنون از رفرنس هاتون. ان شاء الله استفاده خواهم کرد
-
wiki.osdev.org (http://wiki.osdev.org)
به این سایت یه سری بزنید.
از اونجایی که یک سیستم عامل یک اپلیکیشن نیست باید برای کامپایل کردن اون از یک کامپایلر متقابل (Cross compiler) استفاده کنید که آموزش ایجاد اون داخل همون لینک هست باید باتوجه به نوع سیستم عامل میزبان مراحل رو دنبال کنیدhttps://wiki.osdev.org/GCC_Cross-Compiler (https://wiki.osdev.org/GCC_Cross-Compiler) برای بوت لودر هم می تونید از گراب استفاده کنید فقط باید سیستم عامل شما با استادارد مولتی بوت همخوانی داشته باشه. بوت شدن سیستم عامل نوشته شده در ماشین مجازی زمان زیادی نمی بره معمولا کسی یاد نمی ده یک سیستم عامل کامل بسازیم باید خودتون تلاش کنید تا به نتیجه برسید مطالعه هم خیلی مهم هست اگه بخواهیم صرفا کد های دیگران رو کپی کنیم به این کارمون نمیشه گفت ساختن یک سیستم عامل. این لینک هم نگاه کنید https://wiki.osdev.org/Bare_Bones (https://wiki.osdev.org/Bare_Bones)
متشکرم از توضیحاتتون. نمی دونستم چنین سایتی هم وجود داره
-
دستور debootstrap هم شاید بدردتون بخوره. دیگه من همینقدر بلدم. ;D
-
دستور debootstrap هم شاید بدردتون بخوره. دیگه من همینقدر بلدم. ;D
این هم خوب بود. برای شروع خوبه
-
البته زبانهای ++c/c دیگه سطح پایین محسوب نمیشن.
https://www.quora.com/Is-C++-a-low-level-language (https://www.quora.com/Is-C++-a-low-level-language)
-
۱. ما وقتی کدی رو می نویسیم، اجراش می کنیم تا مشکلاتش رو پیدا کنیم. یه سیستم عامل رو چطور میشه به طور مداوم تغییر داد و سپس اجرا کرد؟ چون اجرا کردن سیستم عامل به راحتی بقیه برنامه ها نیست.
سیستمعامل یک نرمافزار نیست، بلکه مجموعهای از نرمافزارها هستش. در نتیجه هر بخش اون رو میشه تست کرد. میتونه روی کامپیوتر تست بشه، یا روی ماشین مجازی.
همچنین نرمافزار رو همیشه دستی تست نمیکنند. مثلا وقتی نرمافزار یک فضاپیما نوشته میشه، از شبیهساز برای تست اون استفاده میشه، چون نمیتونن چندینبار یک فضاپیما رو بفرستند فضا که تستش کنند :)
۲. چقدر باید از چی سر دربیارم که بتونم وارد این حوزه بشم؟ باید اطلاعاتم از سخت افزار زیاد باشه؟ در چه حد باید برنامه نویسی بلد باشم؟
بستگی به بخشی داره که میخواید توسعه بدید. در مورد همون بخش باید اطلاعات داشته باشید. قاعدتا شناخت سیستم و برنامهنویسی هم لازمه.
۳. چه راهنمایی هایی دیگری برای ورود به این حوزه دارید؟
ابتدا الگوریتمها و برنامهنویسی رو یاد بگیرید، بعد کتابهایی در زمینهٔ سیستمعامل و معماری کامپیوتر بخونید.
۴. چه آموزشی (ترجیحا دوره ویدئویی) رو برای شروع این زمینه پیشنهاد میدید؟
ویدیو حجم اطلاعاتی که در مقابل کتاب انتقال میده بسیار کمه و برای موضوعات تخصصی بهتره سراغ کتابها برید.
-
۱. ما وقتی کدی رو می نویسیم، اجراش می کنیم تا مشکلاتش رو پیدا کنیم. یه سیستم عامل رو چطور میشه به طور مداوم تغییر داد و سپس اجرا کرد؟ چون اجرا کردن سیستم عامل به راحتی بقیه برنامه ها نیست.
سیستمعامل یک نرمافزار نیست، بلکه مجموعهای از نرمافزارها هستش. در نتیجه هر بخش اون رو میشه تست کرد. میتونه روی کامپیوتر تست بشه، یا روی ماشین مجازی.
همچنین نرمافزار رو همیشه دستی تست نمیکنند. مثلا وقتی نرمافزار یک فضاپیما نوشته میشه، از شبیهساز برای تست اون استفاده میشه، چون نمیتونن چندینبار یک فضاپیما رو بفرستند فضا که تستش کنند :)
۲. چقدر باید از چی سر دربیارم که بتونم وارد این حوزه بشم؟ باید اطلاعاتم از سخت افزار زیاد باشه؟ در چه حد باید برنامه نویسی بلد باشم؟
بستگی به بخشی داره که میخواید توسعه بدید. در مورد همون بخش باید اطلاعات داشته باشید. قاعدتا شناخت سیستم و برنامهنویسی هم لازمه.
۳. چه راهنمایی هایی دیگری برای ورود به این حوزه دارید؟
ابتدا الگوریتمها و برنامهنویسی رو یاد بگیرید، بعد کتابهایی در زمینهٔ سیستمعامل و معماری کامپیوتر بخونید.
۴. چه آموزشی (ترجیحا دوره ویدئویی) رو برای شروع این زمینه پیشنهاد میدید؟
ویدیو حجم اطلاعاتی که در مقابل کتاب انتقال میده بسیار کمه و برای موضوعات تخصصی بهتره سراغ کتابها برید.
متشکرم