操作系统的结构需要从这几个方面来考虑:他为用户提供了哪些服务和界面,系统各个组成部分及其相互关系
大致可分为:进程管理,主存管理,文件管理,辅存管理和IO管理
进程管理1. 进程的创建和结束2. 进程的挂起和恢复3. 进程锁\进程交互\进程死锁的规则
内存管理1. 记录内存使用2. 分配和回收内存资源
文件管理1. 文件的创建和删除2. 文件目录的创建和删除3. 文件二进制操作4. 映射文件到二级存储5. 在非易失性存储上备份
辅存管理1. 空闲存储空间管理2. 存储分配3. 磁盘调度
IO管理管理IO设备
对于用户1. 程序的执行:最关键的服务,从辅存中加载程序到内存中并执行2. IO操作,用户不能直接惊醒IO操作,这也需要系统来提供服务3. 文件操作,用户需要读写,创建和删除文件4. 信息交流:在两个进程间传送消息:方法一般分为发送报文和共享内存5. 错误检测
对于确保系统正常运行1. 资源分配:多个程序同时运行下资源分配显得更为重要2. 记录任务3. 保护:所有资源被正确回收,所有连接使用后被断开
用户界面1. GUI 用户图形界面2. cmd命令行3. batch 批处理命令
程序接口
系统调用
与一个固定ID关联,参数传递时可以传寄存器里的数,也可应从堆栈中,内存中传递
API
API建立在系统调用之上,只要知道AIP函数入口很容易使用,但需要运行库来支持.最常用的AIP有 win32API (WINDOWS) POSIX(UNIX,LINUX) JAVA API (JVM)
附注:系统调用的种类```进程管理类 文件管理 设备管理 信息维护 信息传递```
分层结构
系统分为很多层,高层只能调用低一层的功能
微内核结构
如名,提供精简的内核,提供最小化的进程管理,内存管理,和通讯设备(通讯使用消息传递的方式)
模块结构
最常用的结构,类似分层结构,但和分层结构相比,模块结构更加松散,每个模块不分高低,相互依赖使用
举例说明:如 MS-DOS 虽然有一定的分层,但模块之间的区分很不清楚,而UNIX就分为了内核部分和系统程序两个模块
原文:http://www.cnblogs.com/goldenhair/p/3676190.html