并发编程-前提了解
Posted luckinlee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并发编程-前提了解相关的知识,希望对你有一定的参考价值。
一.程序和进程的区别
1.程序
一堆静态的代码文件
2.进程
一个正在运行的程序进程,抽象的概念(起源于操作系统)
3.进程被谁运行
由操作系统操控调用,交予CPU运行
二.操作系统
操作系统在计算机中的位置
1.什么是操作系统
操作系统就是一个协调、管理和控制计算机硬件和软件资源的控制程序。
2.操作系统的作用
1.将一些对计算机硬件的复杂丑陋的操作变成简单美丽的接口
2.将多个进程对CPU资源的抢占变得合理有序。
3.多道技术
多道技术中的多道指的是多个程序。多道技术的产生背景是为了解决多个程序竞争同一个资源(比如CPU)的有序调度问题,解决方式即多路复用(1.时间上的复用 2.空间上的复用)
1.空间上的复用
将内存中分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序。(内存隔离)
2.时间上的复用
实现CPU在多个进程之间来回切换,并且保留状态。
提升效率,最大限度使用CPU
如果是一个IO密集型进程,来回切换提升效率(在IO阻塞时自动切换)
如果是一个计算密集型,来回切换降低效率
三.进程的理论
1
2
3
4
5
6
7
8
9
|
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切到其他程序执行),会进入就绪状态。
四.并发与并行
无论是并发还是并行,在用户看来都是"同时"运行的,不管是进程还是线程,都只是一个任务而已,真正干活的是cpu,cpu来做这些任务,而一个cpu同一时刻只能执行一个任务
1.并发
伪并行,即看起来是同时运行。单个cpu+多道技术就可以实现并发
2.并行
同时运行,只有具备多个cpu才能实现并行
单核下,可以利用多道技术,多核,每个核也都可以利用多道技术(多道技术是针对单核而言的)
以上是关于并发编程-前提了解的主要内容,如果未能解决你的问题,请参考以下文章
JAVA并发编程揭开篇章,并发编程基本认识,了解多线程意义和使用