OS Security Memory

OS Security Memory

OS Security Memory Radboud University, Nijmegen, The Netherlands Winter 2016/2017 I Cannot do that for reading/writing memory I Load/store instructions are very frequent in programs I Speed of memory access largely determines the speed of many programs I System calls are expensive I A load (from cache) can nish in a few cycles I A system call has some hundred cycles overhead I OS still needs control over memory access of processes! Memory access I So far, all access to resources was handled through le-access permissions I Requesting a resource (le) is done through syscalls OS Security Memory2 I A load (from cache) can nish in a few cycles I A system call has some hundred cycles overhead I OS still needs control over memory access of processes! Memory access I So far, all access to resources was handled through le-access permissions I Requesting a resource (le) is done through syscalls I Cannot do that for reading/writing memory I Load/store instructions are very frequent in programs I Speed of memory access largely determines the speed of many programs I System calls are expensive OS Security Memory2 I OS still needs control over memory access of processes! Memory access I So far, all access to resources was handled through le-access permissions I Requesting a resource (le) is done through syscalls I Cannot do that for reading/writing memory I Load/store instructions are very frequent in programs I Speed of memory access largely determines the speed of many programs I System calls are expensive I A load (from cache) can nish in a few cycles I A system call has some hundred cycles overhead OS Security Memory2 Memory access I So far, all access to resources was handled through le-access permissions I Requesting a resource (le) is done through syscalls I Cannot do that for reading/writing memory I Load/store instructions are very frequent in programs I Speed of memory access largely determines the speed of many programs I System calls are expensive I A load (from cache) can nish in a few cycles I A system call has some hundred cycles overhead I OS still needs control over memory access of processes! OS Security Memory2 I Obviously, don't want to map byte-by-byte I Chop the memory into pages of xed size (typically 4KB) I Use a page table to establish the mapping I Essentially, use a dierent page table for each process I If there is no entry for a virtual address in a processes' page table: exit with segmentation fault Virtual memory I Central idea: I Don't let processes use addresses in physical memory I Instead, use virtual addresses I For each access to a virtual address, map to actual physical address OS Security Memory3 I Use a page table to establish the mapping I Essentially, use a dierent page table for each process I If there is no entry for a virtual address in a processes' page table: exit with segmentation fault Virtual memory I Central idea: I Don't let processes use addresses in physical memory I Instead, use virtual addresses I For each access to a virtual address, map to actual physical address I Obviously, don't want to map byte-by-byte I Chop the memory into pages of xed size (typically 4KB) OS Security Memory3 I Essentially, use a dierent page table for each process I If there is no entry for a virtual address in a processes' page table: exit with segmentation fault Virtual memory I Central idea: I Don't let processes use addresses in physical memory I Instead, use virtual addresses I For each access to a virtual address, map to actual physical address I Obviously, don't want to map byte-by-byte I Chop the memory into pages of xed size (typically 4KB) I Use a page table to establish the mapping OS Security Memory3 Virtual memory I Central idea: I Don't let processes use addresses in physical memory I Instead, use virtual addresses I For each access to a virtual address, map to actual physical address I Obviously, don't want to map byte-by-byte I Chop the memory into pages of xed size (typically 4KB) I Use a page table to establish the mapping I Essentially, use a dierent page table for each process I If there is no entry for a virtual address in a processes' page table: exit with segmentation fault OS Security Memory3 I Can even assign more memory than is physically available I Need to swap memory content to and from hard drive I Can separate address spaces from dierent programs! I OS can now ensure that one process cannot read/write another processes' memory I Hmmm, but looking up addresses for each memory access doesn't sound cheaper than a syscall::: Advantages of virtual memory I Processes can use (seemingly) contiguous memory locations I Those addresses don't have to be contiguous in physical memory OS Security Memory4 I Can separate address spaces from dierent programs! I OS can now ensure that one process cannot read/write another processes' memory I Hmmm, but looking up addresses for each memory access doesn't sound cheaper than a syscall::: Advantages of virtual memory I Processes can use (seemingly) contiguous memory locations I Those addresses don't have to be contiguous in physical memory I Can even assign more memory than is physically available I Need to swap memory content to and from hard drive OS Security Memory4 I Hmmm, but looking up addresses for each memory access doesn't sound cheaper than a syscall::: Advantages of virtual memory I Processes can use (seemingly) contiguous memory locations I Those addresses don't have to be contiguous in physical memory I Can even assign more memory than is physically available I Need to swap memory content to and from hard drive I Can separate address spaces from dierent programs! I OS can now ensure that one process cannot read/write another processes' memory OS Security Memory4 Advantages of virtual memory I Processes can use (seemingly) contiguous memory locations I Those addresses don't have to be contiguous in physical memory I Can even assign more memory than is physically available I Need to swap memory content to and from hard drive I Can separate address spaces from dierent programs! I OS can now ensure that one process cannot read/write another processes' memory I Hmmm, but looking up addresses for each memory access doesn't sound cheaper than a syscall::: OS Security Memory4 I OS provides pointer to page table of current process to MMU I This is done by writing a special control register, the page table base register (PTBR) I Access to this control register only from protection ring 0 I MMU looks up mapping from memory and remembers it in special cache I Page-table cache is called translation lookaside buer (TLB) I Need to invalidate TLB content on context switch: I Can ush the whole TLB content I Can mark the content invalid and re-validate when the process comes back The MMU I Mapping from virtual to physical addresses is done in hardware I CPU has a Memory Management Unit (MMU), which performs the mapping I Typical setup: I OS writes page table for processes to memory OS Security Memory5 I MMU looks up mapping from memory and remembers it in special cache I Page-table cache is called translation lookaside buer (TLB) I Need to invalidate TLB content on context switch: I Can ush the whole TLB content I Can mark the content invalid and re-validate when the process comes back The MMU I Mapping from virtual to physical addresses is done in hardware I CPU has a Memory Management Unit (MMU), which performs the mapping I Typical setup: I OS writes page table for processes to memory I OS provides pointer to page table of current process to MMU I This is done by writing a special control register, the page table base register (PTBR) I Access to this control register only from protection ring 0 OS Security Memory5 I Need to invalidate TLB content on context switch: I Can ush the whole TLB content I Can mark the content invalid and re-validate when the process comes back The MMU I Mapping from virtual to physical addresses is done in hardware I CPU has a Memory Management Unit (MMU), which performs the mapping I Typical setup: I OS writes page table for processes to memory I OS provides pointer to page table of current process to MMU I This is done by writing a special control register, the page table base register (PTBR) I Access to this control register only from protection ring 0 I MMU looks up mapping from memory and remembers it in special cache I Page-table cache is called translation lookaside buer (TLB) OS Security Memory5 The MMU I Mapping from virtual to physical addresses is done in hardware I CPU has a Memory Management Unit (MMU), which performs the mapping I Typical setup: I OS writes page table for processes to memory I OS provides pointer to page table of current process to MMU I This is done by writing a special control register, the page table base register (PTBR) I Access to this control register only from protection ring 0 I MMU looks up mapping from memory and remembers it in special cache I Page-table cache is called translation lookaside buer (TLB) I Need to invalidate TLB content on context switch: I Can ush the whole TLB content I Can mark the content invalid and re-validate when the process comes back OS Security Memory5 I Shared-memory resources have access permissions similar to les I The execute ag is ignored I For shared memory we're basically back to le access through syscalls I Unix oers syscalls for sharing memory: I Can map a le into memory with mmap() (with MAP_SHARED option) I Can request shared memory with shm_open() or shmget() Shared memory I Now we have memory of dierent processes nicely separated

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    99 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us