Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×

Comment Re:Adapt (Score 3, Interesting) 626

All that which you say is certainly true, but I would still argue that EPIC's greatest problem is its hard parallelism limit. True, it's not as hard as I tried to make it out, since an EPIC instruction bundle has its non-dependence flag, but you cannot, for instance, make an EPIC CPU break off and execute two sub-routines in parallel. Its parallelism lies only in very small spatial window of instructions.

What I'd like to see is, rather, that the CPU can implement a kind of "micro-thread" function, that would allow two larger codepaths simultaneously -- larger than what EPIC could handle, but quite possibly still far smaller than what would be efficient to distribute on OS-level threads, with all the synchronization and scheduler overhead that would mean.

Comment Re:Adapt (Score 4, Interesting) 626

As I mentioned briefly in my post, there was research into dataflow architecures in the 70's and 80's, and it turned out to be exceedingly difficult to do such things efficiently in hardware. It may very well be that they still are the final solution, but until such time as they become viable, I think doing the same thing in the compiler, as I proposed, is more than enough. That's still the computer doing it for you.

Comment Re:Adapt (Score 5, Interesting) 626

No, it's not about adaptation. The whole approach currently taken is completely, outright on-its-head wrong.

To begin with, I don't believe the article about the systems being badly prepared. I can't speak for Windows, but I know for sure that Linux is capable of far heavier SMP operation than 4 CPUs.

But more importantly, many programming tasks simply aren't meaningful to break up into such units of granularity is OS-level threads. Many programs would benefit from being able to run just some small operations (like iterations of a loop) in parallel, but just the synchronization work required to wake up even a thread from a pool to do such a thing would greatly exceed the benefit of it.

People just think about this the wrong way. Let me re-present the problem for you: CPU manufacturers have been finding it harder to scale the clock frequencies of CPUs higher, and therefore they start adding more functional units to CPUs to do more work per cycle instead. Since the normal OoO parallelization mechanisms don't scale well enough (probably for the same reasons people couldn't get data-flow architectures working at large scales back in the 80's), they add more cores instead.

The problem this gives rise to, as I stated above, is that the unit of parallelism gained by more CPUs is to large to divide the very small units of work that exist among. What is needed, I would argue, is a way to parallelize instructions in the instruction set itself. HP's/Intel's EPIC idea (which is now Itanium) wasn't stupid, but it has a hard limitation on how far it scales (currently four instructions simultaneously).

I don't have a final solution quite yet (though I am working on it as a thought project), but the problem we need to solve is getting a new instruction set which is inherently capable of parallel operation, not on adding more cores and pushing the responsibility onto the programmers for multi-threading their programs. This is the kind of the the compiler could do just fine (even the compilers that exist currently -- GCC's SSA representation of programs, for example, is excellent for these kinds of things), by isolating parts of the code in which there are no dependencies in the data-flow, and which could therefore run in parallel, but they need the support in the instruction set to be able to specify such things.

Comment Re:You don't (Score 1) 904

How about "bash virus.txt"?

I'd like to see that "solved".

(It is far from trivial to make bash non-executable - you essentially need to make a "kiosk")

Then again, that would be no different from what you'd be able to do anyway if you get a shell prompts; shell scripts are just sequences of shell commands, after all. I don't see the problem. If you don't want your users able to do stuff, then naturally, you need to give them a restricted shell, which you'd do either by putting rbash in their passwd entry, or locking down Gnome for them.

If you really feel the need to, that is; I never really understood the purpose of locking down a login session to begin with. Security problems shouldn't be solved that way anyway, and if it isn't security problems you're out to solve, then what is it that you're trying to do?

Comment Re:You don't (Score 3, Informative) 904

Guess what? noexec doesn't do jack shit on the majority of Linux systems, and does not prevent anybody from running a. You know why? /lib/ld-linux.so.2. (On x86_64, there's also /lib64/ld-linux-x86-64.so.2.)

Oh really? Seeing how mmap(2) requires the PROT_EXEC flag to make segments executable in the MMU, and checks those flags against the mode of the i-node, I found that hard to believe, and have it a try. These are the results:

$ cd /tmp
$ mkdir mtest
$ sudo mount -t tmpfs -o noexec none mtest
$ cd mtest/
$ vi test.c
$ gcc -o test test.c
$ ./test
bash: ./test: Permission denied
$ /lib/ld-linux.so.2 ./test
./test: error while loading shared libraries: ./test: failed to map segment from shared object: Operation not permitted
$ sudo /lib/ld-linux.so.2 ./test
./test: error while loading shared libraries: ./test: failed to map segment from shared object: Operation not permitted

Comment Re:Most common use of virtualization (Score 1) 422

I'm wondering though; why are all these groupware systems large, monolithic applications? I, for one, would never want to use a monolithic system like Zimbra or Citadel. (Or Exchange, for that matter, of course)

When I set up a system for just handling e-mail, I always use different programs for the different tasks -- one MTA (usually sendmail for me), one MDA (usually procmail for me), one IMAP server (usually dovecot for me), and one web front-end to it (I wrote my own web front-end, Dolda Webmail), and storing all the messages in the filesystem. You know, the standard Unix philosophy of doing one thing and doing it well?

Are there no similar subsystems for handling calendaring and tasks as well? I've heard of the CalDAV protocol, which seems kind of reasonable, but I haven't found any reasonable Linux server for it, and neither have I found any web front-end for it. And what about contact management? Are there any standards at all for that? Are there any more parts to a groupware system?

Comment Re:The difference (Score 1) 176

You are quite right in your point that "communism cannot work, since it does not deal with humans", but that is about as far as I'd be willing to agree with you.

To begin with, communism is not the ideal form of society either in practice nor in theory nor anywhere else. It is the product of a man who rejected all forms of rational thinking (you do know that Marx used Hegelian dialectics to derive communism, right?). You assert that in an ideal world, noone would be selfish, but as I have described elsewhere, a society of such beings cannot work to begin with; if noone were indeed selfish, there would be no self-interest to satisfy even by others, and noone would be happy to get work done for them, since they would not benefit from it. Selfishness, on the other hand, is what drives people (and thus, indirectly, society) forward, as I described in the post you replied to. The world of which you speak, where people are completely selfless but even so derive benefit from doing things is not only not the ideal world, it is a contradiction in terms.

Second, you describe capitalism as a system that "deals with real humans", which is a notion that I reject, and which is why capitalism and communism are not "alternatives" or "rival theories" as is often claimed. Communism, and many other theories like it, are indeed designed systems that are supposed to be applied to society. Capitalism, on the other hand, is not such a system; it was "designed" by noone, but grew by itself as a natural consequence of a society of free men. Certainly, it can be treated as a system, and there have indeed been many treaties written on it, but the difference is that capitalistic economics is a science that observes and predicts reality (as best observed in Austrian economics, as far as I've been able to tell), whereas communism is an edict, pushed onto a society.

You may want to read Common Sense by Thomas Paine, which explains quite well why we have government at all, and why government and society are two completely different things.

Comment Re:Capitalism vs. Communism (Score 2, Insightful) 176

Why should I help a blind stranger to cross the street? Why should I call police when I see someone else being robbed? Why should I tip the delivery boy? Why should I explain some stranger the way?

Because I behave like I would want others to behave. Because I think the world is a much better place to live when people are helpful, generous and . Because I am not a sociopath.

Thank you for proving my point: Obviously, you do it for selfish reasons. Per your own admission, you do it partly because you wish others to learn from your example and reap the benefits of reciprocal action, and partly because it makes you feel good ("because I am not a sociopath").

There is, as I've explained elsewhere in the thread, nothing that prevents selfish action from also benefiting others. The difference lies mainly in knowing that, ultimately, you do everything for selfish reasons, and there's no reason for being hypocritical about it.

Comment Re:Capitalism vs. Communism (Score 1) 176

Well, it's quite simple, really. I have a need for a program, so I write it. That's obviously my selfish reason for writing the code, as you rightly point out.

Then, when I decide to publish it as open source, it is for a number of reasons;

  • Partly, I tend to hope that someone will look at the code, and maybe comment on it or even improve it. That hasn't happened to any great extent, however (though I have gotten a few human language translations for a webmail that I wrote);
  • Partly, it is because of my personal joy in seeing people use what I've done. This is one of the reasons that I'd like to emphasize, though, because it may seem selfless or altruistic at first glance, which in fact it isn't;
  • Partly, when people use it, I do tend to get a variety of bug reports and comments, not on the code, but at least on the features of the program, which is often quite useful to me;
  • Partly, it lets me speak from personal experience in threads like these, rather than just speaking of principles without having partaken practically in them myself. :-)

Comment Re:Capitalism vs. Communism (Score 1) 176

Because some of us have worked out that we can do better within the structure of a healthy and functioning society than we could without one. Doing things that benefits society directly benefits us.

It seems that some people, such as yourself, think that being "selfish" implicates the rejection of society. I would argue the opposite of what you do: Doing things that benefit oneself directly benefits society. (Only I won't, because I reject speaking in such terms as a "society which can benefit", as if it were anthropomorphizable)

People benefit from being part of a society precisely because of the other people in that same society doing things that benefit themselves. It is the basis of trade; two parties exchanging goods and/or services because the things being exchanged are worth more to the other. Note, however, that none of the parties trade for the benefit of the other, but for the benefit of the self, and even despite that, both benefit.

The only difference between selfishness and altruism in 90% of cases is how long term you are thinking.

Only if you use some very odd definition of "altruism" which would be unknown. Normally, when one speaks of "altruism", one speaks of doing things with a complete lack of self-interest in the things one does, only for the benefit of others. Which is exactly why there can be no society where everyone is altruistic, because without any self-interest, there would be no benefit in any action, and everything would be pointless.

What is short-sighted is thinking that selfish action can only benefit oneself. Rather the opposite, if it did indeed not benefit the others involved in the action, it would not be agreed to in the first place. And that is why we have courts.

Comment Re:Capitalism vs. Communism (Score 2, Interesting) 176

Who said it's an either/or?

To be fair, it is you who introduced the dichotomy; let me quote: "If humans were never selfish and always worked for the betterment of everyone". My problem with that statement is its implication that it is somehow bad when people are being selfish. However, as you yourself write;

Communal work usually benefits everyone including the person doing the work. The problem is that the benefits are not always obvious or easy to internalize.

Which is quite correct. However, when that happens, people work on it together because of their own, selfish interesting in getting done whatever it is that needed to get done. They do not do it for the purpose of "the betterment of everyone"; they do it because they, themselves and individually, benefit from it. To go on:

The most natural form of such a system is a risk/reward system where work is done with the expectation of a possible reward. This is, for better or for worse, capitalism.

You misunderstand capitalism, it seems. Capitalism is not a "system where work is done with the expectation of a possible reward". It is not a pre-planned system at all, to begin with. It is simply the natural consequence of a society where people are free to trade services with each other for whatever purpose and value they individually get to decide. This is the ideal form of society.

You claim that communism and/or socialism is the ideal form of society, and I would like to meet that statement somehow, but unfortunately I cannot, because typically when I ask 10 people what communism or socialism is, I get 15 different answers. I can however assert that people should definitely be selfish, because only then can they move forward.

Comment Re:Capitalism vs. Communism (Score 1) 176

There's another problem with communism. Suppose everyone *was* completely altruistic. They all want to do what would be best for society. What should they do?

I'd argue your post would have been better if you had stopped there, because that points out the core of the question: If everyone were completely altruistic, what should they do? If noone had any self-interest, there would be no useful work to do, since noone would benefit from it.

Comment Re:Capitalism vs. Communism (Score 4, Interesting) 176

One of the key issues here is a huge misunderstanding of why the US clings to capitalism. Regardless of anything else, communism and/or socialism in their many forms are the ideal forms of society. If humans were never selfish and always worked for the betterment of everyone, there would be no need for anything like money, wealth, or capitalism.

Please tell me; why should people work for the betterment of the whole of human society rather than for themselves? Why should people do things that do not benefit themselves?

Open Source just happens to be the technological way of working together. :-)

I would argue against that. At least for my part, when I publish programs that I have written as open source, it is for perfectly selfish reasons.

Slashdot Top Deals

Our OS who art in CPU, UNIX be thy name. Thy programs run, thy syscalls done, In kernel as it is in user!

Working...