操作系统做什么
操作系统的一个功能是提供抽象的接口,另一个主要功能是管理硬件资源。
不要让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