The uselib() system call is quite old. It was introduced in Linux 0.12 as a quick way to support dynamically loaded, statically linked libraries.
The way shared libraries worked was like this:
libc was compiled and linked like a normal program would be, except that its start address was set to (say) 0x400b0000. printf() would be at (say) 0x400cb110.
Main programs were linked down at 0x08048000 or so, and knew where in memory printf was. The kernel knew how to load your main program and jump to its start. However, there was nothing but a segfault waiting for you at 0x400cb110 initially. So how did the kernel know what shared libraries to load?
Well, one possibility was to put a list of library paths into the executable and teach the kernel to load 'em. Ugh. Didn't SCO do that?
Instead, the linker would add a little assembly language stub to start your main program. It looked a little like:
uselib("/lib/libc.2.so")
uselib("/lib/libm.2.so")
and the uselib syscall would graft the contents of those files directly into memory, in the same fashion the kernel knew how to load the main program. Voila, calling printf at 0x400cb110 will now work.
Eventually, this switched to a single uselib("/lib/ld.so") so we could have search paths and dynamic linking. But it was a pretty good start.
After we all switched to ELF, uselib wasn't such a good idea, as ELF allows some more clever things than just direct-mapping the whole executable at a fixed address./lib/ld-linux.so switched to using mmap(). If you haven't run an a.out or libc5 executable, it is extremely unlikely your machine has ever invoked this syscall.
As part of the a.out->ELF transition, the uselib() syscall was preserved. It allowed old-style fixed location libraries to be dressed up in new ELF clothing. A few years ago I tried uselib() on MIPS, and had a miserable time trying to get GNU ld to make a library the kernel didn't reject. I gave up.
So how is this bug like Microsoft? The bug is in a mechanism that is a holdover from an older, simpler time. Nobody saw a good reason to take it out. And it didn't get much security scrutiny until somebody said, "hey, what's THAT still doing in my OS? I bet it's got bugs!"
One thing you can add to money saved: property taxes. My property taxes are 1/20 what some of my family pays. 1/20! All because I live outside city borders, I don't mind well/septic, I don't care about municipal trash pick-up, I live in a low-crime area, etc. They live in yuppie neighborhoods and pay in the thousands of dollars...for what? Sure, they have a nice library, but who cares?
What's your school district like? How much time do you spend in town?
Since my latest one-liners haven't made much moderation progress, I suppose I'll be a little more explicit.
Down the road from here is a town where the million dollar houses are essentially an investment in a school district. You pay a lot of money up front for a slot, and you pay a fair amount every year. In return, you believe that your kids are going to one of the better public school systems in the state.
Towns and cities are interesting because of the density of interesting people drawn to them, and also because the density creates economic opportunities. With this density comes various economic costs. You can't control exactly what people show up, which is good, because you never know who's going to have a good idea, or be a good worker. But that also means The Wrong Kind Of People (define by your own value system) are going to be there in some number. Therefore you're going to need police, social services, methadone clinics, etc.
And density has its own costs. Boston has spent around $14 billion on...around twenty miles of two freeways. If there weren't all these densely packed buildings (read investments), it would have been a trivial job to tear everything down and build from scratch the way you could in the red states. But that would stop the city, and stop the returns of investments on all those skyscrapers. (You care because your mutual funds are most likely managed there.)
I guess what I'm saying is "minimize property taxes" is not sustainable for an entire society. Or maybe it is, and we could all move to a ring of exurbs, slowly sinking into Jeffersonian agrarianism. Now ask yourself if the economic contributions to your upbringing, education, and employment would exist in that world, and would you be posting to Slashdot?
BTW, I grew up with a well and a septic tank. I visited my parents this week. They still don't have broadband, and not for any lack of desire.
It's a >16 hour flight from where I live to Seoul. If I'm in business class, I might be able to scrounge up a 12 volt socket. I can buy several handhelds for the price differential between economy and business class.
And while I'm spreading out my modpoint target by responding to myself, I might as well add that I just spent ~8 hours flying back fron Arizona. In economy, yes. Luckily, I was hoarding batteries for my laptop, and got to play through Golden Axe several times.
The woman in front of me was relatively nice in pointing out that every time I pounded on the keyboard on the laptop on the tray, it shook her seat. Oops. Note to self: place laptop directly in lap when playing frustating games. Two runs with the dwarf later, I was home.
Are people really away from 110*n volts for more than 2 to 3 hours at a time, unless they're already making a decided effort to retreat from technology?
It's a >16 hour flight from where I live to Seoul. If I'm in business class, I might be able to scrounge up a 12 volt socket. I can buy several handhelds for the price differential between economy and business class.
Re:catch-up has slowed down in my opinion
on
Firefox - The Platform
·
· Score: 2, Insightful
Going forward, I would say that Firefox has more of a fight on its hands, now that Microsoft is starting to listen to the browser crowds.
"Going forward" is corp-rat speak. People who speak English prefer the phrases "in the future" or "from now on". The first of those two has become quite unfashionable; I'm not sure why.
You may begin your speculation here. (Or not; lord knows I've missed the moderation and conversation window already.)
I'll start. The word "future" was tarred by association with a set of know-nothings who oversold their products. Unfortunately, "going forward" has now been tarred by association with a different set of etc etc etc
- Macs don't have a $2000 start up price tag, they actually start at $799 with the eMac, for portables $1099. Those of which are better spec'ed than low-end PCs.
I've got a really nice 22" monitor here. What's the cheapest Mac I can buy that can use it?
That's the core of the various free software guidelines.
You never need to ask permission before taking some 3D library and stuffing it into an SNMP monitoring tool, and then posting it on freshmeat---where some person on the other side of the world finds it and hacks up a web interface.
You never have to be captive to a copyright owner. If you think RMS is making poor technical decisions in FSFmacs, or XFree86 does silly things with licenses, or some guy neglectshishobby projects (ahem), you can go off on your own without begging anybody. All you have to lose is the previous name and its reputation.
On the other hand, there are about a zillion Linux distros out there that nobody's heard of. The ultimate penalty for doing a bad fork is being ignored.
This is a harder problem than basic SSL-for-Credit-Card-Numbers, which is trying to let the client enter some bits on an unprotected Windows box hanging off the Internet, pack them in an armored box, and ship them to a usually-almost-as-badly-protected server on a well-advertised Internet connection, and optionally do some validation on whether one or both ends are really the machines Verisign thinks they are.
Dangerously close to spaf:
"Using encryption on the Internet is the equivalent of arranging an armored car to deliver credit card information from someone living in a cardboard box to someone living on a park bench."
This quote first appeared in print in the first edition of Web Security & Commerce (O'Reilly, 1997, S. Garfinkel & G. Spafford). The quote is on page 9:
Secure web servers are the equivalent of heavy armored cars. The problem is, they are being used to transfer rolls of coins and checks written in crayon by people on park benches to merchants doing business in cardboard boxes from beneath highway bridges. Further, the roads are subject to random detours, anyone with a screwdriver can control the traffic lights, and there are no police.
I originally came up with an abbreviated version of this quote during an invited presentation at SuperComputing 95 (December of 1995) in San Diego. The quote at that time was everything up to the "Further...." and was in reference to using encryption, not secure WWW servers.
The call to __main is automagically inserted for any function called main; it goes away if you rename the function to main2. It makes no difference whether main is declared void or int; after all, the compiler knows whether the call discards its results.
By inspection, this uses constant stack space. (Which means the int version does use twice as much stack space per function call as the void version, ha ha ha)
Some of the details here may be x86 and/or win32 ABI-specific, and certainly gcc-specific. But in general, simple tail recursion, especially in static functions should be OK.
Postscript: I just about spit Diet Mountain Dew out my nose when I saw what the gcc 3.4 snapshot I use for MIPS development did to such a silly example. Two quick facts about MIPS: it takes two instructions to load a 32-bit constant (lui/addiu), and the instruction *after* a jump is always executed (branch delay slot).
gcc not only converted printf to puts but it scheduled all the delay slots and unrolled the loop:
lui $4,%hi($LC0) $L4:
jal puts
addiu $4,$4,%lo($LC0)
Probably a package that weighs 5 pounds, doesn't open right, has about 2 sentences of actual use,
Oh, I expected that joke to go a different direction:
Probably a package that weighs 5 pounds, is misaddressed, has excess postage, has leaking liquids or powders, has exposed wires, emitting a ticking sound....
Lua adict = {key='val', key2='val2', key3=3.14} for k,v in adict do
print(k.." -> "..v) end
Why is Lua relevant to this thread? For better or worse, Lua is very small, in a number of dimensions. The number of things you have to remember is small, and you can get by with even fewer. I suppose you could go functional if you wanted to:
foreach(adict, function (k,v) print(k.." -> "..v) end)
...but there's more brainwork involved. As other posters have mentioned, functional iterators don't get you much if you're just running the function for side effects. "Code should be organized vertically, not horizontally."
If you think of Python as Common Lisp, Lua is like Scheme. Except Lua's in a lot more console games than Scheme.:-)
CISC processors tend to have smaller code size, even if the execution units are similar. You can think of this as CISC having a decompression engine between icache and the execution units. When main memory is slow and far away, reducing the amount of memory needed for code can be helpful, especially in modern (bloated?) systems with zillions of bytes of shared libraries loaded.
Here's a ref to a discussion of RISC's response to this problem.
Because I don't use Photoshop and don't do much media processing, I'm not all that interested in how those application-level benchmarks play out. The things I care about are integer-based. Although I've done some crossplatform benchmarking of my typical workload before, it's time-consuming to get that all set up the right way. I may return to that at some point, but I've found that SPEC CPU2000 roughly corresponds, at least in the integer tests. The rate tests don't measure communication costs between processes on multiple processors, so they're a bit of a best case for multiprocessor systems. Still, they can be revealing.
Apple publishes a base 17.2 SPECint_rate for the dual 2GHz G5 (not submitted to SPEC? they point here. Among the published scores at spec.org is a dual Opteron 248 running Linux and using gcc.
Xi Computing charges $200 more for the dual 248 over the 246 the parent article was writing about. So deduct ~10% of MHz from that 27 if you want both boxes to be dual 2GHz....
Linux is good because you can investigate what actually happens.
default_idle() is called when there's no special power management idle function (which presumably does better).
if (current_cpu_data.hlt_works_ok && !hlt_counter) {
__cli();
if (!current->need_resched)
safe_halt();
safe_halt() enables interrupts and halts the CPU; I'm not going to bother hunting down data sheets to demonstrate the effect this has on power consumption.
APM and ACPI on x86 do fancier things; there are similar tools on other architectures. Trust me, the battery life of my Casio E-15 running Linux improved dramatically when I put in the "go to sleep code" in the analogous part of the MIPS kernel.
I don't think it's cheap at all. Consider it this way: he's paying to open the hardware platform up for software platform competition. The stereotypical Evil Company would keep the ability to run 3rd party software on the box to themselves; he's willing to let the world have it.
Here we go again. I really don't have all day to poke holes in this, and because I'm actually trying to cite and verify I'm going to completely miss the moderation window, and lose readership. While some of the claims are correct, don't assume I agree with any of them just because I didn't refute.
A good PCI-X capable Fiber Channel card on a mac [...]
There are no Macs that support PCI-X. I am therefore suspicious of the numbers you claim for this configuration.
Next, RC5. The rant here seems similar to another Anonymous Coward post back here; I'm not going to copy in my response again; quick summary: I didn't buy my computer to run RC5 really fast, and neither did you.
Cold memory random read and write is FASTER on macs than DDR machines as seen in benchmarks but this author does hit upon that topic indirectly a little. Even if macs in Feb 2002 were faster than AMD for scatterred random read and write, the current 3 desktop macs all use DDR ram now so probably lack speed boost for that action, but do have write agregate (combined writes) across pci bus and other tricks.
This paragraph is confused. Yes, "cold start" memory latency is very important for many tasks, and is often overlooked. But how is the first sentence be true when many Macs are DDR machines? And where are these benchmarks? I just went looking for DDR Mac latency scores and couldn't find anything. Does anyone have lmbench memory latency numbers for the Xserve or the current PowerMacs? Oh, and write combining is hardly a Mac trick. The hiddedn "backside only" cache of Pentium 4, and older macs, is the reason you could only have one cpu.
Incorrect. You just need a cache coherency protocol between your processors. "Backside" has nothing to do with it. For example, the dual-processor Pentium III box I'm typing this on has "backside" cache on each processor; it's just hidden inside the CPU packaging rather than brought out to extra pins to connect to an external cache.
There is no "PACK(1)" prgma for c structures on a mac.
happily returns "1" on 10.2. In fact, if i doesn't cross a double-word boundary, there is no penalty for use on later CPUs. Yes, I just verified this on the G4 downstairs.
And RAM? Don't make me laugh! Try to find an AMD board that takes 4 gigabytes of RAM and USES it as fast as the fastest AMD can. every tweaker site says you can only use one 512MB part and have a max of 512MB.
Although you can't get the absolute, topped out single-CPU performance with it, dual-CPU boards like the Tyan ThunderK7Xpro support up to 4G of registered PC2100 RAM now; these boxes still comfortably beat current top-end G4s at tasks like SPEC CPU2000. If you really want a lot of memory you'll have to get a box from a major vendor; the Dell PowerEdge 6650 comes to mind as a 16G machine. Unfortunately, there aren't any AMD boxes out there like this that I know of, but Hammer will change that.
In 2002 no linux with any normal tweak allows a user task to hold and lock 1.5GB of reeal ram, its all virtual or fake.
Get an Alpha. Although I have no direct experience with this, reliable sources claim you've been able to go past the 32-bit 4G address space limit for several years.
thankfully apple is migrating to 40 bit address space physically soon in august with the new lightweight Power4.
I think my favorite summary of postmodernism this month is from, of all movies, Hudson Hawk. The snotty, upper-class-accent, over-the-top villain gloats:
History! Tradition! Culture! Are not concepts! These are trophies I keep in my den as paperweights!
The character is self-consciously trying to intimidate the "uneducated" protagonist, so he's being a little tongue-in-cheek, which then has to fight against the movie's tongue in cheek....
On a more geeky note, I came up with this phrase "the social construction of information assurance" and ever since then I've been trying to figure out what it means. The current winner is that we should step back from notions of objective security, and try to understand also how people decide that systems are "secure". Like, you may have a really cool network security gadget with provable privacy and integrity, but if you can't convince the committee in charge of network security of that (because it's novel and/or complicated) the gadget doesn't actually provide security....
It's quite a bit like Microsoft in one way.
/lib/ld-linux.so switched to using mmap(). If you haven't run an a.out or libc5 executable, it is extremely unlikely your machine has ever invoked this syscall.
The uselib() system call is quite old. It was introduced in Linux 0.12 as a quick way to support dynamically loaded, statically linked libraries.
The way shared libraries worked was like this:
libc was compiled and linked like a normal program would be, except that its start address was set to (say) 0x400b0000. printf() would be at (say) 0x400cb110.
Main programs were linked down at 0x08048000 or so, and knew where in memory printf was. The kernel knew how to load your main program and jump to its start. However, there was nothing but a segfault waiting for you at 0x400cb110 initially. So how did the kernel know what shared libraries to load?
Well, one possibility was to put a list of library paths into the executable and teach the kernel to load 'em. Ugh. Didn't SCO do that?
Instead, the linker would add a little assembly language stub to start your main program. It looked a little like:
uselib("/lib/libc.2.so")
uselib("/lib/libm.2.so")
and the uselib syscall would graft the contents of those files directly into memory, in the same fashion the kernel knew how to load the main program. Voila, calling printf at 0x400cb110 will now work.
Eventually, this switched to a single uselib("/lib/ld.so") so we could have search paths and dynamic linking. But it was a pretty good start.
After we all switched to ELF, uselib wasn't such a good idea, as ELF allows some more clever things than just direct-mapping the whole executable at a fixed address.
As part of the a.out->ELF transition, the uselib() syscall was preserved. It allowed old-style fixed location libraries to be dressed up in new ELF clothing. A few years ago I tried uselib() on MIPS, and had a miserable time trying to get GNU ld to make a library the kernel didn't reject. I gave up.
So how is this bug like Microsoft? The bug is in a mechanism that is a holdover from an older, simpler time. Nobody saw a good reason to take it out. And it didn't get much security scrutiny until somebody said, "hey, what's THAT still doing in my OS? I bet it's got bugs!"
I hear there's a large website designed to give us all kinds of positive things about Apple, so it's not like it's unbalanced.
I expect "JarJar's Big Adventure" or "Jedi of Gor" and day now...
I'm reminded of the Minicon "Wage Slaves of Gor" ad. I suppose we're getting really obscure now...
One thing you can add to money saved: property taxes. My property taxes are 1/20 what some of my family pays. 1/20! All because I live outside city borders, I don't mind well/septic, I don't care about municipal trash pick-up, I live in a low-crime area, etc. They live in yuppie neighborhoods and pay in the thousands of dollars...for what? Sure, they have a nice library, but who cares?
What's your school district like? How much time do you spend in town?
Since my latest one-liners haven't made much moderation progress, I suppose I'll be a little more explicit.
Down the road from here is a town where the million dollar houses are essentially an investment in a school district. You pay a lot of money up front for a slot, and you pay a fair amount every year. In return, you believe that your kids are going to one of the better public school systems in the state.
Towns and cities are interesting because of the density of interesting people drawn to them, and also because the density creates economic opportunities. With this density comes various economic costs. You can't control exactly what people show up, which is good, because you never know who's going to have a good idea, or be a good worker. But that also means The Wrong Kind Of People (define by your own value system) are going to be there in some number. Therefore you're going to need police, social services, methadone clinics, etc.
And density has its own costs. Boston has spent around $14 billion on...around twenty miles of two freeways. If there weren't all these densely packed buildings (read investments), it would have been a trivial job to tear everything down and build from scratch the way you could in the red states. But that would stop the city, and stop the returns of investments on all those skyscrapers. (You care because your mutual funds are most likely managed there.)
I guess what I'm saying is "minimize property taxes" is not sustainable for an entire society. Or maybe it is, and we could all move to a ring of exurbs, slowly sinking into Jeffersonian agrarianism. Now ask yourself if the economic contributions to your upbringing, education, and employment would exist in that world, and would you be posting to Slashdot?
BTW, I grew up with a well and a septic tank. I visited my parents this week. They still don't have broadband, and not for any lack of desire.
Try running a Linux binary from two years ago.
I run Debian stable, you insensitive clod!
Well, Jingo is what lazy google research gives me as the cite, so I'm just going to leave it alone...
It's a >16 hour flight from where I live to Seoul. If I'm in business class, I might be able to scrounge up a 12 volt socket. I can buy several handhelds for the price differential between economy and business class.
And while I'm spreading out my modpoint target by responding to myself, I might as well add that I just spent ~8 hours flying back fron Arizona. In economy, yes. Luckily, I was hoarding batteries for my laptop, and got to play through Golden Axe several times.
The woman in front of me was relatively nice in pointing out that every time I pounded on the keyboard on the laptop on the tray, it shook her seat. Oops. Note to self: place laptop directly in lap when playing frustating games. Two runs with the dwarf later, I was home.
Are people really away from 110*n volts for more than 2 to 3 hours at a time, unless they're already making a decided effort to retreat from technology?
It's a >16 hour flight from where I live to Seoul. If I'm in business class, I might be able to scrounge up a 12 volt socket. I can buy several handhelds for the price differential between economy and business class.
What is not clear from the above is just how much Saddam's Disneyfied Babylon looks like Live Action Doom.
No, I'm serious.
The Doom graphics engine needs an upgrade to properly render the historic site.
Also, Kuwait looks like a fucking Counter-Strike level with all those crates.
Going forward, I would say that Firefox has more of a fight on its hands, now that Microsoft is starting to listen to the browser crowds.
"Going forward" is corp-rat speak. People who speak English prefer the phrases "in the future" or "from now on". The first of those two has become quite unfashionable; I'm not sure why.
You may begin your speculation here. (Or not; lord knows I've missed the moderation and conversation window already.)
I'll start. The word "future" was tarred by association with a set of know-nothings who oversold their products. Unfortunately, "going forward" has now been tarred by association with a different set of etc etc etc
Ah, fish, barrel.
- Macs don't have a $2000 start up price tag, they actually start at $799 with the eMac, for portables $1099. Those of which are better spec'ed than low-end PCs.
I've got a really nice 22" monitor here. What's the cheapest Mac I can buy that can use it?
Open Source means No Control.
That's the core of the various free software guidelines.
You never need to ask permission before taking some 3D library and stuffing it into an SNMP monitoring tool, and then posting it on freshmeat---where some person on the other side of the world finds it and hacks up a web interface.
You never have to be captive to a copyright owner. If you think RMS is making poor technical decisions in FSFmacs, or XFree86 does silly things with licenses, or some guy neglects his hobby projects (ahem), you can go off on your own without begging anybody. All you have to lose is the previous name and its reputation.
On the other hand, there are about a zillion Linux distros out there that nobody's heard of. The ultimate penalty for doing a bad fork is being ignored.
Dangerously close to spaf:
"Using encryption on the Internet is the equivalent of arranging an armored car to deliver credit card information from someone living in a cardboard box to someone living on a park bench."
ok, original from spaf:
Microsoft certainly knows about NOP though...
:John Barth
So do I...
Jay Carlson nop@nop.com (what the hell, I can't get MORE spam, can I?)
Self-knowledge is always bad news.
void main() {printf("foo\n"); main();}
Using gcc -O2 3.3.1 on cygwin (sorry), the core of that compiles to clearing a little space on the stack and then:
L2:
call ___main
movl $LC0, (%esp)
call _printf
jmp L2
The call to __main is automagically inserted for any function called main; it goes away if you rename the function to main2. It makes no difference whether main is declared void or int; after all, the compiler knows whether the call discards its results.
By inspection, this uses constant stack space. (Which means the int version does use twice as much stack space per function call as the void version, ha ha ha)
Some of the details here may be x86 and/or win32 ABI-specific, and certainly gcc-specific. But in general, simple tail recursion, especially in static functions should be OK.
Postscript: I just about spit Diet Mountain Dew out my nose when I saw what the gcc 3.4 snapshot I use for MIPS development did to such a silly example. Two quick facts about MIPS: it takes two instructions to load a 32-bit constant (lui/addiu), and the instruction *after* a jump is always executed (branch delay slot).
gcc not only converted printf to puts but it scheduled all the delay slots and unrolled the loop:
lui $4,%hi($LC0)
$L4:
jal puts
addiu $4,$4,%lo($LC0)
lui $4,%hi($LC0)
jal puts
addiu $4,$4,%lo($LC0)
j $L4
lui $4,%hi($LC0)
I am amused too easily.
Probably a package that weighs 5 pounds, doesn't open right, has about 2 sentences of actual use,
Oh, I expected that joke to go a different direction:
Probably a package that weighs 5 pounds, is misaddressed, has excess postage, has leaking liquids or powders, has exposed wires, emitting a ticking sound....
A Few Tips on Suspicious Packages
How about Lua?
...but there's more brainwork involved. As other posters have mentioned, functional iterators don't get you much if you're just running the function for side effects. "Code should be organized vertically, not horizontally."
:-)
Lua
adict = {key='val', key2='val2', key3=3.14}
for k,v in adict do
print(k.." -> "..v)
end
Why is Lua relevant to this thread? For better or worse, Lua is very small, in a number of dimensions. The number of things you have to remember is small, and you can get by with even fewer. I suppose you could go functional if you wanted to:
foreach(adict, function (k,v) print(k.." -> "..v) end)
If you think of Python as Common Lisp, Lua is like Scheme. Except Lua's in a lot more console games than Scheme.
CISC processors tend to have smaller code size, even if the execution units are similar. You can think of this as CISC having a decompression engine between icache and the execution units. When main memory is slow and far away, reducing the amount of memory needed for code can be helpful, especially in modern (bloated?) systems with zillions of bytes of shared libraries loaded.
Here's a ref to a discussion of RISC's response to this problem.
Because I don't use Photoshop and don't do much media processing, I'm not all that interested in how those application-level benchmarks play out. The things I care about are integer-based. Although I've done some crossplatform benchmarking of my typical workload before, it's time-consuming to get that all set up the right way. I may return to that at some point, but I've found that SPEC CPU2000 roughly corresponds, at least in the integer tests. The rate tests don't measure communication costs between processes on multiple processors, so they're a bit of a best case for multiprocessor systems. Still, they can be revealing.
Apple publishes a base 17.2 SPECint_rate for the dual 2GHz G5 (not submitted to SPEC? they point here. Among the published scores at spec.org is a dual Opteron 248 running Linux and using gcc.
It scores 27.4.
Xi Computing charges $200 more for the dual 248 over the 246 the parent article was writing about. So deduct ~10% of MHz from that 27 if you want both boxes to be dual 2GHz....
There's also the interesting fact that Japan is the only country in the world to have a foreign military base in its capital
Your military tourism handbook is defective.
For starters, there's Yongsan Army Garrison in Seoul.
How about Navy? There's NAVEUR headquarters in London, with several more scattered around, some suburban.
Kuwait and Riyadh also come to mind, although that second is declining...
I'm bored with chasing down links, so I'll just add that there are plenty of foreign military bases in Baghdad.
TEP STOP? What the heck is TEP STOP?
I thought I'd ask Google. Oops.
Results 1 - 10 of about 10,100. Search took 0.10 seconds.
It's kinda fun browsing through the cache of all those busted websites though....
Linux is good because you can investigate what actually happens.
:"memory")
default_idle() is called when there's no special power management idle function (which presumably does better).
if (current_cpu_data.hlt_works_ok && !hlt_counter) {
__cli();
if (!current->need_resched)
safe_halt();
safe_halt() enables interrupts and halts the CPU; I'm not going to bother hunting down data sheets to demonstrate the effect this has on power consumption.
#define safe_halt() __asm__ __volatile__("sti; hlt": :
APM and ACPI on x86 do fancier things; there are similar tools on other architectures. Trust me, the battery life of my Casio E-15 running Linux improved dramatically when I put in the "go to sleep code" in the analogous part of the MIPS kernel.
I don't think it's cheap at all. Consider it this way: he's paying to open the hardware platform up for software platform competition. The stereotypical Evil Company would keep the ability to run 3rd party software on the box to themselves; he's willing to let the world have it.
Here we go again. I really don't have all day to poke holes in this, and because I'm actually trying to cite and verify I'm going to completely miss the moderation window, and lose readership. While some of the claims are correct, don't assume I agree with any of them just because I didn't refute.
A good PCI-X capable Fiber Channel card on a mac [...]
There are no Macs that support PCI-X. I am therefore suspicious of the numbers you claim for this configuration.
Next, RC5. The rant here seems similar to another Anonymous Coward post back here; I'm not going to copy in my response again; quick summary: I didn't buy my computer to run RC5 really fast, and neither did you.
Cold memory random read and write is FASTER on macs than DDR machines as seen in benchmarks but this author does hit upon that topic indirectly a little. Even if macs in Feb 2002 were faster than AMD for scatterred random read and write, the current 3 desktop macs all use DDR ram now so probably lack speed boost for that action, but do have write agregate (combined writes) across pci bus and other tricks.
This paragraph is confused. Yes, "cold start" memory latency is very important for many tasks, and is often overlooked. But how is the first sentence be true when many Macs are DDR machines? And where are these benchmarks? I just went looking for DDR Mac latency scores and couldn't find anything. Does anyone have lmbench memory latency numbers for the Xserve or the current PowerMacs? Oh, and write combining is hardly a Mac trick.
The hiddedn "backside only" cache of Pentium 4, and older macs, is the reason you could only have one cpu.
Incorrect. You just need a cache coherency protocol between your processors. "Backside" has nothing to do with it. For example, the dual-processor Pentium III box I'm typing this on has "backside" cache on each processor; it's just hidden inside the CPU packaging rather than brought out to extra pins to connect to an external cache.
There is no "PACK(1)" prgma for c structures on a mac.
struct foo { char c; int i; } __attribute__ ((packed));
struct foo foo_inst;
main() { printf("%d\n", (int)&foo_inst.i - (int)&foo_inst); }
happily returns "1" on 10.2. In fact, if i doesn't cross a double-word boundary, there is no penalty for use on later CPUs. Yes, I just verified this on the G4 downstairs.
And RAM? Don't make me laugh! Try to find an AMD board that takes 4 gigabytes of RAM and USES it as fast as the fastest AMD can. every tweaker site says you can only use one 512MB part and have a max of 512MB.
Although you can't get the absolute, topped out single-CPU performance with it, dual-CPU boards like the Tyan ThunderK7Xpro support up to 4G of registered PC2100 RAM now; these boxes still comfortably beat current top-end G4s at tasks like SPEC CPU2000. If you really want a lot of memory you'll have to get a box from a major vendor; the Dell PowerEdge 6650 comes to mind as a 16G machine. Unfortunately, there aren't any AMD boxes out there like this that I know of, but Hammer will change that.
In 2002 no linux with any normal tweak allows a user task to hold and lock 1.5GB of reeal ram, its all virtual or fake.
Get an Alpha. Although I have no direct experience with this, reliable sources claim you've been able to go past the 32-bit 4G address space limit for several years.
thankfully apple is migrating to 40 bit address space physically soon in august with the new lightweight Power4.
Why wait? Apple isn't the only vendor out there.
The character is self-consciously trying to intimidate the "uneducated" protagonist, so he's being a little tongue-in-cheek, which then has to fight against the movie's tongue in cheek....
On a more geeky note, I came up with this phrase "the social construction of information assurance" and ever since then I've been trying to figure out what it means. The current winner is that we should step back from notions of objective security, and try to understand also how people decide that systems are "secure". Like, you may have a really cool network security gadget with provable privacy and integrity, but if you can't convince the committee in charge of network security of that (because it's novel and/or complicated) the gadget doesn't actually provide security....