osdev

Mixing 32 bit and 16 bit code with nasm

Hi, This is a low-level systems question. I need to mix 32 bit and 16 bit code because I'm trying to return to real-mode from protected mode. As a bit of background information, my code is doing this just after GRUB boots so I don't have any pesky operating system to tell me what I can and can't do. Anyway, I use [BITS 32] and [BITS 1...

What's the best way to get to know linux or BSD kernel internals?

I'd like to gain better knowledge of operating system internals. Process management, memory management, and stuff like that. I was thinking of learning by getting to know either linux or BSD kernel. Which one kernel is better for learning purposes? What's the best place to start? Can you recommend any good books? ...

How to get started in operating system development

One thing I've always wanted to do is develop my very own operating system (not necessarily fancy like Linux or Windows, but better than a simple boot loader which I've already done). I'm having a hard time finding resources/guides that take you past writing a simple "Hello World" OS. I know lots of people will probably recommend I l...

OS Development

I want to make my own operating system for the X86 architecture. What would be the best language to use? (Along with assem of course) What would the best compiler for the language be on a windows environment? Are there any good tutorials on this subject? Is it better to test it using an emulator or physical pc? ...

malloc() and the C/C++ heap

I'm working on designing the kernel (which I'm going to actually call the "core" just to be different, but its basically the same) for an OS I'm working on. The specifics of the OS itself are irrelevant if I can't get multi-tasking, memory management, and other basic things up and running, so I need to work on that first. I've some quest...

Stack Size for Kernel Development

So I'm working on designing an OS, and I'm working on designing (not coding yet) the kernel. This is going to be for an x86 operating system, and my target is for more modern computers, so RAM can be considered to be at least 256M or more. My question is this: What is a good size to make the stack for each thread run on the system? Or b...

Making GRUB automatically boot the kernel

I am currently writing a kernel, and in an attempt to actually run it, I've decided to use GRUB. Currently, we have a script to attach GRUB's stage1, stage2, a pad file, and the actual kernel itself together which makes it bootable. The only problem is that when running it, you have to let GRUB know where the kernel is and how long it ...

x86 assembly Protected mode Keyboard Access

So I'm working on keyboard input for a very bare bones kernel that I'm throwing together, and I'm completely stuck. I can't seem to find any information online that can tell me the information I need to know. My kernel is running in protected mode right now, so I can't use the "normal" real mode keyboard routines without jumping into re...

How do you write a basic operating system?

Hi, Let me know how I can create a basic operating system. What books do you recommend? ...

Kernel Memory Management - Page Handling Design

I'm working on kernel design, and I've got some questions concerning paging. The basic idea that I have so far is this: Each program gets its own (or so it thinks) 4G of memory, minus a section somewhere that I reserve for kernel functions that the program can call. So, the OS needs to figure out some way to load the pages in memory tha...

Setting up IRQ mapping

I'm following several tutorials and references trying to get my kernel set up, and I've come across voodoo code in a tutorial that isn't explained at all. Its code that I'm told maps the 16 IRQs (0-15) to ISR locations 32-47: void irq_remap(void) { outportb(0x20, 0x11); outportb(0xA0, 0x11); outportb(0x21, 0x20); outport...

I'm interested in creating an OS. Where should I start?

I'm a handheld programmer (pocket pc mostly) I've been coding in C++ for 10 years. I'd like to build a PPC OS for the OLPC's XO, and I would like know where to get started. Does anyone have a good book I could use? ...

Roadblocks in creating a custom operating system

It seems to me that the most common overly ambitious project that programmers (esp. Comp. Sci. grads) try to tackle is building your own operating system. (Trying to create your own programming language + compiler is probably even more common but not nearly as ambitious.) For those (like myself) foolish enough to try: aside from the she...

How are Operating Systems "Made"?

Creating an OS seems like a massive project. How would anyone even get started? For example, when I pop Ubuntu into my drive, how can my computer just run it? (This, I guess, is what I'd really like to know.) Or, looking at it from another angle, what is the least amount of bytes that could be on a disk and still be "run" as an OS? ...

Multithreading and Interrupts

I'm doing some work on the input buffers for my kernel, and I had some questions. On Dual Core machines, I know that more than one "process" can be running simultaneously. What I don't know is how the OS and the individual programs work to protect collisions in data. There are two things I'd like to know on this topic: (1) Where do int...

How do I programmatically create a bootable CD?

I'm using a barebones tutorial as the basis for an OS I'm working on, and it seems to be an older tutorial: it has be compiling the kernel down to a floppy image, and then loading it with GRUB. Basically, I still want to use GRUB, but I'd like to have my OS run from a CD instead. The main reason is that I don't actually have a real flop...

Return from interrupts in x86

I have loaded an idt table with 256 entries, all pointing to similar handlers: for exceptions 8 and 10-14, push the exception number (these exceptions push an error code automatically) for the others, push a "dummy" error code and the exception number; then jump to a common handler So when the common handler enters, the stack is prop...

What is a good barebones linux distro for beginner kernel development?

In my Operating Systems class we are looking to modify a Linux kernel with some simple system calls of our own in C. What would be a good distro suited for this purpose? We don't need any frills, no GUI, a vanilla kernel, etc. The more basic the better. ...

How to build a kernel image using Visual Studio

I'd like to build an embedded kernel for an x86 machine using Visual C++. I have some C and assembly code files to compile and I'd like to link them all together in a way that is compatible with a Multiboot bootloader like GRUB. ...

For kernel/OS is C still it?

I like operating systems and would eventually like to become a OS developer mostly working on kernels. In the future will C still be the language of choice and what else should I be trying to learn? ...