User:01000101

From OSDev Wiki
Jump to: navigation, search

01000101's wiki page

Introduction

I got into OS development quite a while ago in search of a good challenge, and that is exactly what I got. My first OS was nothing more than a re-implementation of some tutorial code that said "hello world!" on the screen and fit into the boot sector of a floppy disk. It took a long time for me to acquire more knowledge on the subject, as along the way I picked up some invaluable resources (such as the Intel manuals, and other books) that kept me interested in development. Later I went on to develop network card drivers. The RTL8139/RTL8169 chip sets were the first I developed for, and I later went on to both add to the RTL8139 wiki entry and to create the RTL8169 entry. The latest network card I have written a home brew driver for is the Intel PRO/1000 (82563EB), and it is by far the most feature rich card I've ever owned. If you want to find out more info about me, check out my OS website http://www.dins-os.com .

I also recently started a wiki article on my own optimized library (OptLib). This can be found here User:01000101/optlib/

I have some code in the VirtualBox trunk for their E1000 (Intel NIC) driver and probably some optimized memory functions in Pedigree. I also have posted an example driver for the Intel 825xx-series network chipset and host the C file on my business website (http://www.randomaccessit.com/osdev/i825xx.c)

D.i.N.S.

D.i.N.S. (Drop-in Network Security) is the name of my operating system. It is designed to act as a specialized deep-packet analyzer for educational and corporate networks. As this is my operating system, I think it would be appropriate to list some of the implemented features just to give an idea on the overall completeness of the OS.

  • Pure monolithic design.
  • Written in Assembly and C.
  • Designed and optimized for 64-bit Intel Xeon processors.
  • Utilizes 64-bit Long mode.
  • Paging; 1:1 map.
  • LBA28 HDD support.
  • SMP optimization.
  • Arbitrary-precision integer support.
  • ARP/RARP/ICMPv4+6/DHCP/DNS support.
  • Minimal HTTP server.
  • Headless design.

On July 15, 2008, D.i.N.S. LLC was formed. I started getting quite a bit of support from the business world and the education world as well. About a month later I ended up getting my first investment into the company to buy equipment (computer/network parts). Currently, I am working towards a much larger investment that will set the project on a year-long developing spree in hopes of getting prototypes out and into public (yet monitored) networks.

DLFS

D.i.N.S. Logging File System is a custom designed file system for use in the D.i.N.S. OS. It is designed to log networking events (such as p2p/torrent detection) by date. It doesn't use the traditional super-block approach. Instead, it uses a design closer to the MP tables or SMBIOS structures.

Basically, a step-by-step of read a log from the FS would go like:

  • read the floating structure, it can be in blocks 1 (not the boot sector) through 64, and test the signature "DLFS" in the first 4 bytes.
  • calculate and compare the 1-byte checksum.
  • either examine the (mostly reserved) extended structure right after the FPS block, or check out the block pointed to in the "start year" field.
  • from within the "Start year" structure, you can either examine the next year structure pointed to in the "Next chain" field, or you can jump to a block defined in the "entry" field which is used to store months 0-11.
  • the process can then be repeated (with the exception of the "next chain" field) to end up at the log of any specified day.

The logs themselves are of variable size (but will occupy 512-bytes as a minimum). The fragments of logs that exceed the size of one sector are linked together by a "next chain" field in the log structure. Also, there is a variable amount of logs that can be stored per day.

Currently only the year block addresses are cached in memory for quick retrieval. The cache is only updated when a year is created. Deletion and re-allocation of unused blocks is not currently implemented, but it's in development.

The current state of the FS is in beta and has read/write capabilities.

Personal tools
Namespaces
Variants
Actions
Navigation
About
Toolbox