<div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="im"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Was starting to write a blog post, but throwing an early discussion point<br>
out, possibly relevant to John's courses at the moment<br>
</blockquote>
<br></div>
Thanks for starting a thread! :)<br>
<br>
p.s. Where's your blog?</blockquote><div>Will send a link after I finish the post <br></div><div> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Looking at a list of key Unix features, and the way its actually used at the<br>
moment, its kind of interesting how little is actually used:<br>
<br>
Intent: Small processes chained together to do bigger things<br>
What happened: Big programs with lots of options<br>
</blockquote>
<br></div>
While I was learning to install and configure Postfix, I read that someone was upset because if an email was addressed to them and to a mailing list they were subscribed to they would get the message twice under Postfix, whereas Sendmail would have omitted the duplicate. The reason Postfix couldn't support this feature was because of its modular design, whereas Sendmail, being monolithic, was able to implement that feature. If you look at the design of Postfix you will see the modular spirit of Unix shining through.</blockquote>
<div>Postfix is like ancient dude! Was thinking more recent things (and here's looking at you Oracle)<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Intent: Multiple users<br>
What happened: Single user running a daemon process OR a single user<br>
</blockquote>
<br></div>
I think what happened there was computers became much faster and much cheaper very quickly.</blockquote><div>Even before that I think we were moving away from it - if you look at best practice it almost dictates one user per machine now - although see security<br>
 </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Intent: Multiple applications per machine managed by priority<br>
What happened: Single application per machine, or even virtual machine with<br>
the hypervisor sorting priority<br>
</blockquote>
<br></div>
That's mostly for security reasons I would say. If one of your processes is exploitable it can only affect the (virtual) machine running that process. It also makes administration simpler and introduces a level of redundancy which is good.</blockquote>
<div><br>I think thats a retcon actually - hypervisors were rejected strongly as a good way of isolating processes for most of the Unix community for a long time; Unix was designed to be secure - so did it fail in its security model?<br>
<br>It simplifying administration is an interesting one as well - possibly points to another fail on design. If you look at Unix its clearly designed to run as much as you can fit on a box. A simpler OS supporting a single user level process (aka CMS) might have been the right path. Its just interesting that its such a notable deviation from design intent.<br>
<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="im">
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Intent: Use process per new task<br>
What happened: Use a single process with a new thread per task<br>
</blockquote>
<br></div>
Well processes are more expensive than threads, and threads can share data without duplicating it.</blockquote><div><br>Threads admittedly didn't exist back in the day and had to be retrofitted to most Unixes. Its interesting that Unix didn't evolve to be able to manage ever lighter processes to maintain the paradigm<br>
 </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Intent: Big machines managed efficiently<br>
What happened: Lots of small machines managed by scale out<br>
</blockquote>
<br></div>
I think that's just how the economics played out.</blockquote><div>It does mean we're living with a design that is past its use by date.<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I know there's lots of reasons for this - the emergence of the Internet and<br>
vastly different workloads to those anticipated. But even some of the no<br>
brainer things like using nice and user levels for isolation we've decided<br>
to user hypervisors for instead, which is interesting, because one of the<br>
original selling features of unix was security.<br>
</blockquote>
<br></div>
I haven't quite followed your last point, what has security to do with hypervisors?<br></blockquote><div><br></div></div>A lot of admins don't like (as you alluded to before) like running multiple processes on a machine for "security reasons" - which is a spectacularly crap. They will quite happily run multiple VMs on the same physical kit and not bat an eyelid about security. The key design objective for Unix was to be able to run multiple processes in a secure, prioritised manner on a single instance and no system admin is brave enough to even try nowadays<br>
<br>Its just an interesting dilemma - on the one hand Unix is crafted and guided by many many design decisions that actually turned out to be bollocks in the long term, so we're living with a design that no longer fits our usage pattern.<br>