操作系统(一)之引论
自己写的操作系统学习笔记,如有雷同不胜荣幸,如有错误敬请指正
操作系统: 为用户程序提供一个更好,更简单,更清晰的计算机模型,并管理所有的相关设备。
( 用户与之交互的程序,基于文本的通常成为shell,而基于图标的则称为GUI(Graphical User Interface,图形用户界面))
- 硬件包括芯片,电路板,磁盘,键盘,显示器以及类似的设备,在硬件顶部的是软件
- 软件中最基础的部分是操作系统,它运行在内核态(管态,核心态)。在这个模式中,操作系统具有对所有硬件的完全访问权,可以执行机器能够运行的任何指令。软件的其余部分运行在用户态下,在用户态下,只使用了机器指令中的一个子集。
(嵌入式系统:该系统没有内核态;解释系统:如基于java的操作系统,它采用解释方式而非硬件方式区别组件)
1. 什么是操作系统: 为应用程序提供一个资源集的清晰抽象,并管理这些硬件资源
(所有的操作系统都提供使用硬盘的又一层抽象:文件)
作为资源管理者的操作系统: 从这个角度看,操作系统的任务是在相互竞争的程序之间有序的控制对处理器,存储器以及其他 I/O 接口设备的分配。
2. 操作系统的历史
- 第一代:真空管和穿孔卡片
- 第二代:晶体管和批处理系统。典型的FMS作业结构:① $JOB卡片,它标识所需的最大运行时间,计费账号以及程序员的名字 ② $FORTRAN卡片,通知操作系统从系统磁带上装入 FORTRAN 语言编译器 ③ $LOAD 卡片,通知操作系统装入编译好的目标程序 ④ $RUN 卡片,告诉操作系统运行该程序并使用随后的数据 ⑤ $END 卡片标识作业结束
- 第三代:集成电路和多道程序设计。360是第一个采用(小规模)集成电路(IC)的主流机型
- 第四代:个人计算机(LSI:大规模集成)
- 第五代:移动计算机
3. 计算机硬件简介
处理器:
- 程序计数器:它保存了将要取出的下一条指令的内存地址
- 堆栈指针:它指向了将要取出的下一条指令的内存地址
- 程序状态字(PSW)寄存器:包含了条件码位(由比较指令设置),CPU 优先级,模式(用户态或内核态),以及各种其他控制位
- TRAP指令:把用户态切换成内核态,并启用操作系统。当有关工作完成后,在系统调用后面的指令把控制权返回给用户程序(为了从操作系统中获得服务,用户程序必须使用系统调用以陷入 内核并调用操作系统)
存储器:
- CPU 中的寄存器:其典型的容量是,在32位CPU中为32X32位,在64位CPU中为64X64位
- 高速缓存:主存被分割成高速缓存,其典型大小为64字节,地址0至63对应高速缓存行0,地址64至127对应高速缓存行1。当某个程序需要读一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中,如果是,称为高速缓存命中 (高速缓存命中通常需要两个时钟周期)
- 缓存: 第一级(L1缓存)总是在CPU中,通常用来将已解码的指令调入CPU的执行引擎;第二级(L2缓存)用来存放近来使用过的若干兆字节的内存字。(对L1缓存的访问,不存在任何延时;而对L2缓存的访问,则会延时1或2个时钟周期。intel 多核芯片采用一个L2缓存被所有的核共享;AMD采用每个核都有自己的L2缓存)
- 主存(随机访问存储器,RAM,磁芯存储器):非易失性随机访问存储器在电源切断后并不丢失其内容;只读存储器(ROM) 不能被更改;EEPROM(电可擦除可编程ROM)和闪存 也是非易失性的,但可擦除和重写;CMOS是易失性的,许多计算机利用CMOS存储器保持当前时间和日期。
磁盘:
信息写在磁盘的一系列同心圆上,在任意一个给定臂的位置,每个磁头可以读取一段环形区域,称为磁道。把一个给定臂的位置上的所有磁道合并起来,组成一个柱面 。每个磁道划分为若干个扇区,扇区的典型是512字节
固态硬盘(SSD): 没有可以移动的部分,并且数据是存储在寄存器(闪存)中的。
虚拟内存机制: 这种机制需要快速的映像内存地址,以便把程序生成的地址转换为有关字节在RAM中的物理地址,这种映像由CPU中的一个称为存储器管理单元(MMU) 的部件来完成。
上下文切换: 在多道程序系统中,从一个程序切换到另一个程序。
设备驱动程序: 专门与控制器对话,发出命令并接收响应的软件
ATA 代表高级技术附件,SATA 表示串行高级技术附件
将设备驱动程序装入操作系统的途径:
- 将内核与设备驱动程序重新链接,然后重启系统
- 在一个系统文件中设置一个入口,并通知该文件需要一个设备驱动程序,然后重启系统。在系统启动时,操作系统去寻找所需的设备驱动程序并装载之
- 操作系统能够在运行时接受新的设备驱动程序并且立即将其安装好,无须重启系统
实现输入和输出的方式:
- 忙等待:缺点是要占据CPU,CPU一直轮询设备直到对应的 I/O 操作完成
- 中断通知操作:设备驱动程序启动设备并且让该设备在操作完成时发出一个中断,设备驱动程序在这个时刻返回
- ① 设备驱动程序通过写设备寄存器通知设备控制器做什么
- ② 设备控制器启动该设备,当设备控制器传送完毕被告知要进行读写的字节数量后,它在第二步使用特定的总线发信号给中断控制器芯片
- ③ 如果中断控制器已经准备接收中断,它会在CPU芯片的一个管脚上声明
- ④ 中断控制器把该设备的编号放到总线上,这样CPU可以读总线,并且知道哪个设备刚刚完成了操作
- 直接村存储器访问(DMA)芯片:它可以控制在内存和某些控制器之间的位流,而无须持续的CPU干预。
CPU 通过 DDR3 总线与内存对话,通过PCIe总线与外围图形设备对话,通过DMI总线经集成中心与所有其他设备对话。而集成中心通过通用串行总线与USB设备对话,通过SATA总线与硬盘和DVD驱动器对话,通过PCIe传输以太网络帧。
SCSI 总线是一种高速总线,用在高速硬盘,扫描仪和其他需要较大带宽的设备上
实现即插即用 的 I/O 系统的方案是在每块 I/O 卡上提供 DIP 开关或跳槽器。即插即用所做的工作是,系统自动的收集有关 I/O 设备的信息,集中赋予中断级别和 I/O 地址,然后,通知每块卡所使用的数值。
4. 操作系统大观园
- 大型机操作系统:OS/390
- 批处理系统:处理不需要交互式用户干预的周期性作业
- 事物处理系统:负责大量小的请求
- 分时系统:允许多个远程用户同时在计算机上运行作业
- 服务器操作系统:Solaris,FreeBSD,Linux,Windows Server 201x
- 多处理器操作系统:Windows,Linux
- 个人计算机操作系统:Linux,FreeBSD,Windows7,Windows8,OS X
- 掌上计算机操作系统(PDA个人数字助理):Android,IOS
- 嵌入式操作系统:嵌入式Linux,QNX,VxWorks
- 传感器节点操作系统:TinyOS
- 实时操作系统:(硬实时系统,软实时系统) eCos
- 智能卡操作系统
5. 进程: 包括进程的地址空间和对应的进程表项
进程本质上是正在执行的一个程序,与每个进程相关的是地址空间。在许多操作系统中,与一个进程有关的所有信息,除了该进程自身地址空间的内容以外,均存放在操作系统的一张表中,称为进程表 ,进程表是数结构。
进程系统调用包括:① 申请更多的内存 ② 等待一个子进程结束 ③ 用另一个进程覆盖该程序
在读写文件之前,首先要打开文件,检查其访问权限。若权限许可,系统将返回一个小整数,称作文件描述符
在UNIX中的特殊文件是为了使 I/O 设备看起来像文件一般。快特殊文件指那些由可随机存取的块组成的设备;字特殊文件用于打印机,调制解调器和其他接收或输出字符流的设备
UNIX操作系统通过对每个文件赋予一个9位的二进制保护代码,该保护代码有三个3位字段,一个用于所有者,一个用于与所有者同组(用户被系统管理员划分成组)的其他成员,一个用于其他人。每个字段中有一位用于读访问,一位用于写访问,一位用于执行访问(rwx)
6. 系统调用