进程理论 阻塞非阻塞 同步异步 I/O操作

时间:2023-11-26 09:15:14

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操作时是会切走的。