计算机操作系统发展史
第一阶段,硬件昂贵,人力便宜,一个人写代码,手工装入与装出纸带,一次一个作业
第二阶段,硬件昂贵,人力便宜,一个人写代码,一个人手工装入装出纸带,一次多个作业,即单批道处理但是慢的输入输出还是由CPU控制,于是产生了通道和中断技术,通道即能让CPU与输入输出操作并行,中断即能让刚才做输入输出的作业完成后,使CPU收到中断信号停止现在工作,重新来处理完成输入输出后的作业硬件不断发展,为了充分利用,出现多批道处理
第三个阶段,硬件便宜一些,人力开始昂贵,便出现了分时系统,于是做到了人工人员人手一机,
第四个阶段,硬件很便宜了,于是有了个人操作系统
第五个阶段,线代操作系统,规模大,早已进入互联网
操作系统分类
批处理操作系统 | 分时操作系统 | 实时操作系统 | 嵌入式操作系统 | 分布式操作系统 | 个人操作系统 |
---|---|---|---|---|---|
作业成批的输入计算机 | 多个用户同时享用一台计算机 | 规定的严格时间内完成事情的处理 | 能嵌入 | 大量计算机通过网络连接在一起 | 单用户多任务 |
火箭发射,核电站控制 | MP3 ,手机,机器人 | 私人电脑呀 |
引入
- 为什么使用多道程序(multi-programming)?
提高计算机的各种资源使用效率 - 如何实现多道?
引进进程(process)
进程是什么?
1.程序的代码
2.程序的数据
3.CPU寄存器
4.堆(heap):保存进程运行时动态分配的内存空间
5.栈(stack):保存运行的上下文信息;函数调用时,保存函数的形参和局部变量
6.进程所占用的一组系统资源,打开的文件
资源角度:一组相关的资源构成资源环境 以上6点
运行角度:一个正在运行的程序(动态)
进程的特性
1.并发性
2.动态性:通用寄存器的数据变换;IP寄存器的指令变换;堆的空间的释放与分配;栈的出栈与进栈等等,都在变化;
3.独立性:拥有自己的一套逻辑寄存器(就是一个个内存变量)
进程运行逻辑寄存器的值装入物理寄存器中(物理寄存器只有一套),暂时不运行物理寄存器值保存入逻辑寄存器
程序是什么?
代码和数据(静态)
进程的创建与终止
进程创建 | 进程的终止 |
---|---|
系统初始化 | 正常退出 |
正在运行的程序需要去创建进程 | 错误退出 |
用户发出请求,创建进程 | 致命错误 |
初始化批处理作业,创建进程 | 被其他进程终止 |
为什么引入线程?
进程可以并发执行,但进程的独立性让进程之间很难实现数据共享,进程通信,因此提出线程实体来代替进程
什么是线程?
线程:代码在这个资源环境的一条执行流程
进程=线程+资源平台
一个进程可以有多个线程
线程可以并发
相同的资源平台,共享相同的地址空间
共享的资源:
管理方面的大部分 如ID优先级
状态存储方面 代码,数据,堆等(一级资源,可以线程间共享,只有一份)
独享资源:栈和逻辑寄存器,N个进程N份
进程与线程的比较
进程 | 线程 | |
---|---|---|
线程出来之后 | 资源的分配单位 | CPU的调度单位 |
资源情况 | 拥有完整的资源平台 | 共享一部分,独享一部分 |
三种基本状态 | 都有 | 都有 |
创建时间 | 长 | 短(通常快100倍) |
终止时间 | 长 | 短 |
切换时间 | 长 | 短(同一进程里的线程切换) |
使用资源通信开销 | 经由内核,开销多 | 不经由内核,开销少 |
线程必须依附于进程,而且线程独占资源少,称为轻量级的进程
线程实现
用户线程:不依赖操作系统的内核,由一组线程库函数完成线程的创建,终止,和管理
内核线程:由操作系统内核完成线程的创建,终止,和管理
进程通信
进程关系
独立与关联
关联需要通信
低级通信:进程之间只传递少量的控制信息,一般来说只有一个字节或者一个整形变量 ,信号量与信号
高级通信:任意数量的数据
1. 共享内存:操作系统管理的
2.消息传递
3.管道
进程调度
三个状态
运行:占有CPU
就绪:万事俱备,只欠东风
阻塞:等待,等待输入输出操作,与其他进程存在同步等
运行到阻塞:正在运行时,需要输入数据
就绪到运行:CPU调度
运行到就绪:CPU调度
阻塞到就绪:等待的事情完成了,条件成熟
进程死锁
参考资料:谌卫军 王浩娟《操作系统》