From owner-freebsd-hackers@FreeBSD.ORG Fri May 24 10:16:27 2013 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id C415E89E for ; Fri, 24 May 2013 10:16:27 +0000 (UTC) (envelope-from prvs=8498cab4e=welcomet@amazon.com) Received: from smtp-fw-2101.amazon.com (smtp-fw-2101.amazon.com [72.21.196.25]) by mx1.freebsd.org (Postfix) with ESMTP id 63D72173 for ; Fri, 24 May 2013 10:16:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=welcomet@amazon.com; q=dns/txt; s=amazon201209; t=1369390587; x=1400926587; h=from:to:subject:date:message-id:mime-version; bh=ZCqhtu3DAra6F8Z7l8wf5mvdzXhmnbQFmW85qsOEdeI=; b=jD/iDmdsyDRBEP/mSCeA/T6L90u0DnSqHkTrXZ/1I2PxGJzXDjpsVfwz c2FoUfp4/i4w0ChrXy8ZAxSGALtNmdYlbIWQg0Ugx35S9Tz1buDdClb9f euUE73M2WX1FW4KR1AWzpH9wByisgAa/NhbFOuJhexOvqCAp4QPqAmh7X o=; X-IronPort-AV: E=Sophos;i="4.87,734,1363132800"; d="scan'208,217";a="566927361" Received: from smtp-in-9002.sea19.amazon.com ([10.186.174.20]) by smtp-border-fw-out-2101.iad2.amazon.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 24 May 2013 10:16:25 +0000 Received: from ex10-hub-14001.ant.amazon.com (ex10-hub-14001.ant.amazon.com [10.36.60.87]) by smtp-in-9002.sea19.amazon.com (8.13.8/8.13.8) with ESMTP id r4OAF3pb006038 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=OK) for ; Fri, 24 May 2013 10:16:24 GMT Received: from EX10-MBX-14001.ant.amazon.com ([fe80::b957:af21:f5bc:52d1]) by ex10-hub-14001.ant.amazon.com ([::1]) with mapi id 14.02.0247.003; Fri, 24 May 2013 03:15:24 -0700 From: "Welcome, Traiano" To: "freebsd-hackers@freebsd.org" Subject: Writing a (BSD like) Operating Systems From Scratch Thread-Topic: Writing a (BSD like) Operating Systems From Scratch Thread-Index: Ac5YY10UujfiegY2TwCTmdycZz/xLQ== Date: Fri, 24 May 2013 10:15:23 +0000 Message-ID: <8F56C8EF8265DF489B64A19B10910AC7025C53B2@ex10-mbx-14001.ant.amazon.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.36.9.182] MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.14 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 May 2013 10:16:27 -0000 Hi All I've been read thousands of pages of FreeBSD and Linux Kernel source code a= nd books on the internals of BSD and Linux over the years in attempt to dev= elop a complete understanding of operating systems (or at least, UNIX like = ones). However, I feel that I'm as mystified as to the finer details as whe= n I first started. So I've concluded that the best way to really understand= the deep dark details of UNIX is to try and write one from scratch (using = the general guidelines of standards like POSIX etc ...), and maybe taking a= peek at BSD and Linux from time to time. My questions around this are: a) What kind of hardware (processor) would I use as a development plat= form, given the requirements of cheap, well documented, easily obtainable,= easy to debug etc ... I believe the hardware platform chosen should satisf= y the following requirements: - Cheap and relatively commodity (easy to get hold of) - Well documented architecture and API (there's a nice assembly la= nguage for it) - Supports single and multi-core multi-tasking, memory management b) Are there recommended books or other resources that "hand hold" one= through the process of implementing a "toy operating system" , that are: - Current, circa 2011 - 2013 - For hardware that meets the characteristics of a) above - Offer a simple start from the very basics of operating system de= sign and implementation to the gory details c) What would be the best practical entry point design and implementa= tion of operating systems? E.g should I begin with studying the assembly la= nguage for a chosen hardware platform first, then move on to booting someth= ing of memory, or should I start with the high level architectural details= of the O.S ? Many thanks in Advance for your thoughts! Traiano Welcome