操作系统,本质为软件,直接与硬件交互,操作系统管理与服务应用进程,应用难以脱离操作系统单独运行,避免单进程独占资源,卡死操作系统与避免被卡死
一、操作系统管理硬件资源、控制程序运行,改善人机界面,为应用软件提供支持的一种系统软件,是位于硬件和应用之间的软件层, 理解一下: 1、操作系统本身也是软件,不过是直接与硬件进行交互,并封装硬件提供的接口以向上层应用提供服务的,就像计算机网络服务中的层次关系一样,操作系统负责屏蔽下层(硬件层)的差异,并向上层(应用层)提供统一的服务接口。 2、操作系统的核心功能是将有限的,离散的硬件资源,高效的抽象为无限的,连续的资源 3、站在软件的角度看,操作系统就是将硬件的资源虚拟化,提供用于编程的接口 4、结构上,操作系统=操作系统内核+系统框架
二、操作系统对应用提供管理和服务功能 1、服务的目标:单个应用的运行效率最大化 2、管理的目标:系统的资源整体利用率最大化 3、面向不同的场景,有不同的效率性和公平性的需求
三、操作系统为应用提供的服务: 1.存储可执行文件,并提供不同的存储选项 2.将可执行文件加载到CPU中运行,通过可执行文件生成进程 3.执行可执行文件中的运算等操作 4.多个应用同时执行时进行进程资源的管理
四、操作系统提供的一些具体服务(抽象) 1、计算上: CPU:cpu的计算能力由操作系统分配给进程,具体分配的数量和份额不受物理CPU的限定。 内存:虚拟内存,为进程在非连续的内存空间上模拟出连续的虚拟内存,存放进程运行时产生和需要用到的资源,例如堆空间,栈空间,静动态库等 I/O设备:将各种设备的差异屏蔽调,统一抽象为“文件”,提供统一的对文件的读写接口 2、线程同步资源: 应用层面可以实现自己的同步工具(如spinlock) 操作系统提供了更加高效的同步工具(如pthread_mutex) 3、进程间通信: 应用可以利用网络进行进程间通信(如loopback设备) 操作系统提供了更加高效的本地通信机制(如pipe管道工具)
五、操作系统对应用的一些具体管理: 1、应用生命周期管理 应用的加载,迁移,销毁等操作 2、计算资源分配 CPU:线程之间的调度机制 内存,物理内存的分配 IO设备:设备的复用与分配 3、安全与隔离 应用进程内部:访问控制机制 应用进程之间:隔离机制,包括错误隔离和性能隔离
六、应用进程难但可以脱离操作系统单独存在: 1、在一些对性能效率要求比较严苛的情况下可能会想到让硬件设备只运行一个进程, 2、一般的进程在运行时需要操作系统对其运行同步的日志服务,调试服务啥的 3、如果单个进程能将自己运行,扩展,调试需要的所有功能全部包括,就不需要依赖操作系统独自运行了。
七、操作系统避免流氓进程独占所有资源: 方法:每10ms发送一个中断来决定下一个要进行的任务, 方法:通过信号量等打断任务执行:kill -9 pid
八、卡死一个OS: 不断fork进程耗光系统的资源。
九、防止OS被卡死的方法: 1、资源配额cgroup/Linux 2、虚拟化:虚拟机运行程序,只卡死虚拟机 3、万能方法:重启 4、制度约束:AppStore的程序预审准入机制
操作系统 本质为软件 直接与硬件交互 操作系统管理与服务应用进程 应用难以脱离操作系统单独运行 避免单进程独占资源 卡死操作系统与避免被卡死