操作系统
为什么要有操作系统?
计算机时一个十分复杂的系统,又cpu、内存、磁盘、IO设备、网络接口等等复杂的硬件组成,人的精力是有限的,不可能了解所有的硬件接口,但是程序可以。
所以我们在计算机上安装了一层软件(程序),称为所作系统
概念
操作系统是软硬件之间的起桥梁作用的一个庞大的程序
内核
内核时操作系统的核心,它是用来帮助操作系统管理硬件资源的。
应用程序只需要关系与内核的交互,不用关系硬件的细节
内核的能力:
1.进程调度:管理进程、线程、决定那个进程、线程使用CPU
2.内存管理:决定内存的分配和回收
3.提供文件系统:inode、block
4.管理硬件设备:为进程和硬件设备之间提供通信能力
5.内核空间,只有内核程序可以访问
6.用户空间,专门给应用程序使用
cpu有两种状态,用户态和内核态
库函数和系统调用
库函数
把常用的一些函数放在一个库里面(文件),提供给不同的人调用(lib)
系统调用
内核的入口,可以完成用户态到内核态的切换(因为只有内核态才能管理硬件资源)
当应用程序使用系统调用的时候,会产生一个中断,cpu中段当前执行的用户程序,跳转到中断处理程序,也就是开始执行内核程序。内核处理完成后,主动触发中断,把cpu的执行权交回给用户程序
虚拟内存地址
每个进程都会有自己的虚拟内存地址,操作系统会提供一种虚拟地址和物理地址的映射机制,将虚拟地址映射为真实的物理地址,这种内存管理方式,被称为虚拟内存
程序和进程
程序
使用编程语言编写的代码经过预处理、编译、汇编、连接处理后得到的计算机可以理解和执行的指令叫做程序
进程
运行起来的程序叫做进程,时操作系统进行资源分配和程序调度的基本单位
并发
微观上串行,宏观上并行(点时间串行,段时间并行)
我们知道cpu的io速度远远大于磁盘的io速度,当进程读取数据的时候,cpu不需要阻塞等待数据的返回,可以去执行其他的进程,等到磁盘中数据返回时,给cpu发送中断,cpu出行回来执行
因为cpu与磁盘速度差距特别大,这句造成了宏观上多个进程在同时运行