آره فعلا همون رو ترجمه كننقل قول:
منم ميرم مقاله رو تر جمه كنم . راستي كدو م يكيهمينيكه قرار بود دوستم تر جمه كنه ؟ اگه اره ok here we go
موفق باشي
آره فعلا همون رو ترجمه كننقل قول:
منم ميرم مقاله رو تر جمه كنم . راستي كدو م يكيهمينيكه قرار بود دوستم تر جمه كنه ؟ اگه اره ok here we go
موفق باشي
Invalid ضميمه specified. If you followed a valid link, please notify the administrator
آقا لينك فايل بوت سكتور خراه لطف ميكنيد اونرو براي مي ميل كني تا بذارم روي سايت
آدرس ميل
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
فرستاده شدنقل قول:
Invalid ضميمه specified. If you followed a valid link, please notify the administrator
آقا لينك فايل بوت سكتور خراه لطف ميكنيد اونرو براي مي ميل كني تا بذارم روي سايت
آدرس ميل
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
لاو كودر جان برام مقدورنيست دنلود كنم اگه ميشه تمام متن رو همين جا كپي پيست كن ( تو كافي نت اجازه ي دنلود ندارم . هاردمو دادمگارانتي براي همينم نميتونم باسيستم خودم بيام.ببخشيد .ممنونم .
چی شد پس لاو کودر جان ؟ عجله نداری ؟؟؟ معلوم نیست این هارد ما کی قراره برسه . شما یه لطفی کن متن رو اینجا کپی پیست کن .ممنونم
به نام خدا
طراحي سيستم عامل قسمت اول Boot Sector
Boot Sector
مي دانيم كه براي اينكه هر سيستم عاملي كه بخواهد از روي هارد , فلاپي , سي دي و ... اجرا شود براي بوت شدن نياز به Boot Sector دارد
بوت سكتور چيست ؟
وقتي كه ما سيستم را روشن مي كنيم سيسم ابتدا خودش را چك مي كند تا ببيند قطعات مورد نياز متصل هستند يا نه سپس بعد از كامل شدن عمل چك كردن , سيستم اولين سكتور (از هارد, فلاپي يا سي دي رام كه در بايوس ما انتخاب كرديم ) رو به حافظه لود مي كند كه به اين سكتور Boot Sector گفته مي شود در اصل اين سكتور با بقيه سكتورها هيچ فرقي ندارد !! ولي چون بايوس اولين سكتوري را كه مي خواند اين سكتور هست و به وسيله اين سكتور سيستم عامل رو به حافظه مي آورد به اين سكتور Boot Sector گفته مي شود
شما اگر كمي به اسمبلي اشنا باشيد مي تونيد در بايوس به دنبال كدي كه باعث لود شدن اولين سكتور هارد مي شود بگرديد و با پيدا كردن و عوض كردن اون كد بهش بگيد كه مثلا سكتور 10 ما رو به عنوان اولين سكتور بوت كنه !!
در واقع كدي كه ما در اين سكتور مي نويسم بسيار مهم است زيرا اين كد اولين كدي هست كه پس از چك كردن سيستم اجرا مي شود و مي تواند كد راه انداز يك سيستم عامل يا يك برنامه و يا يك ويروس باشه !!!
چند شرط بسيار مهم براي اينكه اين سكتور بطور كار كنه مورد نياز هست (يعني توسط بايوس لود و اجرا شود)
1 - برنامه اي كه براي بوت شدن نوشته شده بعد از كامپايل حتماً حتماً بايد 512 بايت باشه چون هر سكتور 512 بايت هست
2 - آدرس شروع برنامه اي كه نوشتيم حتما بايد Org 0x7C00 باشه چون بايوس بعد از چك كردن سيستم سكتور اول هارد يا فلاپي رو كه مي خواند به اين آدرس مي بره و بعد از خواندن سكتور اول به اين ادرس پرش ميكنه و اگر ما در اول برنامه مان اين ادرس را قرار ندهيم بعد از لود شدن سكتور اول در اين ادرس چون ادرسهاي داخل برنامه مان با اين ادرس يكي نيست برنامه دچار فرو پاشي ميشه و به هيچ وجه اجرا نميشه پس ما با قرار دادن Org 0x7C00 در اول برنامه مان ادرسها داخل برنامه مان را با اين ادرس يكي مي كنيم و آدرسهاي داخل برنامه معتبر مي شود
3 - برنامه شما بايد حداكثر 510 بايت بشه نه بيشتر و شما بايد در بايت 511 و 512 اين عدد رو بنويسيد 0xAA55 كه جمعا با اين كلمه كه دو بايت است اندازه برنامه شما 512 بايت ميشود اگر اين دوبايت رو در انتهاي برنامه قرار ندهيد بايوس نمي تواند سكتور بوت را به حافظه بياورد تقريبا ميشه گفت اين دو بايت تاييد مي كنند كه برنامه اي كه در بوت سكتور هست براي بوت كردن است و اگر نباشند سيستم بوت نمي شود
نكته : برنامه ما با داده هايش بايد در داخل يك سگمنت جاي گيرد يعني برنامه مابايد COM باشد نه EXE !! و ما بعد از اينكه فايل COM ايجاد شد مي توانيم پسوند آن را به BIN يا هر پسوند غير قابل اجرا دلخواه ديگر تبديل كنيم براي اينكه هم مشخص شود اين فايل تحت سيستم عامل كه روش اين برنامه را نوشتيم اجرا نمي شود و اگر هم اشتباه اجرا كنيم برنامه فروپاشي مي نه و اجرا نمي شه و روي سيستم هاي غير از NT باعث كراش شدن سيستم مي شود در كل بهتر هست پسوند فايل عوض شود
اين مثال اجراي رو براي Nasm نوشتم
کد:
شما بايد اين برنامه را با Nasm كامپايل كنيد و از وقفه 21 كه مخصوص داس است و ديگر وقفه ها مخصوص سيستم عامل داس استفاده نكنيد! چون سيستم عامل داس اجرا نشده پس وقفه هاي كه مخصوص محيط داس است غير فعال است و اگر از اين وقفه ها استفاده كنيم برنامه مان دچار فروپاشي مي شود البته از وقفه 10 و 16 و ديگر وقفه هاي بايوس مي توانيد استفاده كنيدکد:
1. ; // MiniOs.Asm
2. [BITS 16]
3. Org 0x7C00
4. Start:
5. jmp MyCode
6. MyStr DB "Hello To All Programer Irani",0
7. MyCode:
8. ; Here Program
9. ; Set Segment Data To CS
10. Mov Ax,Cs
11. Mov Ds,Ax
12. Mov Es,Ax
13. ; Get Size Str To CX
14. Cld
15. Mov Ax,0
16. Mov Di,MyStr
17. Mov Cx,0xFFFF
18. Repnz Scasb
19. Not cx
20. ; Set Segment ES To Address Screen
21. Mov Ax,0xB800
22. Mov Es,Ax
23. ; Set Addres Str To Si
24. Mov Si,MyStr
25. ; Set Cruser To Line 3
26. Mov Di,80*6
27. ; Main Loop For Print Str
28. PrintStr:
29. Push Cx
30. Mov Al,[Si]
31. Mov Ah,7
32. Inc Si
33. Stosb
34. Inc Di
35. Pop Cx
36. loop PrintStr
37. ; End Your Program
38. Jmp $ ; Crash
39. times 512-($-$$)-2 db 0
40. DW 0xAA55
حالا فايل توليد شده به صورت Binary بوده و چون ادرس شروع اين فايل 0x100 نيست پس در محيط داس قابل اجرا نيست حالا شما مي توانيد اين برنامه را در سكتور اول بنويسيد
البته من براي اين كار هم برنامه اي با سي نوشتم
کد:
حالا شما بعد از ساختن فايل Binary كه قرار است در زمان بوت سيستم اجرا شود نام فايل Binary را در جلوي برنامه اي كه به زبان سي نوشتيم قرار مي دهيم و سپس برنامه را اجرا مي كنيدکد:1. // WSector.Cpp
2. #include <Bios.h>
3. #include <Conio.h>
4. #include <Mem.h>
5. #include <Stdio.h>
6. long filesize(FILE * stream(
7. {
8. long curpos, length;
9. curpos= ftell(stream(;
10. fseek(stream, 0L, SEEK_END);
11. length = ftell(stream);
12. fseek(stream, curpos, SEEK_SET);
13. return length;
14. }
15. void LoadFileToMem(char*fs,char mem[])
16. {
17. long sz;
18. FILE * File;
19. File=fopen(fs,"rb");
20. sz=filesize(File);
21. fread(mem,sz,1,File);
22. fclose(File);
23. printf("Load Ok Size = %i\n",sz);
24. };
25. int main(int argc,char *argv[])
26. {
27. struct diskinfo_t dinfo;
28. int result;
29. static char buf1[512];
30. char buffer[512];
31. dinfo.drive = 0; /* drive number for A */ /* ---- Select Driver A */
32. dinfo.head = 0; /* disk head number */
33. dinfo.track = 0; /* track number */
34. dinfo.sector = 1; /* sector number */
35. dinfo.nsectors = 1; /* sector count */
36. dinfo.buffer = buf1; /* data buffer */
37. memset(buf1,0,sizeof(buf1)-1);
38. if (argc<2) return 0;
39. clrscr();
40. printf("Testing to see if drive _A_ is ready ? \n");
41. result = biosdisk(4,0,0,0,0,1,buffer);
42. result &= 0x02;
43. if (result)
44. {
45. printf("Drive A: Ready\n");
46. }
47. else
48. {
49. printf("Drive A: Not Ready\n");
50. return 0;
51. };
52. LoadFileToMem(argv[1],buf1);
53. /* Write Mini Os To Floppy */
54. _bios_disk(_DISK_WRITE, &dinfo);
55. printf("Ok \nWrite Your Program To Drive A\n");
56. return 0;
57. }
مثلآ :
WSector.exe MiniOs.Bin
حالا برنامه شما در بوت سكتور قرار گرفته و شما يك فلاپي بوت داريد كه با قرار دادن آن در سيستم , اتوماتيك برنامه شما رو اجراميكنه
به همين راحتي !!
نكته مهم : براي اينكه به سكتور اول هارد شما كه محل بوت ويندوز و بقيه سيستم عامل ها است آسيبي نرسد اين برنامه(سي) , برنامه مان(اسمبلي) را در سكتور اول فلاپي مي نويسد
اگر در مورد اين متن مشكلي , نظري يا سوالي داشتيد مي توانيد با من تماس بگيريد
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
به اميد روزي كه ايرانيان برقله علم و دانش در جهان تكيه زنند
اميدوارم موفق باشيد
*******************
به خاطر درخواست مستر عزيز اين گذاشتم
امكان داره بهم ريخته بشه شرمنده
در ضمن PDF ش رو مي تونيد از ادرسي كه نت داد دريافت كنيد
لاو کودر جان ممننونم . ولی من منظورم همخون متنی بود که باید تر جمه می کردم . اونو کپی پیست کن تا من بتونم یه پرینت بگیرم و برم خونه تر جمش کنم
خودم قبلا ترجمه اش كرده بودم ولي يادم نيست ترجمه اش كجا گذاشتمنقل قول:
لاو کودر جان ممننونم . ولی من منظورم همخون متنی بود که باید تر جمه می کردم . اونو کپی پیست کن تا من بتونم یه پرینت بگیرم و برم خونه تر جمش کنم
ترجمه اش راحت هست موفق باشي
کد:Getting Started in OS Development
1 of 4
Getting Started in OS Development
It seems that most people really want to write an OS but they don't know where to start and they don't know
what programming lanuages they need to know.
Well, when I started my OS I was pretty much the same way, so I'm writting this tutorial on getting started in
OS development.
I've written this in Q&A format for easier understanding.
Q: So what languages do I need to know to make my own OS.
A: You should at least know assembly(ASM) language because you will need it to write your
bootsector(more on this in the next question) and quite a few other things. I suggest that you also learn
C/C++, because it's a much more understandable language compared to ASM. You can then use both C/C++
and ASM in your OS.
You might consider writting your OS in Pascal and ASM instead of C/C++ and ASM, but I suggest C/C++
and ASM.(note that there are some special problems with C++ and OS dev)
Q: What is a bootsector.
A: A bootsector is a small program that is stored at the very start of a floppy disk and/or hard drive. It is
responsible for finding your kernel(the MAIN part of you OS that does most everything), loading it into
memory, and running it.
Q: Do I already have to have an OS to make an OS.
A: Yes. Most people use Windows and/or Linux for OS development.
Q: What compiler(s) should I use.
A: For assembly lanuage, I suggest NASM because it's free, has good documentation, outputs to many file
formats, is availible for most OS'es, source code for it is availible, and most assembly example found on OS
dev sites need it. For C/C++ I suggest gcc under Linux and DJGPP under Windows(both are compatible with
the other).
Q: How do I make my OS bootsector bootable.
A: You will need to output it to a flat binary file. For NASM use -f bin. If you are using C/C++ you will
need to use a linker to do this(see next question).
Getting Started in OS Development
2 of 4
Q: What's a linker and how do use it for OS development.
A: A linker takes the output file(s) that a compiler(s) generates and links it into one file. For OS dev, you will
normally want to link your files into a flat binary file. For LD(the linker that is most often used with DJGPP
and gcc) use the option --oformat binary. If you use LD you should use a linker script for better control of
linking. See My suggestions for making your OS.
Q: What is Real Mode.
A: Real Mode is the state that a x86(386, 486, Pentium, etc) is in when you first turn on your PC. Real Mode
has several disadvantiges:
It lacks Protection, the ability to keep programs from messing around and crashing each other.
1.
You may only have one task.
2.
You are limited to 1Meg of address space.
3.
You must use segmentation to access memory.
4.
Q: What is Protected Mode.
A: Protected Mode(also known as PMode) is a step up from Real Mode. Protected Mode has several
advanteges over Real Mode:
Protected Mode has Protection, the ability to keep programs from messing around and crashing each
other(this is how Proctected Mode got its name).
1.
You may only have several tasks(like Windows and Linux).
2.
You have 4Gig, yes 4 gigabytes, of address space(once the A20-Gate is enabled, see next question).
3.
You can use paging to access memory.
4.
If it isn't already obvious, your OS should run in Protected Mode unless you have a very specific reason to use
Real Mode.
Q: Q: What is that A20-Gate.
A: The 8086 microprocessor(the processor that came before the 286, 386, 486, Pentium, etc) could only
access 1MB of address space. For that address range, 20 address bits(A0 - A19) are sufficent. Then, Intel
invented the 80286(often called just the "286"). The 80286 could access up to 16MB of address space, but the
80286 had to be compatible with the 8086(programs that were made for the 8086 had to be able to run on the
80286). What was the solution. To give the 80286 more address gates for the address range, but some
programs depended on the fact, that the addresses wrapped around at 1MB:
Let's see it in the way the 8086 saw it: You have the address 11111111111111111111 in dual system and add
1 to it. The result is 0 as you don't have a 21th bit (A20!). But the 80286 actually had more bits.
To solve the problem, Intel made the 80286 disable the A20-Gate, and the limit the address range to 20 bits.
Getting Started in OS Development
3 of 4
So, to access more than 1MB memory, we need to enable the A20-Gate.
Q: What is a selector.
A: A selector(sometimes also called a descriptor) is a definition of a segment. It contains a description of
basic segment attributes, like the segment base (it's starting address) and the segments limit (it's length). Each
selector is 64 bits long. More about them in the description of a GDT and LDT.
Q: What is a GDT.
A: A gdt is a table containing selectors. Basically it provides a starting address to address all selectors.
Q: What is an interrupt.
A: An interrupt is a signal that interrupts the current task that the CPU is doing. It tells the CPU that an
important event has arrived, for example hardware interrupts, and that the CPU needs to stop the current task
and run the proper interrupt handler. The interrupt handler is a special function which is designed to handle a
specific interrupt(like a key press from the keyboard). As interrupts have special properties, for example they
can be used to switch from ring 3 to ring 0, they might be used in operating systems as a way to do system
calls. Linux system calls are handled via interrupts.
Q: What is PIC.
A: The PIC, the Programmable Interrupt Controller, is a device which collects hardware interrupt requests
and signals the cpu that an interrupt has occured. When this happens, both the PIC and CPU communicate
about which request has occured and the cpu will stop the current task and execute the the interrupt handler
for that request.
Q: What is PIT.
A: The PIT, Programmable Interrupt Timer, is a programmable(you can change the speed of it) hardware
timer that fires off an interrupt when it goes off(IRQ 0). It is mainly used for task schedualing.
Q: In what order should I make my OS in.
A: Well, you could start just about anywhere, but you would probably end up with dozens of bugs. I suggest
that you start by making a bootsector, then making a basic kernel, and then add on to your kernel.
Q: What are the basic steps for setting up PMode at boot time.
Getting Started in OS Development
4 of 4
A:
Disable interrupts so nothing gets messed up.
1.
Setup a GDT.
2.
Enable the A20.
3.
Set the first bit of CR0 to 1.
4.
Load the segment registers with correct values from the GDT.
5.
Load CS and EIP with correct values by doing a far jump.
6.
You are now in PMode
7.
This is covered in more detail in Protected Mode by Chris Giese.
Q: My question isn't answered here. What do I do.
A: You can email it to me and I'll try to answer it and add it on to this(this tutorial is far from done).
This tutorial is written by K.J. and Joachim Nock. Updated 2002.11.20 by K.J.
شرمنده كه بهم ريخته شد
---------------------
نت جان شما چه كردي ؟
اقا تر جمه کارش تموم شد ( همون ه.قع ) ولی حالا دارم تایپش می کنم . به زودی حاظر می شه .
سلام
خيلي خوبه مستر جان
فقط يك نكته بگم به دوستان كه يكم بيشتر به اين تايپ سر بزنيد حداقل روزي يكبار رو ديگه سر بزنيد چون كار داره آهسته پيش ميره
با تشكر
Aakh1361
سلام دوستان ببخشيد كه چند روزي نبودم
دنبال كارهاي هند بودم
دوستان اسكن فصل اول رو طي يكي دو روز آينده ميذارم روي سايت
در ضمن لاو دستت درد نكنه بابت مطلب بوت ولي توي اسمبلي اون يه ذره مشكل دارم كه اگه شد مطرح ميكنم چون الان يه خورده سرم شلوغه عذرخواهي مرا بابت ديركرد و غيبت پذيرا باشيد
نت عزيز اميدوارم مشكلاتت حل بشه و دوباره با همديگر همكاري بهتري داشته باشيم
به سلامتي سفر هند در پيش داري ؟
موفق باشي
_Love_Coder_
سلام به همگی .شروع به کار برای ساختن یه سیستم عامل ملی :
قدم اول:
به نظر می رسه که بیشتر مردمدلشون می خواد که یه سیستم عامل بنویسن . اما نمی دونن که از کجا باید شروع کنن و یا اینکه چه زبان یا زبانهایی برای این کار لازم دادن ( باید بلد باشن).
خوب , وقتی که منم می خواستم سیستم عامل خودمو بسازم مثل شما بودم .بنابر این این مقاله ی تمرینی رو براتون بنویسم تا شروع به ساختن یه سیستم عامل برای خودتون بکنید . من این مقاله رو بصورت سوال و جواب نوشتم تا فهمش واستون اسون باشه ( انقدر زور نزنید تا یه چیزو بفهمید )
1)سوال ؟: من باید چه زبان های بر نامه نویسی رو بلد باشم تا بتونم یه سیستم عامل بسازم .؟
جواب:شما باید زبان اسمبلی ASM رو بلد باشید تا بتونید BootSector خودتونو بسازید .(بنویسید) (بقیه ی تو ضی حات تو این زمینه تو سوال بعد یه ) و چند تا چیز دیگه . من به شما پیشنهاد می کنم که زبان C/C++ رو هم یاد بگیرید (اقا این علامت + بیخود رفته رفته پشت c . این جلویه C هستش .++c حالا درست شد . نگید من یه زبان جدید از خودم در اووردم .) چون بیشتر از زبان اسمبلی قابل فهمه . بعد از این شما می تونید هم از زبان اسمبلی و هم اززبان سی تو ساخت سیستم عاملتون استفاده کنین.
2)سوال؟:بوت سکتور دیگه چیه :
جواب : بوت سکتور (فعال سازی قست اولیه) یه برنامه کوچیکه که تو قطاع اولیه فلاپی دیسک یا هاردیسک نگه داری میشه. . این بوت سکتور مسعول پیدا کردن کرنل شما ( کرنل قسمت اصلی سیستم عامل شماست که بیشتر کارا رو انجام می ده ) بارگذاری اون تویه حافظه و بعدشم اجرای اونه .
3)سوال؟:ایا لازمه که من قبل از اینکه یه سیستم عامل بسازم , یه سیستم عامل دیگه داشته باشم ( یعنی یه سیستم عامل دیگه نصب باشه ؟)؟
جواب : آره . بیشتر مردم از ویندوز یا لینوکس برای ساختن یه سیستم عامل استفاده می کنن .
4)سوال؟: من باید از چه کمپایلر هایی استفاده کنم ؟
جواب : برای زبان اسمبلی من NASM رو پیشنهاد می کنم . چون اولا هم رایگانه . هم مستندات خوبی داره هم خورجی که داره فرمتهای مختلفی رو پشتیبانی می کنه ( یعنی فرمتهای مختلفی رو می تونید ازش بیرون بیارید .) برای اکثر سیستم امل ها هم در دسترس هستن . کد منابعشم در دسترسه و بیشتر نمونه های اسمبلی بکار رفته برای ساخت یه سیستم عامل به اون نیاز دارن . برای زبان C هم GCC رو پیشنهاد میکنم ( البته تحت سیستم عامل های لینوکس و DJGPP و همینطور ویندوز ( یعنی اینکه اگه اینا رو نصب کردید ) ( هر دو تا ی اینا با بقیه سازگارن )
5)سوال؟: حالا چجوری من بوت سکتور سیستم عاملمو Bootable (قابل بالا امدن در اول شروع به کار سیستم عامل ) کنم ؟
جواب:شما برای این کار باید خرو جی فایل رو رو فرمت Flat binary تنظیم کنید . یعنی باید فایل شما مو قعی که می خواد از خرو جی بیاد بیرون Flat binary باشه . برای NASM از f bin- استفاده کنین . اگه از C یا ++C استفاده می کنین شما باید از یه ارتباط دهنده )linker) برای این کار استفاده کنید ( سوال بعدی رو ببینین )
قدم دوم :برای ساختن یه سیستم عامل ********************************************
6)سوال؟: این ارتباط دهنده دیگه چیه و چجوری از اون تو ساخت یه سیستم عامل استفاده کنیم ؟
جواب: ارتباط دهنده یا Linker فایلهای خروجی که کمپایلر ها بو جود میارن رو میگیره و اونا رو به یه فایل ارتباط می ده . برای ساخت یه سیستم عامل , شما بطور معمول می خولیید که فایلهاتونو با فایلها Flat binary ارتباط بدید , برای LD ( ارتباط دهنده ای که بیشتر اوقات با DJGPP و GCC استفاده میشه ) از گزینه ی oformat binary استفاده کنین . اگه شما از LD استفاده کنین باید از یه اسکریپت ارتباط دهنده برای کنترل بهتر ارتباطها استفاده کنین .پیشنهاد منو برای ساختن سیستم عاملتون ببینید .
7)؟: حالت Real Time یا حالت بی درنگ چیه ؟
جواب : Real Time یا حالت بی درنگ , عنوان لفظیه که یعنی X86 ( 386 486 pnetium) و غیره ) وجود داره زمانی که شما برای دفعه ی اول کامپیوترتون رو روشن می کنین . اما این حالت بی درنگ چند تا مشکل اساسی داره:
1)این حالت از لحاظ امنیتی و محافظتی کم داره , توانایی که برنامه ها رو از گم به گور شدن و یا باعث هنگ کردن همیدگه شدن باز میداره (این توانایی وجود نداره )
2)شما ممکنه تنها بتونی از یه سیستم عامل استفاده کنین ( مثلا فقط .ویندوز اکس پی . دیگه نمی تونی دو تا ویندوز نصب کنی )
3)شما تنها به یه (1) مگابایت فضا برای ادرس دهی محدود هستین .
4)شما حتما باید از بخش بخش سازی برای دسترسی به حافظه استفاده کنین
8)سوال ؟: حالت Protedcted Mode یا محافظت شده چیه؟
جواب :حالت محافظت شده ( به PModeهم معروفه ) ,یه برنامه برای پیشرفت کردن از حالت بی درنگ یا Real Time هست ( یعنی برانامه ای برای مواجه نشدن با حالت بی درنگ و استفاده نکردن از اون )
حالت محافظت شده نسبت به حالت بی درنگ چندین مزیت داره :
1) حالت محافظت شده , حفاظ داره . قابلیت و توانایی که باعث میشه , برنامه گم و گور نشن و یا باعث اختلال در کار هم نشن . (ان اسم محافظت شده ای هم که داه به خاطر همینه .)
2)این امکان هست که شما چند سیستم عامل داشته باشید (مثل لینوکس یا ویندوز)
3)شما 4 گیگابایت فضا برای ادرس دهی دارین , آره کف نکنید 4 گیگابایت برای فضای مورد نیاز برای ادرس (زمانی که درگاه A20 پایان پذیر باشه ( سوال نکنید . سوال بعدی رو ببینید .)
4)شما میتونید از پی جویی کردن(بابا منظورم همون جستجوه ) برای دسترسی به حافظه استفاده کنین .
5)اگه تا لان نگرفتین باید بگم که سیستم عامل شما باید در حالت حفاظت شده اجرا بشه مگه اینکه شما دلیل خاصی داشته باشین که بخواین لز حالت مزخرف بی درنگ استفاده کنید .(پس ما در حال عادی از حالت حفاظت شده برای اجرای سیستم عامل استفاده می کنیم.)
9)سوال؟:راستی اون درگاه A20 که گفتی , چیه ؟
جواب:ریز پردازندها 8086 (پردازنده ای که قبل از 286,386,486و پنتیوم و غیره ... اومدن ) تنها میتونستن به یک مگابایت فضا برای ادر دهی دسترسی داشته باشن . برای برای اون گستره مقدار حافظه 20 تا ادرس بیتی از A0 تا َA19 سودمندو مفید بودن . بعدش اینتل 80286 رو اختراع کردو ساخت ( که بعدا فقط بهش 286 میگفتن ) 80286 می تونست تا 16 مگابایت فضا برای ادرس دهی دسترسی پیدا کنه . ولی 80286 باید با 8086 سازگار مشد . (برنامه هایی بودن که برای 8086 ساخته شده بودن که باعث اجرا شدن اونا روی 80286 بشن .) حالا خر بیارو باقالی بار کن . حالا راه حل برای اینکه 80286 قابلیت دسترسی به فضای مورد نیاز برای ادرس دهیش بیشتر شه چیه ؟ در عین حال بعضی برنامه ها بر روی این واقعیت که ادرسها دوروور یه چیزی حدود 1 مگابایت جمع اوری و ساخته شده شدن, استوار بود .
بچه ها , بیاین اینو طوری که 8086 میدید ما هم ببینیم , شما ادرس 11111111111111111111 ( 20تا 1) رو در یک سیستم دوتایی (Dual asystem) دارید و به اون یه یک )1( اضافه میکنید . فکر میکنید چه اتفاقی می افته , نتیجه صفره . چونکه شما بیست و یکمین بیت رو ندارید )A20!( ولی در واقع 80286 بیت های بیشتری داشت . برای حل این مشکل اینتل 80286 رو ساخت , درگاه A20 رو غیر فعال کرد و گستره ی ادرس دهی رو به 20 بیت )َََA20( رسوند .(محدود کرد).
قدم سوم برای ساختن یک سیستم عامل:***************************************** ***
خوب ,پس برای دسترسی به بیشتر از یک مگابایت حافظه , ما باید درگاه 20آ یا A20 رو فعال کنیم .
10)انتخاب گر یا Selector چیه ؟
یه انتخاب گر ( بعضی وقتا , بهش شناسا یا تو صیف گر هم می گن . ) معنیه یه بخشه . یعنی اینکه کار و وظیه ای که براش از قبل تععین شده ,رو مشخص می کنه ) که اطلاعاتی از و ظایف و کار های بخش پایه رو در خودش داره . مثل اساس بخش )Segment base) (این شروع کننده اس) و حد بخش (این طولشه ) . هر انتخابگر 64 بیتی هست . اطلاعات بیشتر از این دوتا رو تو قسمت GDT و LDT بخونید .
11) سوال؟:GDT چیه ؟
GDT یه صفحه (جدول) (یه بخش ) که حاوی انتخابگر ه . اساسا GDT ادرس اولیه رو برای ادرس دهی تمامی انتخاب گر ها بو جود می اره .
12)سوال؟: Interrup یا گسستگی چیه؟
جواب:گسستگی با Interrup یه علامته که باعث میشه cpu از انجام عملیا تی که در حال حاظر در حال انجامشه دست بکشه . این به cpu میگه که یه عملیات مهم رسیده , برای مثال سخت افزار از کار کردن می ایسته . cpu هم لازمه که عملیات در حال اجرا رو متوقف کنه و از گسسته گر مناسب استفاده کنه . گسسته گر مناسب , یه عملیاته مخصوصه که برای اجرای گسستگی ها ی بخصوص (مثل فشار دادن کلید روی صفحه کلید) طراحی شده .
همونطور کهمی دونید گسستگی ها( از این عملیات به اون عملیات رفتن رو می گم گسستگی . یعنی یه عملیات متوقف شه و یکی دیگه اجرا شه .) تنظیمات مخصوص به خودشونو دارن . برای مثال , اونا می تونن از زنگ 3 به زنگ 0 تغییر پیدا کنن و مورد استفاده قرار بگیرن .اونا می تونن در یه سیستم عامل به عنوان راهی برای انجام مکالمات سیستم استفاده بشن .مکالمات سیستمی لینوکس هم بر همین مبناست .
12)سوال ؟:PIC چیه ؟
جواب:مخفف کنترل گر گسستگی قابل برنامه است , یه وسیله ایه که در خواست های سخت افزار ها برای گسستگی ( خاتمهی یک عملیات و شروع عملیات دیگه ) رو جمع اوری میکنه ., وبه Cpu علامت می ده که یه گسستگی اتفاق افتاد . وقتی که این اتفاق می افته , هم PIC و Cpu هر دو با هم ارتباط بر قرار می کنن و گسسته گر رو برای اجرای درخواست جدیداجرا می کنن .
13)حالا این PIT یعنی چی ؟
PIT مخفف , زمانسنج گسستگی قابل برنامه ریزی هست . یه زمانسنج سخت افزاری قابل برنامه ریزی ( شما می تونید سر عتشو تغییر بدید) هستش که گسستگی رو از بین می بره زمانی که کارش تموم می شه ( یعنی موقعی که دیگه کار قدیمی تموم شده و کار جدید در حال در خواست دادنه ) (IRQO) این بیشتر برای برنامه ریزی برای انجام عملیات هاست .
14)سوال؟: بر چه اساس و ترتیبی من باید سیستم عاملمو بسازم .؟
جواب :خوب شما می تونید , تقریبا از هر جایی شروع کنید , ولی مطمعنا وقتی کارتون تموم شد یه دو جین باگ و سوراخ سمبه پیدا می کنید . من پیشنهاد می کنم که شما اول یه بوت سکتور بسازین , بعدش یه کرنل پایه بسازید و بعد هم بقیه رو به کرنل اضافه کنین .
15)سوال؟:بازم یه سوال دیگه :قدمهای اساسی و اولیه برای ساختن حالت محافظت شده در موقع بوت چیه ؟
جواب:
1)گسستگی رو غیر فعال کنید تا چیزی گم و گور نشه
2)GDT رو ستاپ کنید .
3)A20 رو فعال کنید .
4)اولین بیت از CR0 رو رویه 1 تنظیم کنید.
5)محل های ثبت بخش رو بار گذاری کنید , البته با مقدار های درست از GDT.
6) سی اس CS و EIP رو با مقدار های درست , بوسیله ی یک پرش بلند, بارگذاری کنید .
7) حالا شما تو حالت محافظت شده هستین .
خوب چطور بود بچه ها . ببخشید دیر شد . سرم خیلی شلوغ بود . یه نگاه به امضامم بندازید میگیرید چی می گم /
خيلي ممنون از لطفي كه كردي يكسري ايراد كوچولو داشت رفع كردم به صورت پي دي اف ميزام روي سايتم برداريد.
در ضمن سي دي كامل مينكس اومد 60 مگ هستش اسپيلتش ميكنم برداريد
به آدرس :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
و زحمت دوست عزیزمون لاو به آدرس:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ممنون مستر جان
چند تا ايراد كوچولو داشت كه نت گفت رفعشون كرده
نت عزيز بهتر هست اين كار رو نكنينقل قول:
در ضمن سي دي كامل مينكس اومد 60 مگ هستش اسپيلتش ميكنم برداريد
چون اكثر 99.99 درصد سرعت دسترسي به اينترنت پاييني داريم و نمي تونيم دانلود كنم و فضاي شما كه براي اين كار روي سايتتون اختصاص داديد به هدر ميره
در ضمن من از خود سايت مينيكس فايل ISO ش رو دريافت كردم كه قابل نصب بر روي هارد هست (مي تونيد رو Virtual PC نصبش كنيد) و حجمش سه مگابايت هست و مينيكس بر روي سيستم نصب ميشه و به صورت خط فرمان هست فكر كنم اگر اون رو قرار بدي رو سايتت بهتر باشه
موفق باشيد
مستر جون دل انگیز
بابا تو که این همه توضیح دادی یه چندتا کد هم می نوشتی تکمیل میشد جیگر. اما دستت درد نکه به درد ما که خورد
همیشه پایدار باشی
خب شما دوست عزيز نميخواي يه دستي به ما بدي(كمك كني)؟؟؟
سلام
اول از مستر عزيز ممنونم بابت مقالشون
من مقاله رو 4-5 بار مطالعه كردم و ديدم با اينكه نت عزيز بعضي قسمت هاش رو ويرايش كرده بازهم بعضي از قسمت هاش نياز ضروري به ويرايش داره من الان سركارم هستم شب ساعت 11.30 مقاله ويرايش شده رو براتون قرار مي دهم
البته با اجازه مستر و نت عزيز
اقا شرمنده دیگه عجله ای شد . می دونم یه هفته قبل متنو گرفته بودم اما سرم شلوغ بود . انشالله درستش می کنم .
لاو عزيز بازم شرمنده كردي
براي اينكه زياد بابت اديت ازيت نشي من فايل ورد رو واست ایمیل میکنم.
دوباره ما رو شرمنده کردی
سلام
نقل قول:
اقا شرمنده دیگه عجله ای شد . می دونم یه هفته قبل متنو گرفته بودم اما سرم شلوغ بود . انشالله درستش می کنم .
خواهش مي كنم دوستان براي چي شرمنده باشيد ؟نقل قول:
لاو عزيز بازم شرمنده كردي
براي اينكه زياد بابت اديت ازيت نشي من فايل ورد رو واست ایمیل میکنم.
دوباره ما رو شرمنده کردی
اون كسي كه كاري ازش بر مياد و انجام نميده اون بايد شرمنده باشه نه شما عزيزان شما كه داري كمك مي كنيد
در واقع ما هدف مشترك داريم و كسي كه براي هدف مشترك داره تلاش مي كنه نبايد از كسي شرمنده باشه مگر اينكه از دستش كاري بر بياد و انجام نده كه الحمدالله شما ها اينجوري نيستيد
من فايل رو كمي ويرايش كردم و براي سادگي فهم قسمت هاي رو اضافه كردم و بعضي قسمت ها رو حذف كردم
اين فايل رو براي نت عزيز ارسال مي كنم
موفق باشيد
Aakh1361
سلام
من دیشب روی مقاله (در مورد برنامه اسمبلی ) کار کردم اما جواب نداد . اول می خواستم بدونم که کسی برنامه
NASM
رو داره یا حداقل لینکی بده درضمن آیا اصلا این برنامه وجود داره یا اینکه غلط املای در مقاله ست
یه سوال دیگه داشتم چه جوری می شه که یه برنامه یا یه فایل رو توی سایت (منظورم این سایته) دانلود یا
Upload
کرد چون خودم هم یک برنامه اسمبلی نوشته ام اما کار نمی کنه می خواستم که اونو برای شما بفرستم زحمت
پیدا کردن اشکال اونو بگید
پیشاپیش از توجه شما متشکرم
راستش بابت آپلود به اينجا من هيچي نميدونم ولي اگه خواستي ميتوني به اين آدرس ميل كني تا من بزارم روي سايتم
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
زحمت دوست عزيز لاو به آدرس :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] فرستاده شد.
فكر كنم مدير هاي انجمن و همكارا و جديد كاربران فعال انجمن ميتونن آپلود كنننقل قول:
نوشته شده توسط MAR_Programmer
اگر يكبار تو گوگل همين Nasm رو سرچ كنيد مي تونيد از اولين و دومين لينك دانلودش كنيدنقل قول:
من دیشب روی مقاله (در مورد برنامه اسمبلی ) کار کردم اما جواب نداد . اول می خواستم بدونم که کسی برنامه
Nasm
رو داره یا حداقل لینکی بده درضمن آیا اصلا این برنامه وجود داره یا اینکه غلط املای در مقاله ست
اگر مربوط به بحث سيستم عامل هست خوب بفرستيدش اگر نه لطفا اون رو در قسمت برنامه نويسي مطرح كنيدنقل قول:
چون خودم هم یک برنامه اسمبلی نوشته ام اما کار نمی کنه می خواستم که اونو برای شما بفرستم زحمت
پیدا کردن اشکال اونو بگید
موفق باشيد
Aakh1361
من منتظر نتيجه كار شما نت عزيز هستم
فصل اول كتاب ارسال شد
پسوردشو رو براي دوستان فعال ارسال ميكنم
مستر جان يه ايميل بده برات پسورد رو بفرستم
اينكار دو دليل داره يكي اينكه امكان داره انتشارات مربوطه از من شكابت كنه
دوم اينكه بالاخره دوستان ديگر كه علاقمند به اين بحث هستند حداقل لطف كنند يه مطلبي رو يا براي ما بفرستند يا ترجمه كنند
لاو ايميلت رسيد پسورد رو برات فرستادم
توجه كن بخاطر اينكه پسورد رو درست بتوني بخوني بايد ctrl+shift سمت چپ رو باهم فشار بدی
نت جان ایدی من اینه :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
یا
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ممنونم.
سلام
ممنون نت عزيز بايت PDF دارم دانلودش مي كنم
در ضمن در مورد اون قسمت كه گفتي من Table رو ميز ترجمه كردم ميشه بگي كجا من اين كلمه رو ميز ترجمه كردم چون من يادم نمي ياد جاي Table رو ميز ترجمه كرده باشم
ممنون
مستر جان ارسال شد
در ضمن دوست عزيز لاو سوال 11 رو بخون اونجا Gdt اشتباهاً میز تعریف شده .
من لینکو پیدا نکردم اگه امکان داره به ادرس من در جی میل پست کن
يك مقاله جديد در رابطه با راه اندازي سيستم و لودر
ترجمه شد به آدرس:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ارسال شد
نت عزيز مقاله رو مستر ترجمه كرده بود و من هم موقع ويرايش يادم رفت اصلاحش كنمنقل قول:
در ضمن دوست عزيز لاو سوال 11 رو بخون اونجا Gdt اشتباهاً میز تعریف شده
مشكلي نيست ولي از اين به بعد
نت جان مقاله كه رسيد
مستر جان براي شما هم يك مقاله مي فرستم
خودم دارم يك مقاله ديگه مي نويسم
به اميد موفقيتمون