Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Pure64 filesystem support
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  Messages 26 - 47 of 47 - Collapse all  -  Translate all to Translated (View all originals) < Older 
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Ian Seyler  
View profile  
 More options Aug 8 2012, 10:13 am
From: Ian Seyler <isey...@gmail.com>
Date: Wed, 8 Aug 2012 07:13:33 -0700 (PDT)
Local: Wed, Aug 8 2012 10:13 am
Subject: Re: Pure64 filesystem support

I know that pain all too well. I do my QEMU work on Windows as well.

-Ian


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ian Seyler  
View profile  
 More options Aug 8 2012, 10:17 am
From: Ian Seyler <isey...@gmail.com>
Date: Wed, 8 Aug 2012 07:17:43 -0700 (PDT)
Local: Wed, Aug 8 2012 10:17 am
Subject: Re: Pure64 filesystem support

Keep in mind that everything runs in ring 0 so there is no context
switching like in other operating systems.

The problem with the process queue is that there is no way to pre-empt
something. If all cores are busy then the new job in the queue will not
execute.

I have completed some stack fudging features in the past for another
project (Calling an OS function from an interrupt). Looking into that.

-Ian


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ben Dyer  
View profile  
 More options Aug 8 2012, 11:27 am
From: Ben Dyer <ben_d...@mac.com>
Date: Thu, 09 Aug 2012 01:27:24 +1000
Local: Wed, Aug 8 2012 11:27 am
Subject: Re: Pure64 filesystem support
On 09/08/2012, at 00:17 , Ian Seyler <isey...@gmail.com> wrote:

> The problem with the process queue is that there is no way to pre-empt something. If all cores are busy then the new job in the queue will not execute.

If the expected time required for a process to execute is small enough, that won't be an issue, but effectively that's just co-operative multitasking across the process set. For the jobs I have in mind, that's probably not a problem, but it'd make coding for HPC applications or long-running tasks unnecessarily complex.

> I have completed some stack fudging features in the past for another project (Calling an OS function from an interrupt). Looking into that.

So are you thinking of adding some sort of pre-emptively scheduled I/O tasks to the concurrency model, or would the user-developed/application code be expected to register I/O handlers that would be called from the ISRs?

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ian Seyler  
View profile  
 More options Aug 8 2012, 11:29 am
From: Ian Seyler <isey...@gmail.com>
Date: Wed, 8 Aug 2012 08:29:14 -0700 (PDT)
Local: Wed, Aug 8 2012 11:29 am
Subject: Re: Pure64 filesystem support

I found my stack fudge code. My reasoning for going with this was to not
have a crash within the interrupt call.

Current setup:
 Application is running
 Network interrupt is triggered, executes, and finishes
 Application execution is returned to where it left off

Putting the callback within the interrupt handler will cause issues if the
callback is faulty. For instance if the callback never finishes.

Future setup:
  Application installs network callback
  Application is running
  Network interrupt is triggered, executes, adjusts the stack, and finishes
  Application callback is executed, and finishes
  Application execution is returned to where it left off

-Ian


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ben Dyer  
View profile  
 More options Aug 8 2012, 11:45 am
From: Ben Dyer <ben_d...@mac.com>
Date: Thu, 09 Aug 2012 01:45:10 +1000
Local: Wed, Aug 8 2012 11:45 am
Subject: Re: Pure64 filesystem support
On 09/08/2012, at 01:29 , Ian Seyler <isey...@gmail.com> wrote:

> Future setup:
>   Application installs network callback
>   Application is running
>   Network interrupt is triggered, executes, adjusts the stack, and finishes
>   Application callback is executed, and finishes
>   Application execution is returned to where it left off

Ah, that makes sense. So although the network interrupts are initially serviced by the OS, the application is ultimately responsible for handling everything.

Are callbacks going to be for raw packets, so applications link with/include the IP stack themselves, or will the callbacks be defined on higher-level events like TCP connect, retransmit etc?


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ian Seyler  
View profile  
 More options Aug 8 2012, 2:21 pm
From: Ian Seyler <isey...@gmail.com>
Date: Wed, 8 Aug 2012 11:21:18 -0700 (PDT)
Local: Wed, Aug 8 2012 2:21 pm
Subject: Re: Pure64 filesystem support

Yes, but it depends on the type of packet that is received (or perhaps how
the callback is installed, example: promiscuous mode).

The IP stack will live in the network interrupt handler. I would not want
the application dealing with re-transmits, etc. For instance the network
handler would deal with ARP and PING replies directly and just pass the
data on to the application.

Since we don't have IP yet the network handler will just pass all received
packets to the callback handler.

-Ian


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ben Dyer  
View profile  
 More options Aug 9 2012, 2:12 am
From: Ben Dyer <ben_d...@mac.com>
Date: Thu, 09 Aug 2012 16:12:33 +1000
Local: Thurs, Aug 9 2012 2:12 am
Subject: Re: Pure64 filesystem support
Sounds great — I've just been looking at some other IP stacks (uIP and lwIP) to get a sense of the various programming models that can be used, and the approach you're describing sounds like it'll have a good balance of architectural flexibility and power/performance.

On 09/08/2012, at 04:21 , Ian Seyler <isey...@gmail.com> wrote:


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Adrien Arculeo  
View profile  
 More options Aug 9 2012, 5:36 am
From: Adrien Arculeo <aarcu...@1024degres.com>
Date: Thu, 9 Aug 2012 11:36:24 +0200 (CEST)
Local: Thurs, Aug 9 2012 5:36 am
Subject: Re: Pure64 filesystem support

Ian,

talking about IP stack, you know I would love to work on a HTTP Server for BMOS.

I still can't find the (initial) IP stack in the sources on Github. Are there yet?

Adrien


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ian Seyler  
View profile  
 More options Aug 9 2012, 10:35 am
From: Ian Seyler <isey...@gmail.com>
Date: Thu, 9 Aug 2012 07:35:52 -0700 (PDT)
Local: Thurs, Aug 9 2012 10:35 am
Subject: Re: Pure64 filesystem support

Hi Adrien,

The coder I hired to build the stack dropped out of the project halfway
through and only implemented ARP, ICMP, and IP. TCP and UDP were not
completed. I ended up removing his code from GitHub since it wasn't
complete. You can find it in an older revision: GitHub<https://github.com/ReturnInfinity/BareMetal-OS/commit/1164e6dbe8aa911...>

As for current progress I may have more to report next week. I was
approached by someone about a month ago about writing a stack for BareMetal
OS. He has experience with it before and I was informed yesterday that he
was a few days from completion. Once I know more I will announce it.

-Ian


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Adrien Arculeo  
View profile  
 More options Aug 9 2012, 10:33 am
From: Adrien Arculeo <aarcu...@1024degres.com>
Date: Thu, 9 Aug 2012 16:33:51 +0200 (CEST)
Local: Thurs, Aug 9 2012 10:33 am
Subject: Re: Pure64 filesystem support

Hoho!

I was right to ask! I follow silently all that is happening on BareMetal OS but I did not expect this one.

And honestly I did not get all your discussion about the file system .

I am dying to see both.

Adrien


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ben Dyer  
View profile  
 More options Aug 9 2012, 10:43 am
From: Ben Dyer <ben_d...@mac.com>
Date: Fri, 10 Aug 2012 00:43:43 +1000
Local: Thurs, Aug 9 2012 10:43 am
Subject: Re: Pure64 filesystem support
Adrien,

I'm interested in the same thing — I've been planning something similar to Python's Tornado framework, but with request handlers written in C and able to be deployed/updated on the fly, without restarting or interrupting requests.

The rationale behind building such a thing on BMOS, rather than a general-purpose OS, is that I think crash-only approaches [1] are going to be the only way to ensure high availability in increasingly complex distributed systems. I've had a lot of success with applications designed around this approach running under Linux, however after 9 months in production the operating system and related services are now the most common failure mode — obscure log files consuming all disk space, and various other misconfigurations that only crop up after considerable uptime. By using something which I understand from the ground up, I can ensure that there are no edge cases or components that behave unexpectedly, and can design everything to be terminated at any time and recover gracefully.

In addition, by stripping away unnecessary dependencies and complexity, it would be possible to do automated deployment and on-line software upgrades directly from version control, without the need for multiple layers of package management and automation solutions (for an application using the Tornado framework, an automated deploy solution would involve pip/easy_install, yum/apt-get, plus puppet/chef).

Anyway, if you're interested we should compare notes once the IP stack is in place, and see if our HTTP server needs are in alignment.

Regards,
Ben

[1]: http://radlab.cs.berkeley.edu/people/fox/static/pubs/pdf/c22.pdf

On 09/08/2012, at 19:36 , Adrien Arculeo <aarcu...@1024degres.com> wrote:


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ian Seyler  
View profile  
 More options Aug 9 2012, 10:52 am
From: Ian Seyler <isey...@gmail.com>
Date: Thu, 9 Aug 2012 07:52:14 -0700 (PDT)
Local: Thurs, Aug 9 2012 10:52 am
Subject: Re: Pure64 filesystem support

In regards to uIP I have had some success with porting version 0.9 to
BareMetal OS (It was responding to pings).

I had issues compiling the more advanced apps like the HTTP server and
decided that it would be best to have the stack in the OS instead of the
app.

-Ian


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Adrien Arculeo  
View profile  
 More options Aug 9 2012, 11:04 am
From: Adrien Arculeo <aarcu...@1024degres.com>
Date: Thu, 9 Aug 2012 17:04:03 +0200 (CEST)
Local: Thurs, Aug 9 2012 11:04 am
Subject: Re: Pure64 filesystem support

Ben,

I follow this wonderful project for a very similar reason. If you understand what you are doing from end to end, you have a chance to succeed, doomed otherwise.

What I like with BareMetal OS is that, even with a low level of x64 understanding (I am more a RISC person) I can write a program (using C) without complex limitations. For instance, I abandoned a project of web server well on its way just because you cannot transfer an open connection from a thread to another. You just cannot give the descriptor to something else. So I couldn't do what I wanted, i.e. on a N core machine, have 1 listener put requests in a local queue and N-1 workers extract from the queue, process and answer. Come on! That is the only design you can think of to maximise the throughput of a server whatever you are serving.

The only problem I have really with BareMetal OS is that, not knowing ASM, I need to use C and C's memory management is just disastrous for software quality. I need to remove rust on this.

It is not a surprise I "meet" you on this mailing list. Where else? Not on the "Bloat OS" mailing-list.

Ian,

you guest it. We are two guys waiting on this stack to be ready to work from it.

Adrien


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Adrien Arculeo  
View profile  
 More options Aug 9 2012, 11:11 am
From: Adrien Arculeo <aarcu...@1024degres.com>
Date: Thu, 9 Aug 2012 17:11:59 +0200 (CEST)
Local: Thurs, Aug 9 2012 11:11 am
Subject: Re: Pure64 filesystem support

Fully agreed.

In 2012, network is a core service, there should be interrupts for it. It reminds me of a version of the Z80 in the early '00s called eZ80 where four 8 bits registers for IP addresses were added.

http://en.wikipedia.org/wiki/Zilog_Z80#Derivatives

Again, not a lot of time available but happy to put it on this.

Adrien


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ben Dyer  
View profile  
 More options Aug 9 2012, 11:28 am
From: Ben Dyer <ben_d...@mac.com>
Date: Fri, 10 Aug 2012 01:28:44 +1000
Local: Thurs, Aug 9 2012 11:28 am
Subject: Re: Pure64 filesystem support
On the topic of memory management, I found JPL's C standards [1] interesting.

They strictly prohibit dynamic memory allocation except at application startup, which of course gets rid of a huge number of potential errors. The high-performance web server nginx also uses a similar approach in that it permits only a certain number of buffers of a fixed size to be used by a request or response before it writes the data to a temporary file.

Another interesting restriction was "only one unbounded loop per process", i.e. you are permitted to use a main event loop, but all others must have a statically-verifiable upper bound. This prevents you from getting stuck in an infinite loop, similar to the crash-only principle of having timeouts for everything. Very easy to enforce when you have complete transparency in the OS, very difficult otherwise.

[1]: http://lars-lab.jpl.nasa.gov/JPL_Coding_Standard_C.pdf

On 10/08/2012, at 01:04 , Adrien Arculeo <aarcu...@1024degres.com> wrote:


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Adrien Arculeo  
View profile  
 More options Aug 9 2012, 2:34 pm
From: Adrien Arculeo <aarcu...@1024degres.com>
Date: Thu, 9 Aug 2012 20:34:08 +0200 (CEST)
Local: Thurs, Aug 9 2012 2:34 pm
Subject: Re: Pure64 filesystem support

ok but this only works in a preemptive OS or in an environment where the compiler is patched. BareMetal OS is not the first and I think should not have the latter.

But keeping your point, you suggest to allocate memory in block at start and use it up to the point where it is freed automatically at the end.

That is remove malloc, realloc and free and do this instead :

void main()
{
char memory[1024 * 1024 *1024];
char *memory_pointer;
/*use 1G of memory as you like*/
...

}

Is that what you suggest? Why not, I like the idea not to deal with malloc, but it seems that malloc and free, as bad as they can be were invented for some case where this is not available. A virtue I can see is that you know before hand if you are going to fail for a memory reason.

You could set this as a good practice but how could you set this as a development rule under BareMetal OS?

Adrien


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ben Dyer  
View profile  
 More options Aug 9 2012, 11:01 pm
From: Ben Dyer <ben_d...@mac.com>
Date: Fri, 10 Aug 2012 13:01:31 +1000
Local: Thurs, Aug 9 2012 11:01 pm
Subject: Re: Pure64 filesystem support
On 10/08/2012, at 04:34 , Adrien Arculeo <aarcu...@1024degres.com> wrote:

> Is that what you suggest? Why not, I like the idea not to deal with malloc, but it seems that malloc and free, as bad as they can be were invented for some case where this is not available. A virtue I can see is that you know before hand if you are going to fail for a memory reason.

Not exactly — you'd use a bunch of statically-allocated buffers for various things, rather than just one huge one. And this would be on a per-request basis, so it'd mean you'd know exactly how many concurrent requests you could deal with. It'd also mitigate the impact of a whole class of DoS attacks since you're forced to set sane upper limits on the sizes of requests, headers, and bodies.

As far as security is concerned, fixed-size buffers are only a problem when using the C string library, which should be avoided anyway because it's too difficult to use safely.

And yes, it's a bit more difficult to write code like that but I suspect if you look at it in terms of [time taken to write code without malloc] vs [time taken to write code with malloc + time taken to debug memory leaks + time taken to deal with memory being accessed after being freed + time taken to deal with out-of-memory conditions + time taken to consider the impact of heap fragmentation] it's probably quicker to spend more time writing the initial code, and much less time debugging.

> You could set this as a good practice but how could you set this as a development rule under BareMetal OS?

I don't think avoidance of dynamic memory allocation makes sense as a general development rule, but for my specific interest — high-concurrency, fault-tolerant network services — it seems to be a common approach and I think would be worth enforcing within individual request handlers. I'd also like to use memory protection on a per-request basis to ensure they're completely isolated from each other.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Adrien Arculeo  
View profile  
 More options Aug 10 2012, 11:36 am
From: Adrien Arculeo <aarcu...@1024degres.com>
Date: Fri, 10 Aug 2012 17:36:54 +0200 (CEST)
Local: Fri, Aug 10 2012 11:36 am
Subject: Re: Pure64 filesystem support

If I understand better.

What you suggest is rather more "think of the memory you need beforehand for each variable, allocate them statically and work with that constraint as if you were programming for an embedded system in which the memory limit is very hard."

I started with embedded systems so I feel comfortable about that and yes, in a server, you need to know some fact like "n concurrent user per amount of RAM per user < Max memory of the server".

I am going to read the crash only software document this weekend.

Adrien


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ian Seyler  
View profile  
 More options Aug 12 2012, 2:39 pm
From: Ian Seyler <isey...@gmail.com>
Date: Sun, 12 Aug 2012 11:39:29 -0700 (PDT)
Local: Sun, Aug 12 2012 2:39 pm
Subject: Re: Pure64 filesystem support

Thanks for sharing this document! My thoughts were similar in regards to
memory allocation at application startup. This also leads to a much more
simplified memory manager at the OS level.

-Ian


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Daniel Cegiełka  
View profile  
 More options Nov 2 2012, 6:31 am
From: Daniel Cegiełka <daniel.cegie...@gmail.com>
Date: Fri, 2 Nov 2012 03:31:45 -0700 (PDT)
Local: Fri, Nov 2 2012 6:31 am
Subject: Re: Pure64 filesystem support

Hi,
Are there any news on the implementation of the IP stack in BMOS?

Best regards,
Daniel

W dniu czwartek, 9 sierpnia 2012 16:35:52 UTC+2 użytkownik Ian Seyler
napisał:


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ian Seyler  
View profile  
 More options Nov 6 2012, 2:08 pm
From: Ian Seyler <isey...@gmail.com>
Date: Tue, 6 Nov 2012 11:08:05 -0800 (PST)
Local: Tues, Nov 6 2012 2:08 pm
Subject: Re: Pure64 filesystem support

The developer that we had lined up did not complete the project.
Unfortunately the IP stack is stuck in limbo again.

-Ian


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "BareMetal File System - Initial specifications" by plm....@gmail.com
plm....@gmail.com  
View profile  
 More options Jan 10, 9:19 am
From: plm....@gmail.com
Date: Thu, 10 Jan 2013 06:19:29 -0800 (PST)
Local: Thurs, Jan 10 2013 9:19 am
Subject: Re: BareMetal File System - Initial specifications

On Friday, February 17, 2012 4:40:21 PM UTC+1, Ian Seyler wrote:

> Here are the current specs for the new file system. These are the
> initial specs so work is still being done. Once it is complete the
> coding for the driver will be started.

> https://github.com/ReturnInfinity/BareMetal-OS/blob/master/docs/BareM...

It is nice to see the current file system is flat. Hierarchical file system
really sucks. What users need is a tagged file system, with fast indexing
and searching. I wonder what is the evolution direction of BMFS. Thanks.

Best,

DAY


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages < Older 
« Back to Discussions « Newer topic     Older topic »