与用户交互的程序:
- 基于文本的shell
- 基于图标的图形化用户界面(GUI)
操作系统所处的位置:
多数计算机有两种运行模式:
- 内核态(管态),操作系统运行在此模式,能够执行任何指令。
- 用户态,用户软件运行在此模式,使用机器指令中的子集。
1 操作系统的概念
自顶向下——作为扩展机器——为用户程序提供抽象。
- 创建好的抽象,并实现和管理它所创建的抽象。
- 隐藏硬件,呈现给用户良好、清晰、优雅、一致的抽象。
自底向上——作为资源管理者——管理计算机资源。
- 在相互竞争的程序之间管理资源分配。
- 多路复用:
- 时间上多路复用:不同程序轮流使用。
- 空间上多路复用:每个竞争的程序都得到一部分资源。
2 操作系统发展历史
1945~1955:真空管和穿孔卡片
1955~1965:晶体管和批处理系统
1965~1980:集成电路芯片和多道程序设计
1980~至今:个人计算机
1990~至今:移动计算机
3 计算机硬件
- CPU
- 存储器
- 磁盘
- I/O设备
- 总线
大型Pentium系统结构:
Pentium系统的启动过程:
- 主板上有一个基本输入输出系统(BIOS),其中有底层I/O软件。
- 计算机启动时,BIOS开始运行。
- 首先检查安装RAM数量,键盘和其他基本设备是否已安装并正常相应。
- 开始扫描ISA和PCI总线并找出连接在上面的所有设备,记录下来。
- 如果现有设备和系统上一次启动时的设备不同,则配置新的设备。
- BISO通过存储在CMOS存储器中的设备清单决定启动设备。
- 启动设备上的第一个扇区被读入内存并执行。
- 启动扇面末尾的分区表检查的程序,确定哪个分区是活动的。
- 从活动分区读入第二个启动装载模块,装在模块被读入操作系统。
- 操作系统询问BIOS,以获得配置信息。
- 系统检查每种设备驱动程序是否存在,有就将设备驱动程序调入内核。
- 系统创建背景进程,在终端上启动登录程序或GUI。
4 操作系统大观园
- 大型机OS
- 服务器OS
- 多处理器OS
- 个人计算机OS
- 掌上计算机OS
- 嵌入式OS
- 传感器节点OS
- 实时OS
- 智能卡OS
5 操作系统概念
进程:进程本质是正在执行的一个程序,是分配资源的基本单位。与一个进程有关的所有信息,除了该进程自身地址空间的内容以外,均存放在操作系统的一张表中,称为进程表(数组或链表结构)。
地址空间:现代操作系统通常使用虚拟内存技术。操作系统可以把部分地址空间装入主存,部分留在磁盘上,在需要时再交换它们。
文件:大多数系统都有目录结构,目录项可以是文件或者目录,构成了一种层次结构(文件系统)。进程和文件层次都可以组织成树状结构,一般进程的树状结构层次不深,而且是暂时的;文件树的层次常常多达四层、五层或者更多层,存在时间可能达数年。
输入/输出:所有计算机都有用来获取输入和产生输出的物理设备。包括键盘、显示器、打印机等。
保护:例如UNIX系统中对文件实现保护,三个3位保护字段(rwxrwxrwx),分别表示所有者、所有者同组用户、其他用户的读、写、执行权限。
shell:UNIX的命令解释器称为shell,不是操作系统的一部分。shell是终端用户与操作系统之间的界面,除非用户使用的是GUI界面。
6 系统调用
系统调用read(fd, &buffer, nbytes)函数的过程:
- 参数nbytes压栈
- 参数&buffer压栈
- 参数fd压栈
- 对库过程read进行实际调用
- 把系统调用的编号放在寄存器中
- 执行TRAP指令,切换到内核态,在内核中一个固定地址开始执行
- 内核代码检查系统调用编号,发出系统调用处理指令
- 系统调用句柄执行
- 控制返回给用户空间库过程
- 以通常的过程调用返回的方式,返回到用户程序
- 用户程序清除堆栈空间
- 完成系统调用read的11个步骤
7 操作系统结构
- 单体系统
- 层次式系统
- 微内核
- 客户机-服务器模式
- 虚拟机
- 外核
8 C语言
编译C和头文件,构件可执行程序的过程: