进程理论--同步异步 / 阻塞非阻塞/ 并发与并行 /

1.什么是进程

  进程:正在进行的一个过程或者说一个任务。而负责执行任务则是cpu。
  进程与程序的区别:程序仅仅只是一堆代码而已,而进程指的是程序的运行过程

2.多道技术(基于单核背景下产生的)

复制代码
单道: 一条道走到黑   ---->  串行
                - 比如: a,b需要使用cpu,a先使用,b等待a使用完毕后,b才能使用cpu。

            - 多道: (*******- 比如: a,b需要使用cpu,a先使用,b等待a,直到a进入“IO或执行时间过长”
                    a会(切换 + 保存状态),然后b可以使用cpu,待b执行遇到 “IO或执行时间过长”
                    再将cpu执行权限交给a,直到两个程序结束。

                - 空间上的复用(*******):
                    多个程序使用一个CPU。

                - 时间上的复用(*******):
                    切换 + 保存状态

                    1) 当执行程序遇到IO时,操作系统会将CPU的执行权限剥夺。
                        优点:
                            - CPU的执行效率提高

                    2) 当执行程序执行时间过长时,操作系统会将CPU的执行权限剥夺。
                        缺点:
                            - 程序的执行效率低
复制代码

3.并发与并行

- 并发与并行:(*******- 并发:
                    在单核(一个cpu)情况下,当执行两个a,b程序时,a先执行,当a遇到IO时,b开始争抢cpu的执行权限,再让b执行,他们看起像同时运行。
                - 并行:
                    在多核(多个cpu)的情况下,当执行两个a,b程序时,a与b同时执行。他们是真正意义上的同时运行。
                  面试题: 在单核情况下能否实现并行?  不行

4.同步异步

同步与异步(*******):
            同步与异步 指的是 “提交任务的方式”。

            同步(串行):
                两个a,b程序都要提交并执行,假如a先提交执行,b必须等a执行完毕后,才能提交任务。

            异步(并发):
                两个a,b程序都要提交并执行,假如a先提交并执行,b无需等a执行完毕,就可以直接提交任务。

5.阻塞与非阻塞

复制代码
阻塞与非阻塞(*******):
            - 阻塞(等待):
                - 凡是遇到IO都会阻塞。
                    - IO:
                        input()
                        output()
                        time.sleep(3)
                        文件的读写
                        数据的传输

            - 非阻塞 (不等待) :
                - 除了IO都是非阻塞 (比如: 从1+1开始计算到100万)
复制代码

6.进程的三种状态

复制代码
5) 进程的三种状态(*******):
            - 就绪态:
                - 同步与异步

            - 运行态:     程序的执行时间过长 ----> 将程序返回给就绪态。
                - 非阻塞

            - 阻塞态:
                - 遇到IO

        面试题: 阻塞与同步是一样的吗?非阻塞与异步是一样的吗?
            - 同步与异步: 提交任务的方式

            - 阻塞与非阻塞: 进程的状态。

            - 异步非阻塞: ----> cpu的利用率最大化!
复制代码

 

也可以通过"子进程.join()"的方式来阻塞主进程

进程阻塞的条件:即进程出现I/0操作时会阻塞      常见的IO操作:input()  output()  time.selep(10)  文件读写  数据传输   ‘子进程.join()’

 

 

 

posted @   躺云飘  阅读(210)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法
点击右上角即可分享
微信分享提示