操作系统管理硬件

操作系统有两个基本功能:1)防止硬件被失控的应用程序滥用。 2)像应用程序提供一些简单的机制来控制复杂而又通常大相径庭的低级硬件设备。操作系统通过几个抽象概念实现上述功能:进程虚拟内存文件


  • 进程
    对于指令和数据的抽象

    • 线程
      一系列可以与其他同类并行执行的指令,a thread of execution is the smallest sequence of programmed instructions. Multiple threads can exist within one process, executing concurrently and sharing resources such as memory, while different processes do not share these resources.

    • 两者不同:

      • processes are typically independent, while threads exist as subsets of a process
      • processes carry considerably more state information than threads, whereas multiple threads within a process share process state as well as memory and other resources
      • processes have separate address spaces, whereas threads share their address space
      • processes interact only through system-provided inter-process communication mechanisms
      • context switching between threads in the same process is typically faster than context switching between processes.

  • 虚拟存储器(内存):计算机内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上,它通常是被分割成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器。
    作用与背景:

    1. 一个系统的进程是与其他进程共享CPU和主存资源的。共享主存会形成一些特殊的挑战,如果太多进程需要太多的存储器,那么其中有一些可能没有办法运行。当一个程序没有空间可用是,那它运气就很不好
    2. 存储器很容易遭到破坏,如果某个进程不小心写入了另一个进程使用的存储器,它就可能以某种错误发生

    为了有效的管理存储器并且少出错,现代系统提供了一种对主存的抽象概念,叫做虚拟存储器(VM)。它为每个进程提供了一个大的,一致的和私有的地址空间。有三个重要功能:

    1. 它将主存看成一个存储在磁盘上的地址空间的高速缓存,在主存中只保留活动区域,并根据需要在磁盘和主存之间来回传送数据,高效。
      1. 局部性原理:尽管整个运行过程中程序引用的不同页面的总数可能超出物理存储器的大小,但是局部性原则保证了在任意时刻,程序往往在一个很小的活动页面集合上工作,时间上,程序对于页面的引用也会在短时间内不止一次。
      2. 当然,如果工作集的大小超出了物理存储器的大小,那么程序将产生一种不幸的状态,叫做颠簸(thrashing),这时页面将不断的换进换出,运行的就会很慢!。
    2. 它为每一个进程提供了一致的地址空间,从而简化了存储器的管理。
      1. 操作系统是为每一个进程提供了一个独立的页表,因而也就是一个独立的虚拟地址空间。
      2. 简化链接:独立的地址空间允许每个进程的存储器映象使用相同的基本格式,而不管代码和数据实际存放在物理存储器的何处。这样的一致性简化了连接器的设计和实现,允许连接器生成全连接的可执行文件,这些可执行文件是独立于物理存储器中代码和数据的最终位置。
      3. 简化加载:虚拟存储器会按照需要自动地调入数据。
      4. 简化共享:一般而言,每个进程都有自己的私有的代码,数据,堆以及栈区,是不和其他进程共享。在这种情况下操作系统创建页表,将相应的虚拟页映射到不同的物理页面。然而在其他一些情况,还是需要进程共享代码和数据,例如,每个进程必须调用相同的系统内核代码,而每个C语言程序都会调用C标准库中的程序,如printf。操作系统通过将不同进程中适当的虚拟页面映射到相同的物理页面,从而安排多个进程共享这部分代码的一个拷贝,而不是每个进程都包含单独的内核和标准库。
      5. 简化存储器分配:虚拟存储器为用户进程提供一个简单的分配额外存储器的机制。当一个正在运行进程的程序要求额外的堆空间时,操作系统会配一个数字(K)个连续的虚拟存储器页面,并且将它们映射到物理存储器中任意物理存储器页面,页面可以是随机分散在物理存储器中。
    3. 它保护了每个进程的地址空间不被其他进程破坏。
      1. 任何现代计算机系统必须为操作系统提供手段来控制对存储器系统的访问,不应该允许一个用户进程修改它的只读文本。
      2. 就像我们看到的。提供独立的地址空间使得分离不同进程的私有存储器变得容易。
      3. 但是地址翻译机制可以以一种自然的方式扩展到提供更好的访问控制。因为每次CPU生成一个地址时,地址翻译都会读取一个PTE,所以通过在PTE上添加额外的许可为来控制对一个虚拟页面内容的访问十分简单。例如添加三个许可位 | SUP|READ| WRITE |sup表示超级用户访问,如果是用户模式则不行。

  • 文件
    连续的字节流

猜你喜欢

转载自blog.csdn.net/qq_28485501/article/details/82531018