版权声明:本文为博主原创文章,遵循CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/g8433373/article/details/88088507
1-一个完整的程序执行
下面展示一段c语言代码,大家想一下我们执行的时候到底经历了什么?
#include<stdio.h>
int main(int argc, char const *argv[])
{
/* code */
puts("hello world");
return 0;
}
下面了解下完整的执行过程:
• 用户告知操作系统(方式很多,如:在命令行键入相应的命令;通过鼠标双击hello world程序的图标)
• 操作系统判断文件是否是可执行文件(Windows:PE;Linux:ELF)
• 操作系统创建一个进程,将可执行文件格式映射到进程结构,由该进程执行程序
• 操作系统将控制权交给调度程序,为hello world程序设置上下文环境,跳到程序开始之处(调度程序如何选中? i/o多路复用?)
• 执行第一条指令,发生缺页异常(为什么缺页异常?)
• 因为代码执行需要将代码load到内存, 但是你一开始没有被分配,于是操作系统(内存管理模块)就会分配一块空闲的内存来执行hello world,有时候一页还不够,就有可能进行多次的缺页异常以及分配内存的操作 ps.代码是从磁盘读入内存
• 接着操作系统执行puts函数(系统调用),作用是在标准的输出设备上显示字符串
• 操作系统把需要写入屏幕的字符串送给一个进程
• 控制设备的进程通知窗口显示字符串,窗口系统确定是个合法操作,将字符串->像素->设备存储映像区
• 视频硬件->显示器可以接受的控制数据信号
最后 在屏幕上看到了hello world。
2-操作系统作用
作用一: 操作系统是资源的管理者
管理哪些资源?
硬件资源: CPU,内存,设备(I/O设备,磁盘,时钟,网卡等)
软件资源: 磁盘上的文件,各类管理信息等
怎么管理资源?
通过数据结构和算法跟踪记录资源的使用情况(数据结构决定可以有哪些功能, 基于这些功能可以策划有哪些算法支持资源如何分配,有哪些空闲资源可以分配等问题)
相关策略
静态分配策略: 程序运行前就将资源全部分配完成,会造成资源浪费
动态分配策略: 执行过程中,需要资源再提出申请,会根据数据结构决定是否分配
分配和回收: 具体取决于数据结构(如 可以使用位图去实现,已分配标注1,未分配0)
资源管理角度-操作系统五大基本功能
进程线程管理(CPU管理): 进程线程状态, 控制, 同步/互斥, 通信, 调度…
存储管理: 分配/回收, 地址转换, 存储保护, 内存扩充…
文件管理: 文件目录, 文件操作, 磁盘空间, 文件存储控制 …
设备管理: 设备驱动, 分配回收, 缓冲技术…
用户接口: 系统命令, 编程接口
作用二: 操作系统是系统服务的提供者
举例
进程的创建,执行
文件和目录的操作
I/O 设备的使用
作用三: 操作系统对机器硬件的扩展
举例
操作系统是硬件基础上的第一层软件
将硬件的复杂程度简化(例如: 软盘的I/O操作)
3-操作系统的特征
并发
指的是操作系统具有同时处理多个任务的能力
并发引起的问题
任务切换,保护,互相依赖任务之间同步的问题
同时执行多个程序的错觉: 单CPU场景下,任务之间轮流执行
并行: 不同任务同时在多个硬件部件上执行。(注意并发和并行的区别:马拉松和110米跨栏)
共享
指的就是多个用户程序共同使用操作系统的资源
举例
互斥共享(打印机)
同时共享(重入代码,磁盘文件)
问题: 操作系统资源分配,保证不同进程间不被影响
虚拟
将物理实体(CPU,内存)映射为若干个逻辑实体;分时,分空间
目的: 提升资源利用率
举例:
CPU: 每个进程在虚拟CPU上在跑,但是微观上只有一个进程在一个CPU上在跑
进程独立地址空间,物理上是共用一块物理内存
显示设备可以多开, 也是虚拟化的结果
随机
操作系统必须随时对次序不可预测的任务进行响应
举例
进程运行速度不可预知,多个进程同时运行(上下CPU)
难以重现系统在某一个时刻的状态
4-操作系统架构
Windows
简化了一版基本架构,如图:
其中和硬件打交道的就是:内核和硬件抽象层
用户和操作系统打交道的是:动态链接库
UNIX
看下简单版的UNIX架构
看下相对全面一些的
Linux
感觉用的最多的,按照自己的理解整了一套架构图,不知道对不对,哈哈
5-操作系统的分类
操作系统的发展是随着计算机硬件技术的发展
批处理系统
单道批处理系统
多道批处理系统
真脱机
假脱机(Spooling技术) : 这个觉得很经典
分时操作系统
轮流为每个用户服务
时间片: 按照时间片轮转为每个用户服务
追求目标: 响应时间
通用操作系统
将分时和批处理结合
场景前台: (分时优先,批处理后)
场景后台: (批处理先,分时后)
实时操作系统
能够及时响应外部请求,能够在严格的时间内完成
实时过程控制: 航空
实时通信系统: 交换机,银行
追求目标
1 严格时间内能有响应
2 高可靠性
个人计算机操作系统
计算机在某一时刻只为一个人服务
追求目标: 界面友好,使用简单,丰富应用软件
网络操作系统
基于网络体系结构和网络协议标准开发的网络模块
功能: 网络通信,安全,资源共享,以及各种网络应用
分布式操作系统
以网络为基础或者以多机为基础,特征是将计算任务分布在不同计算机上
技术点: 任务分配,调度,负载均衡
优点: 处理能力强,速度快,可靠性强,具有透明性
嵌入式操作系统
对应不同设备的软硬件系统, 他是某一个设备中的系统, 不一定是计算机
功能: 控制设备中的各个部件协调工作, 合理调度
智能卡操作系统
智能卡: 一种带有CPU芯片的卡片
特点: 由于非常小,对能耗和存储都有严格的限制
举例: 电子支付
6-核心点
操作系统的定义
操作系统的三个作用, 四个特征
Spooling技术
Windows,UNIX,Linux架构特点