[Autogenerated] we know that every process has its own address space.
And this means that every process automatically protected against
access by another process accidentally or intentionally.
So if I have some kind of pointer.
And even if that pointer is garbled in some way,
the worst I can do is mess with my own address space because
every process has its own address space.
And that's why when we're saying what is in address, let's say 10,000.
The next question should be in which process do you mean?
Because every process has an address 10,000,
but it might be pointing to different locations in physical memory if at all.
Now,
if the process shares pages and of course we can use the same shared
memory as we've seen very simply in the previous demo.
If you do want to access memory in another process, you have to work for it.
You have to open and handle powerful enough to the
other process using the access masks, process being read the process being right.
And then assuming you can get a successful handler for that,
you need to call the functions,
read process memory or write process memory to actually perform some
kind of access to a different process regardless,
we have protection that can be applied to pages in mutual addresses
and the hardware provides that kind of support.
So if I protect the page would read only,
for example, any write operation would generate an access violation exception.
Here's a table that shows the most common protection.
Flags, it starts with page no access and then goes to read only read,
write, execute and execute doesn't really mean anything.
Execute is the same as executed.
Read because you can't execute something without reading it execute.
Read right means you have all possible access to the page.
We've seen the idea of copy and right,
which is the additional flag can be added to other protections.
And the same goes with page guard.
Page guard is classically used for extending a thread stack,
as we discussed in the previous course.
And again,
this is the flag that causes an exception to be handled in
some predefined way by the memory manager.
Not technically,
it can be used by applications to know when some page has been accessed.