PDA

View Full Version : مشکل در اجرای کرنل



yassersajjadi
جمعه 06 بهمن 1391, 20:12 عصر
سلام
تو کرنلی که دارم مینویسم رسیدم به قسمت مدیریت حافظه و تخصیص دادن حافظه و ایجاد کردن heap ها و block ها .
من اومدم یه struct ایجاد کردم که شامل چندین عضو هست مثل

start
size
state
readonly


بعد اومدم این از این ساختار یه ارایه درست کردم که تعدادش بستگی به فضایی داره که میخوایم heap ایجاد کنیم مثلا

start_heap = 0x8000000
length_heap=0x100000
unit_heap = 0x8

nheap = (length_heap/unit_heap)

که nheap همون تعداد آرایه های ما هست
حالا وقتی که میخوام یه block درست کنم میام واسه اندازه ای که نیاز دارم تعداد آرایه های لازم رو بدست میارم
وهمون تعداد آرایه رو میگردم و اونهایی که state اونها صفر هست رو پیدا میکنم ( البته اونها باید پشت سر هم باشن) و اولین خونه رو start و آخرین خونه رو هم start , size ش رو بدست میارم و اونوقت یه block با مشخصات

start1
end_block = start2 + size

ایجاد میکنم و state اون ارایه ها هم ۱ میشن
به این صورت به هر داده یک مقدار مشخص و بزرگتر مساوی اون داده اختصاص داده میشه و دیگه hole های خیلی کوچک ایجاد نمیشه
از این راه برای اختصاص دادن حافظه استفاده کردم
ولی موقعی که چندین kmalloc استفاده میکنم دیگه نمیتونم کرنل رو لود کنم و این ارور رو میده


em@ubuntu:~/Public/EX$ qemu-system-i386 -kernel kernel.o
Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory
Back to tcg accelerator.

(process:2905): GLib-ERROR **: /build/buildd/glib2.0-2.32.1/./glib/gmem.c:165: failed to allocate 18446744073709532160 bytes
Trace/breakpoint trap (core dumped)

pswin.pooya
جمعه 06 بهمن 1391, 20:50 عصر
qemu-system-i386 -kernel kernel.o
این شکل بارگذاری کرنل رو از کجا برداشتید؟

yassersajjadi
جمعه 06 بهمن 1391, 20:55 عصر
توی سایت qemu دیدم
با grub هم امتحانش کردم فرقی نمیکنه ، گراب کرنل رو ناشناس میدونه

pswin.pooya
شنبه 07 بهمن 1391, 05:59 صبح
توی سایت qemu دیدم

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


با grub هم امتحانش کردم فرقی نمیکنه ، گراب کرنل رو ناشناس میدونه
دقیقا گراب چه خطایی رو میده؟

yassersajjadi
شنبه 07 بهمن 1391, 10:29 صبح
error 13: Invalid or unsupported executable format

pswin.pooya
شنبه 07 بهمن 1391, 18:33 عصر
error 13: Invalid or unsupported executable format

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

مشکل شما توی مرحله اول مربوط به رعایت نکردن نکات کدینگ و برنامه نویسی هست. پیشنهاد می کنم قبل از هرکاری بطور کامل مستندات grup، مولتی بوت و gcc رو بخونید. بعدا خودتون می تونید محل دقیق مشکل رو پیدا کنید. ( برای خود من حدود یک ماه وقتم رو گرفت تا حلش کنم‌)

yassersajjadi
شنبه 07 بهمن 1391, 21:31 عصر
از اون اموزش ها استفاده کردم ولی از کد اونها استفاده نکردم
مشکلم تو تخصیص حافظه به این ارایه بود
مشکلم فعلا حل شد ممنون