1.什么是进程
进程指的是一个正在运行的程序,进程是用来描述程序执行过程的虚拟概念
进程的概念起源于操作系统,进程是操作系统最核心的概念,操作系统其它所有的概念都是围绕进程来的
2.操作系统
操作系统是一个协调/管理/控制计算机硬件资源与应用软件资源的一段控制程序
有两大功能:
1.将复杂的硬件操作封装成简单的接口给应用程序或用户去使用
2.将多个进程对硬件的竞争变得有序
并发:多个任务看起来是同时运行的
串行:一个任务完完整整地运行完毕,才能运行下一个任务
多道技术:多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题。解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。
1.空间上的复用:多个任务复用内存空间
2.时间上的复用:多个任务复用cpu时间
一个任务占用cpu时间过长会被操作系统强行夺走cpu执行权限:比起串行执行反而降低效率
一个任务遇到io操作也会被操作系统强行剥夺走cpu的执行权限:比起串行执行可以提升效率
3.同步/异步和阻塞/非阻塞
同步:执行一个操作后,要等待结果,然后才能继续执行后续的操作
异步:执行一个操作后,可以取执行其他的操作,然后等待通知再回来执行刚才没执行完的操作
阻塞:线程给CPU传达一个任务之后,一直等待CPU处理完成,然后才执行后面的操作。
非阻塞:线程给CPU传达任务后,继续处理后续的操作,隔段时间再来询问之前的操作是否完成。其实这样的过程也要轮询。
4.I/O操作
I/O:input和output即输入和输出
由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。
比如打开浏览器,访问新浪首页,浏览器这个程序就需要通过网络IO获取新浪的网页。浏览器首先会发送数据给新浪服务器,告诉它我想要首页的HTML,这个动作是往外发数据,叫output,随后新浪服务器把网页发过来,这个动作是从外面接收数据,叫input。所以,通常,程序完成IO操作会有input和output两个数据流。当然也有只用一个的情况,比如,从磁盘读取文件到内存,就只有input操作,反过来,把数据写到磁盘文件里,就只是一个output操作。
CPU遇到IO操作时是会切走的。