2020-10-04

    科技2022-07-13  134

    操作系统基本概念 1. 计算机硬件基本知识 2. 从概念上讲,计算机的结构非常简单:首先布置一根总线,然后将各种硬件设备挂在总线上。所有的这些设备都有一个控制设备,外部设备都由这些控制器与cpu通信。而所有设备的通信均通过总线。 3. 为了提高计算机的效率,人们又设计出了流水线结构,即仿照工业流水装配线,将计算机的功能部件分为多个阶梯,并将计算机的每条指令分析为同样多个步骤,使每条指令在流水线上流动,到流水线最后一个梯级是指令执行完毕。流水线的每个梯级都可以容纳一条指令并同时执行。 4. 从寄存器到磁盘,每一级存储媒介的访问时间延迟和容量均依次增大,而价格缺依次降低。寄存器的访问时间速度最快,容量小,但成本最高;磁带的访问速度最慢,容量最大,成本最低。通过合理搭配,可以形成一个性价比颇的存储架构。 5. 中断是计算机里面的一个最为重要的机制,它也是操作系统获得计算机控制权的根本保证。若没有中断,很难想象操作系统能够完成人们所赋予的任务。 6. 中断的基本原理: 7. 设备在完成自己的任务后向cpu发出中断,cpu判断优先级,然后确定是否响应。如果响应,则执行中断服务程序,并在中断服务程序执行玩后执行原来的程序。 8. 抽象 9. 抽象来源于具体,但又超越具体。例如:人是具体的动物。但如果将人的具体属性,如肉体和骨架全部剥离,剩下的就是抽象,即人的灵魂。绘画史上有抽象派,而抽象画所表现的就是现实中不存在的东西,但这些东西确实有来源于现实。 10. 操作系统提供的抽象自然也来源于现实,就是具体的计算机硬件,如:cpu、内存、i/o设备等。但又超出这些现实,给人提供了强于现实的东西,使人和应用软件感觉到更多、更好的硬件存在,而且只存在于操作系统层面,一般的人才会觉得计算机是可以使用的。 11. 内核态和用户态 12. 只要想一想现实生活中处于社会核心的人与处在社会边缘的人有什么区别,就能明白处于核心的人拥有的资源多!因此,内核态就是拥有资源多的状态,或者说访问资源多的状态,称为特权态。想对来说,用户态就是非特权态,在此种状态下访问的资源收到限制。如果一个运行在特权态,则该程序就可以访问计算机任何资源,即它的资源访问不受限制。如果一个程序运行在用户态,则其资源需求将受到各种限制。 13. 一般来说,如果一个程序能够运行于用户态,就应该让他运行在用户态。只在迫不得已的情况下,才让程序运行于内核态。凡是牵扯到计算机本体根本运行的事情都应该在内核下执行,只与用户数据和应用相关的东西则放在用户执行。另外,对时序要求特别高的操作,也应该在内核态完成。 14. 什么功能应该在内核态下实现呢? 首先,CPU的管理者和内存管理都应该在内核态实现。这些功能可不可以在用户态下实现呢?可以,但是不太安全。从计算机安全的角度来说,cpu和内存的管理必须在内核态完成。 15. 态势的识别 16. 计算机是如何知道正在运转的程序实在内核态呢? 17. 而正确做出内核态或用户态的判断对系统的正确运行至关重要。显然做出这种判断需要某种标志。这个标志就是处理器的一个状态位。这个状态位是cpu状态子里面的一个字位。也就是说,所谓的用户态,内核态实际上是处理的一种状态,用户态或者其他的子态。一个程序运行时,cpu是什么态,这个程序就运行在什么态。 18. 内核态与用户态的实现 19. 显然,要限制一个程序对资源的访问,需要对程序执行的每条指令进行检查才能完成。而这种检查就是地址翻译。程序发出的每一条指令都要经过这个地址翻译过程。而通过对翻译的控制,就可以限制程序对资源的访问。 20. 操作系统结构 21. 人们发现单一的操作系统结构有很多缺点:功能之间的关系复杂,修改任意功能块导致其所有功能块都需要谢改,从而导致操作系统设计开发困难;这种没有层次的关系的网状联系容易造成循环调用,形成死锁,从而导致操作系统可靠性降低。这时候,人们想到了人类社会中的层次关系,何将人类熟悉的层次关系搬到操作系统设计里,定义操作系统的层次关系呢?将操作系统的功能分为不同的层次,低层次功能为紧邻其上一个层次的功能提供服务,而高层次的功能又为更高层次的功能提供服务。 22. 其次,前面说过,在内核态运行的程序可以访问所有的资源,因此其安全性和可靠性要求十分高。在操作系统规模很小时,将其设计可靠和安全并不困难。而且 在操作系统历史的早期也没有那么对安全问题,自然安全上的考虑不用太多。但随着操作系统越来越大,破坏者的水平越来越高,操作系统的可靠性和安全性就变得很难达到。只要想一想,1400行的操作系统和40000万行代码操作系统有什么区别就知道了。 23. 进程、内存和文件 24. 进程是操作系统里面的核心概念。它指的是一个运动中的程序。从名字上看 进程表示的就是进程中的程序。一个程序一旦运动起来,他就称为一个进程。操作系统对进程的管理通过进程表来实现。进程表里存放的是关于进程的一切信息。在任何时候,进程所占的全部资源 包括分配给进程的内存、内核数据结构和软件资源形成一个进程核。核快照代表的是进程在某一特定时刻的状态。 25. 文件是操作系统提供的外部存储设备的抽象 它是程序和数据的最终存放地点。 系统调用 26. 系统调用就是操作系统提供的应用程序界面。 27. 用户程序通过调用这些api获取操作系统得服务。 28. 系统调用按照功能可划分为六大类: 进程控制类。 29. 文件管理类。 30. 设备管理类。 31. 内存管理类。 32. 信息管理类。 33. 通信类。 34. 其中调用又分为三个阶段: 参数准备阶段。 35. 系统调用识别阶段。 36. 系统调用执行阶段。 37. 在参数准备阶段, 38. 需要使用系统服务到位程序将系统调用所需要的参数,放到栈中。 39. 壳 40. 为了向不编程的用户提供服务,操作系统提供了一个壳来与用户交互。每个操作系统都提供某种壳 以便与用户进行交互这个壳是覆盖在操作系统服务上面的一个用户界面,既可以是图形界面,也可以是文本界面。用户在这个界面上输入命令,操作系统则执行这些命令。当然。用户输入的命令不是直接的操作系统服务,而是所谓的utilities。它的功用先当于C语言中的库函数。 41. 一个壳的具体功能包括如下几项: 42. 显示提示符,如unix下到位提示符通常$和%。 43. 接受用户命令病执行。 44. 实现输入输出。 45. 启动后台进程。 46. 进行工作控制。 47. 提供伪终端服务。

    Processed: 0.010, SQL: 8