操作系统概述
操作系统的定义和功能
进程管理
进程控制:创建,暂停,唤醒,撤销;
进程调度:调度策略,优先级;
进程通信:进程间通信;
内存管理
内存分配
内存共享
内存保护
虚拟内存
设备管理
设备的分配和调度
设备无关性作
设备传输控制
设备驱动
文件管理
存储空间管理
文件的操作
目录的操作
文件和目录的存储权限
操作系统发展历史
手工操作
硬件使用:电子管,接线面板(按钮/开关)
程序类型:二进制程序
输入方式:在纸带或卡片上打孔
使用特点:程序准备/启动/结束手工处理,繁琐耗时
缺点:效率低,用户独占,缺少交互
单道批处理系统
工作过程:装入>运行>撤出
工作特点:批量(作业队列(由管理员事先将多个作业输入到磁盘形成)),
自动(识别作业,装入和撤出),单道(依次串行),程序的装入和撤出自动完成,
运行完毕通知用户取结果效率高,
缺点:外设和cpu交替空闲和忙碌,cpu和外设利用率低
多道批处理系统
特点:多道(内存中同时存放多道程序),并行(宏观上),串行(微观上)
缺点:作业处理时间长,交互能力差,运行过程不确定
分时系统
特点:多路调制性(多用户联机使用一台计算机),独占性(用户感觉独占计算机),
交互性(及时响应用户请求)
进程管理
进程概念
【进程产生背景】
程序运行在并发环境中
运行过程不确定
结果不可再现
解决方案:对程序运行过程施加互相制约。
【进程的定义】
进程是程序在某个数据集合上的一次运行活动,描述和管理程序的运行过程。
【进程的特征】
动态性(进程是程序的一次执行过程,动态产生/消亡)
并发性(进程同其他进程一起向前推进)
异步性(进程按各自的速度向前推进)
独立性(进程是系统分配资源和调度CPU的单位)
【进程的类型】
按使用资源的权限
系统进程:指系统内核相关的进程
用户进程:运行与用户态的进程
按对CPU的依赖性
偏CPU进程:计算型进程
偏I/O进程:侧重于IO的进程
【进程与程序的区别】
动态与静态
进程是动态的:程序的一次执行过程
程序是静态的:一组指令的有序集合
暂存与长存
进程是暂存的:在内存驻留
程序是长存的:在介质上长期保存
程序和进程的对应
一个程序可能有多个进程。
【进程状态】
运行状态
进程已经占有CPU并在上面运行。
就绪状态
具备运行条件但由于无CPU,暂时不能运行。
阻塞状态
因为等待某项服务完成或信号不能运行的状态。如:等待系统调用,IO操作,合作进程信号。
【进程状态迁移】
进程的状态可以依据一定的条件相互转化。
① ②
就绪---->运行---->阻塞
运行---->就绪<----阻塞
③ ④
① 等待被CPU再次调度->CPU上运行
② CPU上运行->等待进入就绪的信号
③ 时间片到->等待被CPU再次调度
④ 服务完成->等待被CPU再次调度
问题1:实际操作系统中,为何没有“阻塞到运行”或“就绪到阻塞”这样的状态迁移?
阻塞态不能到运行态,因为CPU在同一时刻只能处理一个进程。
就绪态不能到阻塞态,一个就绪进程是不可能做任何会产生阻塞的 I/O 或者别的什么事情。只有运行的进程才能被阻塞。
【具有新建和终止的进程状态】
新建状态 阻塞状态 就绪状态 运行状态 终止状态
【Linux进程的状态】
可运行态
就绪(TASK_RUNNING):在就绪队列中等待调度
运行:正在运行
阻塞态
浅度阻塞(TASK_INTERRUPTIBLE):能被其他进程的信号或时钟唤醒
深度阻塞(TASK_UNINTERRUPTIBLE):不能被其他进程的信号或时钟唤醒
僵死态(TASK_ZOMBIE):进程终止执行,释放大部分资源。
挂起态(TASK_STOPPED):进程被挂起