|
Ya! I just hope the service takes my note, about them, seriously.
INTP
Every thing is relative...
|
|
|
|
|
The first project reeks of spyware. "Oh yeah! We need it to circumvent all browser security!" Yeah, right... $10 Million US cash, up front, in small non-consecutive bills, ...
The second one just injects spam and adware into every email the person sends. Again, yeah, this is "useful" to all the "right" people.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Precisely why I sent the service a message!
I wonder if they have some one to read these job offers, before they are offered to us (dought it). I might not mind the job for a short while, or may be I could take the time to write a program that throws up flags based on content.
Oh, wait a minute, that's the goverments job.
It would be interesting to see a Trojan tracked back to a sight used to hire someone to write one.
INTP
"Cheeeese!" - Wallace and Gromet
|
|
|
|
|
The first project requirement 4 "Security needs to be addressed if installs will prompt security notices." made me laugh.
I'm on-line therefore I am.
JimmyRopes
|
|
|
|
|
I thought it was pretty funny myself!
I tmade me think of who could possibly post a request like that. Some 15 year old punk maybe?
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
as I thoutht:
an application can have many processes and then each process can have many threads. is it right??????
but, one process can only one main-thread , what about process of application???
the books i am reading syas:
"The physical separation of this memory and resources is called a process. Of course, the application may launch more than one process. It's important to note that the words "application" and "process" are not synonymous. "
thank you very much!!!
|
|
|
|
|
"Application" is another word for "program" or "executable", so one software product may contain several executable files. For example, MS Office contains winword.exe, excel.exe, etc. "Application" is a human concept, all that the OS knows is executables.
When you run an executable, the OS creates a process for it to run in, and creates one thread in that process that actually runs the code.
--Mike--
Visual C++ MVP
LINKS~! Ericahist | NEW!! PimpFish | CP SearchBar v3.0 | C++ Forum FAQ
|
|
|
|
|
Process boundaries isolate multiple applications running concurrently on the same machine. Memory is allocated to a process and is protected from other processes accessing it directly. You can’t pass a pointer to memory to another process. One process does not access another processes address space directly. There is always some indirection between processes, either a proxy or a memory mapped file.
Threads operate within a process and all threads can access common memory within the process that created them. Variables [or objects]that are global in scope can be accessed by any thread within the process. As with functions threads can also have local variables [or objects]that are unique to the individual thread which cannot be accessed by any other thread.
When you launch a process [execute a program] the OS assigns a unique process identifier to the process [PID] and launches the processes main thread. In this main thread you can launch many subordinate threads that run more or less simultaneously. It gets a little complicated with multiple CPUs so let’s just stick to one for illustration.
When you launch a thread you assign a dispatch priority [or take the default] which determines when (relative to other threads) a thread gets CPU cycles. The thread competes with every other thread on the machine for CPU resources in prioritized queues. Dispatching can get a little tricky so that no thread gets starved but to keep it simple, and in general, higher priority threads get resources [CPU cycles]before lower priority threads.
Take a look at the Windows Task Manager [ctl-alt-del] and in the "view - select columns" menu check PID, CPU, CPU Time and Thread Count. This will show all the process currently running on the machine. Double click the CPU column header to sort by CPU percentage and you will see the processes swapping in and out and the percentage of CPU cycles they are using.
Hope this helps.
I'm on-line therefore I am.
JimmyRopes
|
|
|
|
|
When using local profiles on XP, the first time a user logs on their profile is created based up the Default User profile (usually in C:\Documents and Settings\[User name]), and the profile is subsequently available if the user logs is at that PC again.
Is there a limit to the number of profiles that can be stored locally, or is there an overall limit to the amount of disk space that local profiles can use?
If so, how can these limits be changed?
If there is no limit, I presume the contents of the profile folder will just grow and grow the more different users log in?
Btw, I am aware of roaming profiles and that they can be deleted upon logout after their contents have been returned to the server; bandwidth restrictions between client and server dictate that using local profiles is the only feasible option at the moment.
Thanks!
|
|
|
|
|
mitooki wrote: Is there a limit to the number of profiles that can be stored locally, or is there an overall limit to the amount of disk space that local profiles can use?
Both are limited only by disk space. There is no hard-coded limit for either.
mitooki wrote: If there is no limit, I presume the contents of the profile folder will just grow and grow the more different users log in?
Yep! Limited only by disk space.
mitooki wrote: Btw, I am aware of roaming profiles and that they can be deleted upon logout after their contents have been returned to the server; bandwidth restrictions between client and server dictate that using local profiles is the only feasible option at the moment.
Entirely true. I'm one of those people who throws everything on the Desktop, so my profile is huge, weighing in at some 4.2GB. That's not something I would want as a Roaming profile. It would take forever to login and out. You can, however, limit what is copied as part of the Romain profile and limit the size of the profile itself. Keep reading and it should make mention of this. You can also find out a bit more from here[^].
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Thanks for the info Dave
|
|
|
|
|
I am reading a book about OS and get some problms about memory management section:
From an application standpoint, the system paging file increases the amount of memory available for use. It makes the system appear to have much more physical memory than it actually does. This is why a machine with, say, 1GB of physical memory can run many apps simultaneously, each having a 4GB process address space that is, perhaps, 50% backed by physical storage.
Conceptually, it's helpful to think of the physical storage behind virtual memory as the system paging file. Even though pages are constantly being copied in and out of physical RAM, the vast majority of the physical storage behind the virtual memory in the system is typically in the system paging file.
I am not good at english to get insight the meaning of these sentences: so ,please do make a much more easy or give me more info to understand it .
such as the " paging File" is it a kind of technique or an exactly file ...
thank you very much
|
|
|
|
|
In Windows the "paging file" is really a file. Change the Explorer settings to show hidden and system files, and you can find it, usually in C:\pagefile.sys. Linux normally uses a separate partition for virtual memory backing store, and it's called "swap area".
|
|
|
|
|
thank you first!!
yeah, I find the file and now I have another question:
1GB of physical memory can run many apps simultaneously, each having a 4GB process address space that is, perhaps, 50% backed by physical storage.
above sentences say "each having a 4GB process address space ..." as I know there
is only 4GB virtual memory but how can each app obtains 4GB... is it also means "sharing..." .
and another :
what does it mean "50% backed.." I do really understand what is happening here....
|
|
|
|
|
kevien wrote: above sentences say "each having a 4GB process address space ..." as I know there
is only 4GB virtual memory but how can each app obtains 4GB... is it also means "sharing..." .
Each application has it's own seperate address space. It's alomst like it was the only application running on the system.
kevien wrote: what does it mean "50% backed.." I do really understand what is happening here....
It's just an example. Your app thinks it has 4GB of memory, when in reality, there's only 2GB of physical RAM. The other two are simulated in the swap file.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Hi folks
Currently I am working on a project for accessing IO cards in realtime under windows XP.
My idea is to create a routine which causes an interrupt every 100 microseconds that calls a callback function. This has to be implemented in kernel-space and with interrupts (instead of polling) to garuantee my timings. I thought of a device driver to realize this and read some articles about creating drivers, since I'm quite new to this.
My question is - how can I implement an interrupt which is caused every 100 microseconds. I believe timing should not be the problem, since already worked with the read time stamp counter. But I couldn't realize it without polling (which causes the system to slowdown).
It would be nice if you have any tips for me, because I couldn't find any article about timer interrupts on this site.
Thanks in advance
|
|
|
|
|
You really can't do this in PC code. Just calling QueryPerformance Counter 10 times, and doing NOTHING else, takes 100 microseconds on a 3GHz machine. A PC's high resolution timer and processor just can't keep up with that kind of interrupt rate. Remember, you're running on a SHARED system. The processor will be very busy at critical times during your interrupt handling. So, yes, the entire machine will slow to a crawl if you attempt this.
It's best to leave work at this rate to a seperate processor on some kind of capture board built to handle this, have it collect and buffer the data, then it can send the data to the PC in chunks and at a rate that won't choke the machine.
No, I don't have any articles to show you how to do it.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Well, I have to disagree with that.
Calling QueryPerformanceCounter once takes about 1.26 microseconds on my machine (2,8 GHz).
Calling Read Time Stamp Counter takes even less: 0.03 microseconds.
You can check for yourself with help of this little tool provided by nvidia for benchmarking high resolution timers:
http://developer.nvidia.com/object/timer_function_performance.html
If such interrupts should really be to fast for the processor, how should he handle transfer rates of about 921600 baud (bits per second)?
I already tested such a solution, anyway it's commercial and I wanted to try to realize it for myself.
I checked those timings with an oscilloscope, where I send data in a 100 microseconds intervall and it works without slowing down the OS.
greetings
|
|
|
|
|
quirk_1a wrote: Calling QueryPerformanceCounter once takes about 1.26 microseconds on my machine (2,8 GHz).
Calling Read Time Stamp Counter takes even less: 0.03 microseconds.
Every system is different. Also, not every motherboard even implements a high-resolution timer. And not every implementation is the same. So yeah, your performance may vary. I told you what the result was on the 3GHz Dell I was using.
That timer can count, but it can't fire interrupts. So you still have to poll for the interval you want. And again, polling for something this fast will slow your machine to a crawl...
BTW: Did you also test sampling the data at that rate? Is your data comming from input ports? Those are notoriously slow for taking forever and a day to execute. Try it before you say you can sample at that rate. This was just the timer code. It didn't do any with sampling and storing the data...
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Well, I'm still waiting for the I/O card to be delivered. That's why I only could test sending data on another card.
As I said, I used a demo-version of a so called real-time extension (I may send you a link, if you want to). I know that Windows XP was not made for real-time applications, but the callback-routine is executed on kernel level. Internally the routine is relocated to system memory to allow execution from the real-time context. Therefore I wouldn't say it's running under Windows XP but rather it's running besides Windows XP.
I will try to test sampling data from an input, as soon as I have the chance to. But what I have tested for now (changing to 1 or 0 every 100us) works - although I can't really believe it myself.
There's an option at the oscilloscope allowing me to record the measurement and there's absolutely no deviation regarding the 100 microseconds interval.
-- modified at 5:10 Monday 13th February, 2006
|
|
|
|
|
100usec is too fast for Windows, it is NOT a real time system which is what you need. Even most versions of Linux could not cope easily with this.
The tigress is here
|
|
|
|
|
Quirk said; “accessing IO cards in realtime under windows XP”
Any type of realtime processing under windows XP is an oxymoron. Or as they say in the US state of Maine; “you can’t get there from here”.
[edit]Removed because "you can't there from here"[/edit]
I'm on-line therefore I am.
JimmyRopes
-- modified at 21:28 Sunday 12th February, 2006
|
|
|
|
|
JimmyRopes wrote: Where the timeout is set to 100ms.
In his original post, he's actually looking for 100 microseconds, or 0.1 milliseconds, so even this wouldn't work for him...
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Oops!
It was late last night [doing some marithon system testing] and I misread the original post.
You are absolutely correct, this will not work for a timer interval of 100 microseconds as the minimum timeout resolution is 1ms and not guaranteed to precisely be even that.
I'm on-line therefore I am.
JimmyRopes
|
|
|
|
|
Hello,
I'm coding a small Virtual Desktop Manager for our project needs.
I use Windows Station (WinSta0) and multiple Desktops. I create those
desktops with standard API (CreateDesktop). There is one problem that
I can't understand. How can I delete desktop that I have created by myself? I have tried CloseDesktop-function but it does not remove desktop.
So, how should I remove desktops that I create myself?
Any ideas?
Cheers!
|
|
|
|
|