
目录一.进程1.一个正在运行的程序就叫进程。2.进程是操作系统进行资源分配的基本单位。3.创建进程的开销4.PCB的部分重要属性1.1进程状态1.2进程优先级1.3进程上下文1.4进程记账信息5.进程的“并行执行”和“并发执行”二.线程1.线程是CPU上调度执行的基本单元。2.并发编程1.1线程安全3.线程之间的关系三.进程与线程的区别四.进程与线程的联系要了解进程和线程的关系就得先了解他们本身。一.进程操作系统中的重要概念进程1.一个正在运行的程序就叫进程。每启动一个进程就对应一个PCB对象进程控制块PCB是一个巨大的结构体里面有很多属性来描述进程。进程和PCB密切相关但又不是一回事。进程是一个动态的执行实体而PCB是操作系统用来管理和描述该进程的静态数据结构。2.进程是操作系统进行资源分配的基本单位。3.创建进程的开销1.1创建一个新的进程创建一个PCB初始化PCB中的各个然后把PCB加到链表上给操作系统管理。1.2销毁一个进程把进程对应的PCB在链表上找到并且从链表上删除。4.PCB的部分重要属性1.1进程状态1.2进程优先级1.3进程的上下文1.4进程的记账信息这些属性的执行都是通过操作系统调度实现的。1.1进程状态操作系统中进程状态分为”就绪状态“和”阻塞状态“两种。就绪状态是随叫随到的意思进程随时可以到CPU上执行。操作系统一般不区分”就绪“和“执行”认为都是就绪。阻塞状态进程当前不适合在CPU上执行。1.2进程优先级故名思意有的进程优先级高他吃到的CPU资源就多。例如我们后台挂着QQ、微信和某个游戏QQ和微信吃到的CPU资源少就算延迟几秒接收信息也没事但我游戏一卡可就没了一般游戏CPU资源吃的得更多优先级也是更高的。1.3进程上下文操作系统是随机调度的所以极有可能一个进程没执行完CPU就被调走了保存上下文那么此时CPU内的寄存器就会把值放入内存中PCB对应的属性中当CPU再次调回来时恢复上下文寄存器从内存中获取离开时的值继续执行下去也就是接着CPU离开时的地方继续执行。这就叫进程上下文。1.4进程记账信息似统计功能统计每个进程在CPU上运行的时间如过发现某个进程很长时间没有吃到CPU资源就会给这个进程倾斜一些资源。tip:计算机CPU算力惊人就算是现代普通计算机CPU每一秒都能进行30亿以上的计算次数一个电脑开着百八十个进程都是很正常的但一个CPU核心只有几十个核心数量无法覆盖进程个数这时就采用“并发执行”和“并行执行”维护进程。5.进程的“并行执行”和“并发执行”并行执行在多个CPU核心上同时执行多个进程的方式叫“并行执行”。并发执行在一个CPU核心上进行分时复用“同时”执行多个进程的方式就是“并发执行”。人们在电脑打开多个程序认为他们是同时执行的其实是一个CPU核心在串行执行只不过切换速度极快人察觉不了而已。二.线程一个进程最少拥有一个线程主线程。一个线程就是一个执行流线程中有自己要执行的代码。1.线程是CPU上调度执行的基本单元。2.并发编程为了高效利用CPU核心资源“并发编程”就因此而生。我们在多线程中使用“并发编程”技术编写线程中要执行的代码逻辑。虽然进程也能实现“并发编程”但是线程更轻量进程的创建和销毁开销都太大。1.1线程安全多线程编程需要谨慎编写代码否则很容易出现线程安全问题引起线程安全的原因有5个1操作系统对线程的随机调度。根本原因。2多个线程同时修改同一个变量。3修改操作不是原子性的。4内存可见性问题5指令重排序解决线程安全的方法在“线程安全”文章中详细讲解每一个进程是一个要执行的任务。每一个线程也是一个要执行的任务。注意并发编程和并发执行的区别。并发编程指的是一种编程范式或技术它的目的是通过在多个线程中编写代码高效利用CPU资源实现处理多个任务。如一个线程在执行IO等待用输入时操作系统就不会一直等着这个线程而是去执行其他线程。并发执行指的是一种在行为多个进程或线程在同一核心上轮流执行任务。3.线程之间的关系进程包含线程同一进程下的线程之间共享大部分资源如cpu、内存和硬盘等。同一进程下的线程也可能是并行执行如线程A在核心1上执行线程B在核心2上执行。三.进程与线程的区别1.进程是操作系统资源分配的基本单位。2.线程是CPU上调度的基本单元。3.进程比线程“更重”1创建线程比创建进程更快。2销毁线程比销毁进程更快。3调度线程比调度进程更快。4.进程代表一个运行的程序线程只是其中的一个任务。除开单线程情况下一个进程只有一个线程即主线程5.进程和进程之间具有隔离性进程之间不会共享内存空间不会共享资源进程挂了一般不会影响到其他进程同一进程下线程之间共享内存等资源有时一个线程出bug挂了可能会把整个进程都给抬走。四.进程与线程的联系1.进程包含线程。一个进程内至少有一个线程。2.进程的资源被线程共享。属于衣食父母了