小言_互联网的博客

程序员的自我修养 - 基础篇(1)操作系统做什么

270人阅读  评论(0)

操作系统做什么

  操作系统的一个功能是提供抽象的接口,另一个主要功能是管理硬件资源。

不要让CPU打盹

CPU资源的管理方式大致经过以下3个阶段,
①多道程序(multi programing):
  通过一个监控程序,当某个程序暂时无需使用CPU时,监控程序就把另外正在等待CPU资源的程序启动,使得CPU能够充分地利用起来。
  粗糙的用法,如果程序长期使用CPU不释放,别的程序就无法得到执行;程序没有分优先级,无轻重缓急之分。

②分时系统(Time - sharing system):
  每个程序运行一段时间后都主动让出CPU给其他程序,使得一段时间内每个程序都有机会运行一小段时间。但是如果程序进入了while(1)死循环,仍然会霸占住CPU,整个系统会停止。

③多任务系统(multi - tasking):
  操作系统接管了所有硬件资源,并且本身运行在一个受硬件保护的级别,所有的应用程序都以进程(process)的形式运行在比操作系统权限更低的级别。CPU由操作系统统一分配。每个进程根据优先级的高低都有机会得到CPU,但是如果运行了超过一段时间,操作系统会暂停该线程,将CPU资源分配给其他等待运行的进程。这种CPU的分配方式即所谓的抢占式(Preemptive)

设备驱动

  当成熟的操作系统出现后,硬件逐渐被抽象成了一系列概念。在unix中,硬件设备的访问跟访问普通的文件形式一样;在windows系统中,图形硬件被抽象成了GDI,声音和多媒体设备被抽象成了DirectX,磁盘被抽象成了普通的文件系统。

内存不够怎么办

  在多任务系统中,如何将计算机上有限的物理内存分配给多个程序使用。
  我们把程序中给出的地址看作是一种虚拟地址(virtual address),然后通过某种映射的方法,将这个虚拟地址转换成实际的物理地址(physical address)

  ①内存分段(segmentation):
  把一段程序所需要的内存空间大小的虚拟地址映射到某个地址空间。
  优点:程序间实现了地址空间的隔离,不会互相影响,更加安全;编程者不再需要关心物理地址变化,因为虚拟地址是一样的
  缺点:当内存空间不够时,需要频繁地读写硬盘/内存置换数据,效率低下

  ②内存分页(paging)
  将地址空间人为地等分成固定大小的页,每一页的大小由硬件确定,或硬件支持多种大小的页,由操作系统选择决定页的大小。
  该方法利用了内存局部性的一个特点,即在一段时间内,系统中频繁使用的内存主要是个某个小部分,以此提供内存利用率。

  ③共享内存
  将不同程序的相同数据的虚拟地址,如果映射到同一片物理地址上,即可实现共享内存。


转载:https://blog.csdn.net/qq_31866157/article/details/113786968
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场