浅谈操作系统 、Python中线程和进程问题

本文介绍了操作系统、应用程序的基础概念,详细解析了并发与并行的区别,以及不同编程语言中进程与线程的应用。特别针对Python中的线程和进程进行了探讨,包括全局解释器锁(GIL)的作用及影响。

1. 操作系统/应用程序

2. 操作中的"并发"

3. 其他语言线程、进程

4. Python中线程和进程(GIL锁)



一 、 操作系统/应用程序

1、操作系统:就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。##{主要作用两个1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理、调度进程,并且将多个进程对硬件的竞争变得有序}
2、应用程序:程序员写好代码在操作系统上运行(依赖解释器)。###比如QQ、电脑管家、滴滴等等
3、硬件:主板、硬盘、CPU、显卡、内存、电源。

二、操作系统中的并发

并行 : 并行是指两者同时执行,比如赛跑,两个人都在不停的往前跑;比如去一个地方有多条路(多核的CPU )A 、B可以同时走,到达目的地。

并发 : 并发是指资源有限的情况下,两者交替轮流使用资源,比如一段路(单核CPU资源)同时只能过一个人,A走一段后,让给B,B用完继续给A ,交替使用,目的是提高效率。

区别:
并行是从微观上,也就是在一个精确的时间片刻,有不同的程序在执行,这就要求必须有多个处理器。
并发是从宏观上,在一个时间段上可以看出是同时执行的,比如一个服务器同时处理多个程序。

三、其他语言进程与线程(JAVA、c#)

进程定义
狭义定义:进程是正在运行的程序的实例。
广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

线程定义
定义:出现了能独立运行的基本单位
!!!注意:进程是资源分配的最小单位,线程是CPU调度的最小单位.每一个进程中至少有一个线程。
Java多线程情况下:
- 计算密集型操作:效率高。(主要指一些计算,需占用CPU)
- IO操作: 效率高 (主要进行文件操作,不占用cpu)



四、Python中线程和进程(GIL锁)

Python中线程和进程(GIL锁)
GIL锁又名全局解释器锁。 用于限制一个进程中同一时刻只有一个线程被cpu调度。

扩展:默认GIL锁在执行100个cpu指令(过期时间)。






下面看几道练习题:


1. 应用程序/进程/线程/协程的关系?

多进程:多进程模块multiprocessing来实现,cpu密集型,IO计算型可以用多进程
多线程:多线程模块threading来实现,IO密集型,多线程可以提高效率
协程:依赖于geenlet,对于多线程应用。cpu通过切片的方式来切换线程间的执行,遇到IO操作自动切换,线程切换时需要耗时,
而协成好处没有切换的消耗,没有锁定概念。
进程:是资源管理单位,进行是相互独立的,实现并发和并发
线程:是最小的执行单位,线程的出现为了降低上下文切换的消耗,提供系统的并发性

2. 为什么要创建线程?
由于线程是cpu工作的最小单元,创建线程可以利用多核优势实现并行操作(Java/C#)。
注意:线程是为了工作。


3. 为什么要创建进程?
程和进程之间做数据隔离(Java/C#)。
注意:进程是为了提供环境让线程工作。

转载于:https://www.cnblogs.com/Tang854416/p/9621476.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值