انجمنهای فارسی اوبونتو
تازه کار => انجمن تازهکاران => نویسنده: dele در 28 امرداد 1399، 11:03 بظ
-
سلام
سوالم مربوط به اوبونتو نیست و در مورد کرنل لینوکس هست.
چیزی که من دیدم، یک هسته سیستم عامل برای تمامی معماری های مختلف استفاده میشه. آیا هسته لینوکس برای هر معماری سخت افزاری تفاوت داره؟ (البته که تفاوت داره اما چه جوری؟)
مثلا من رفتم سایت اصلی که هسته رو دانلود کنم اما نسخه های متفاوت برای هر معماری رو ندیدم.
و اینکه آیا تمامی مفاهیم سیستم عامل (حافظه مجازی، مدیریت فرآیند، چند نخی و ...) برای همه معماری ها پیاده سازی میشه و یکسانه؟ برای مثال بعضی از معماری های ARM که ضعیف تر از x86 یا x64 هستند، دلیلی ندارند همه مفاهیم پیچیده سیستم عامل رو پشتیبانی کنند. راه حل هسته لینوکس چیه؟
من خودم فکر میکنم که یا خودمون باید هسته رو بنا به نیاز ویرایش کنیم، یا اینکه خود جامعه لینوکس این کار رو از قبل کرده (ولی من چیزی پیدا نکردم)
امیدوارم تونسته باشم منظورم رو برسونم.
-
سلام!
موقع دانلود توزیع، اصولا مینویسه کدوم معماری رو پشتیبانی میکنه.
ولی اگه خودتون بخواید هسته رو کامپایل کنید، باید این رو اونجا مشخص کنید.
لیست بلندبالایی از هستههایی که پشتیبانی میکنه اینجاست:
https://en.m.wikipedia.org/wiki/List_of_Linux-supported_computer_architectures
این ویدیوی کامپایل هسته از جادی رو هم ببین. اتفاقاً در این مورد داخلش توضیح داده بود:
https://www.aparat.com/v/p2vTx/
-
تو خیلی لایه های کرنل تفاوتی نیستش. یه چیزای خاصی هستن که اونا تو خود سورس کرنل هستن موقع بیلد شدن فعال یا غیرفال میشن. میتونی تو شاخه ی arch توی سورس کرنل ببینیشون.
مثلا بعضی اینستراکشن ها عوض میشه یا بعضی عددای جادوئی.
وقتی بیلد میکنی هسته رو دیفالت بر اساس معماری سیستمت برای اون معماری خودت بیلد میکنه. ولی میتونی خودت انتخاب کنی معماری که میخوای رو و کراس کامپایل کنی.
مسائل مموری منیجمنت و اینا هم اکثرا برای معماری ها فرق ندارن مثلا فایل سیستم ها و ...
-
آیا هسته لینوکس برای هر معماری سخت افزاری تفاوت داره؟ (البته که تفاوت داره اما چه جوری؟)
قسمتی از کدها متفاوته و هنگام کامپایل، انتخاب میکنید برای کدوم معماری کامپایل میکنید.
برای مثال، این دو بخش متفاوت از کدها هستش: x86 (https://github.com/torvalds/linux/tree/master/arch/x86) و ARM (https://github.com/torvalds/linux/tree/master/arch/arm)
اینکه آیا تمامی مفاهیم سیستم عامل (حافظه مجازی، مدیریت فرآیند، چند نخی و ...) برای همه معماری ها پیاده سازی میشه و یکسانه؟
در لایههای پایین، مثلا وقتی بخواید یک ماژول بنویسید، خیر. در لایههای بالا، تقریبا بله.
بعضی از معماری های ARM که ضعیف تر از x86 یا x64 هستند، دلیلی ندارند همه مفاهیم پیچیده سیستم عامل رو پشتیبانی کنند. راه حل هسته لینوکس چیه؟
کرنل یک سیستم ماژولار هستش و لازم نیست (و گاهی امکانپذیر نیست) که تمام ماژولها رو کامپایل و استفاده کنید.