并发编程初识

Posted luckinlee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并发编程初识相关的知识,希望对你有一定的参考价值。

一.程序和进程的区别

1.程序

一堆静态的代码文件

2.进程

一个正在运行的程序进程,抽象的概念(起源于操作系统)

3.进程被谁运行

由操作系统操控调用,交予CPU运行

Top

二.操作系统

操作系统在计算机中的位置

技术图片

1.什么是操作系统

操作系统就是一个协调、管理和控制计算机硬件和软件资源的控制程序。

2.操作系统的作用

1.将一些对计算机硬件的复杂丑陋的操作变成简单美丽的接口

2.将多个进程对CPU资源的抢占变得合理有序。

3.多道技术

多道技术中的多道指的是多个程序。多道技术的产生背景是为了解决多个程序竞争同一个资源(比如CPU)的有序调度问题,解决方式即多路复用(1.时间上的复用 2.空间上的复用)

1.空间上的复用

将内存中分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序。(内存隔离)

技术图片

2.时间上的复用

实现CPU在多个进程之间来回切换,并且保留状态。

提升效率,最大限度使用CPU

如果是一个IO密集型进程,来回切换提升效率(在IO阻塞时自动切换)

如果是一个计算密集型,来回切换降低效率

Top

三.进程的理论

1.``串行:所有任务一个一个完成``2.``并发:一个cpu完成多个人为,看起来像是同时完成``3.``并行:多个cpu执行多个任务,真正的同时完成``4.``阻塞:cpu遇到io就是阻塞``5.``非阻塞:没有io,就叫非阻塞``6.``进程创建:一个子进程必须依赖于一个主进程才能开启``    ``unix:fork一个子进程会完全复制一个主进程的所有资源,初始资源不变``    ``windows:操作系统调用CreateProcess创建进程。创建一个子进程,会复制主进程所有的资源,但是会改变一些资源``7.cpu``:cpu是用来做计算,cpu是无法执行IO操作的,一旦遇到io操作,应该让cpu去执行别的任务

  

进程的状态

程序遇到IO操作(Input、output),会阻塞,IO完成会进入就绪状态,此时等待cpu执行。正在执行的程序时间片完(cpu切到其他程序执行),会进入就绪状态。

技术图片

Top

四.并发与并行

无论是并发还是并行,在用户看来都是"同时"运行的,不管是进程还是线程,都只是一个任务而已,真正干活的是cpu,cpu来做这些任务,而一个cpu同一时刻只能执行一个任务

1.并发

伪并行,即看起来是同时运行。单个cpu+多道技术就可以实现并发

2.并行

同时运行,只有具备多个cpu才能实现并行

单核下,可以利用多道技术,多核,每个核也都可以利用多道技术(多道技术是针对单核而言的)

以上是关于并发编程初识的主要内容,如果未能解决你的问题,请参考以下文章

C#并发编程之初识并行编程

初识网络并发编程

Python并发编程之初识异步IO框架:asyncio 上篇

并发编程初识

初识并发

Java并发编程初识-线程池