笔记一请见 http://blog.csdn.net/u012277682/article/details/50971514
最近开始学习操作系统原理这门课程,特将学习笔记整理成技术博客的形式发表,希望能给大家的操作系统学习带来帮助。同时盼望大家能对文章评论,大家一起多多交流,共同进步!
本篇文章大致内容为:
- 操作系统服务(Operating System Services)
- 用户操作系统接口(User Operating System Interface)
- 系统调用(System Calls)
- 操作系统设计和实现(OS Design and Implementation)
- 虚拟机(Virtual Machines)
回顾: 什么是OS?
OS是一个全时运行的程序,用以管理和控制系统资源,合理组织计算机的工作流程,方便用户使用计算机的程序集合
操作系统服务(Operating System Services)
操作系统为用户提供了以下功能:
- User Interface
1. Command-Line(CLI)
2. Graphics User Interface(GUI)
3. Batch(批处理)
- Program execution 程序执行
- I/O operations 输入/输出操作
- File-system manipulation 文件管理系统
- Communications 通信,协同
- Error detection 错误检测
- Another set of functions exists for ensuring the efficient operation of the system
1. Resource allocation 资源分配
2. Accounting
3. Protection and security
Protection –> 确保所有对操作系统的访问都是合法的/受控的; Security–>防止额外的I/O设备对系统进行非法访问
系统调用(System Call)
- 编程时使用操作系统提供的功能的借口
- Mostly accessed via a high-level Application Program Interface(API):系统调用继续往上打包
For: 程序的可移植性 && 系统调用的使用难度高于API
常用的API : Win32 API -> Windows; POSIX API -> Linux, Unix, MacOS; Java APi -> JVM.
系统调用的实现:
1. 对于每一个系统调用都有对应的number
2. 在系统调用表(System call table)中根据number来查找具体的功能
3. 调用(invoke)相应的功能并返回状态
对于判断程序位于用户态还是系统态,操作系统存在PSW(系统状态字)。
系统调用的参数传递:
1. 寄存器
2. 将参数块对应的地址作为参数放入寄存器
3. 使用堆栈
操作系统的设计与实现
Start by defining goals and specifications.
goals:
- 用户目标:convenient to use, reliable, safe, fast
- 系统目标:easy to design, implement, maintain, flexible, reliable, error-free, and efficient
Policy(策略):要做什么
Mechanism(机制):怎么做
OS structure: Layer Approach
缺点: 效率较低,一层一层的参数调用