操作系统结构
操作系统为程序和用户提供执行程序和服务的环境
向用户提供的功能:接口,文件树
有效运作的职能:内存管理、CPU调度
向用户提供的功能:
用户界面:命令行界面(CLI)、图形用户界面(GUI)、触摸屏、批处理
程序执行:
1,将程序装入内存
2,运行那个程序,
3,结束执行
I/O操作:
文件系统操作:读写进程交换信息
通信:进程交换信息
错误检测:处理可能的错误
有效运作的操作:
1,资源分配:当多个用户或多个作业同时运行时,必须为每个用户或作业分配资源
2,日志:跟踪哪些用户使用了多少以及哪些类型的计算机资源
3,保护和安全:存储在多用户或联网计算机系统中的信息的所有者可能希望控制该信息的使用,并发进程不应相互干扰
操作系统服务视图
操作系统的用户界面:
两种基本方法:
一,提供命令行界面或者命令中断,允许用户直接操作系统指令完成命令
二,允许用户通过图形用户界面(GUI)和操作系统交互
一,命令解释程序
CLI(命令行界面)或命令解释器允许直接输入命令:
1,在内核中实现:内置命令
2,通过系统程序实现:优点——添加新功能不需要修改解释器
二,图形用户界面
用户友好:
1,桌面象征界面
2,通常是鼠标、键盘和显示器
3,图标代表文件、程序、动作等。
4,界面中对象上的各种鼠标按钮会导致各种操作(提供信息、选项、执行功能、打开目录(称为文件夹)
许多系统现在都包括CLI和GUI界面:
Microsoft Windows是带有CLI“命令”shell的GUI
Apple Mac OS X是一个“Aqua”GUI界面,下面有UNIX内核,外壳可用
Unix和Linux有带有可选GUI界面的CLI
触摸屏设备需要新的界面
1,不需要鼠标
2,有基于手势的动作和选择
3,用于文本输入的虚拟键盘
4,语音命令
系统调用(system call)
系统调用提供了操作系统提供的有效服务界面,内核提供的服务的编程接口
一般程序开发人员根据应用程序编程接口(API)访问,而不是直接使用系统调用
三种最常见的API:
适用于Windows的Win32 API
POSIX[1]API,用于基于POSIX的系统
Java虚拟机(JVM)的Java API
系统调用实现:
每个系统调用都有一个数字(作为索引),系统调用接口维护一个表:根据这些数字编制索引。按照API进行系统调用(名称和参数)
系统调用参数传递:
用于将参数传递到操作系统的三种通用方法:
1,在寄存器中传递参数
2,将参数存在内存的块和表里,并将块的地址通过寄存器来传递
3,参数被推送到堆栈上(栈),通过程序和操作系统弹出堆栈
块和堆栈方法不限制传递的参数的数量或长度
系统调用类型: