咱们编写这样一条C语言代码web
#include<stdio.h> int main() { puts("hello world"); return 0; }
但若是换一个角度来看算法
操做系统是计算机系统中的一个系统软件,是一些程序模块的集合–编程
有效:系统效率,资源利用率 CPU利用率充足与否?I/O设备是否忙碌?windows
合理:各类软硬件资源的管理是否公平合理?架构
方便使用:用户界面,编程接口并发
操做系统的三个做用:svg
- 1.资源的管理者:有效函数
自底向上,操做系统是资源的管理者优化
硬件:CPU,内存,设备(I/O设备,磁盘,时钟,网卡)操作系统
软件:磁盘上的文件,各种管理信息
管理资源:
1>.跟踪记录资源的使用情况
2>.肯定资源分配策略–算法(动态分配策略)
3>.实时资源的分配和回收
从资源管理的角度:五大基本功能
进程/线程管理
进程线程状态,控制,同步互斥,通讯,调度
存储管理
分配/回收,地址转换,存储保护,内存扩充
文件管理
文件目录,文件操做,磁盘空间,文件存取控制
设备管理
设备驱动,分配回收,缓冲技术
用户接口
系统命令,编程接口
- 2.向用户提供各类服务:方便使用
OS是各类系统服务的提供者
从用户角度看,操做系统为用户提供了一组功能强大,方便易用的命令或系统调用
- 3.对硬件机器的扩展:扩展能力
OS是硬件基础上的第一层软件. 与硬件相关的工做复杂,琐碎.而这些工做由操做系统去执行
操做系统在应用程序与硬件之间创建了一个等价的扩展机器(虚拟机)
对硬件抽象,提升可移植性;比底层硬件更容易编程
指处理多个同时性活动的能力,因为并发会引起不少问题:活动切换,保护,相互依赖的活动间的同步
单CPU下,宏观上:这些程序同时在执行.但微观上,任什么时候刻只有一个程序真正在执行,即这些程序实在CPU上轮流执行的
并行:是指多个不一样程序同时多个硬件部件上执行(多个CPU)
操做系统与多个用户的程序共同使用计算机系统中的资源(共享有限的系统资源).
操做系统要对系统资源进行合理分配和使用,资源在同一时间段内交替被多个进程所用
互斥共享:打印机
同时共享:(可重入代码,磁盘文件)
操做系统要作到资源分配的最优化,并保护资源
一个物理的实体映射为若干个对应的逻辑实体–分时或分空间
虚拟是操做系统管理系统资源的重要手段,可提升资源利用率
CPU–每一个进程的"虚处理器"
存储器–每一个进程都有独立的虚拟地址空间(代码+数据+堆栈)
显示设备–多窗口或虚拟终端
操做系统必须随时对以不可预测的次序发生的事件进行响应并处理
进程的运行速度不可预知:多个进程并发执行,“走走停停”,没法预知每一个进程的运行推动的快慢
难以重现系统在某个时刻的状态
windows操做系统:
简化后: