thread学习1

多任务编程

意义:充分利用计算机资源,同时运行多个任务,提高任务整体的运行效率

定义:通过程序利用计算机的多个核心达到同时执行多个任务的目的。以此达到提成程序运行效率的目的

并行:多个计算机和性在同时处理多个任务,这时多个任务之间是并行关系

并发:同时运行多个任务,内核在多个任务间不断切换,达到多个任务都会被执行的处理效果,此时多个任务间时并发关系

进程:程序在计算机重的一次执行过程

程序:是一个可执行文件,是静态的,占有磁盘,不占计算机的运行资源

进程:进程是一个动态的过程,占有计算机资源,有一定的生命周期
×同一个程序不同的运行过程时不同的进程,因为分配的资源和生命周期都不相同

进程的创建流程
1.用户启动一个程序或者调用接口发起进程创建
2.操作系统接受用户请求分配计算机资源创建进程
3.操作系统将一定状态的进程提供给用户使用
4.用户利用操作系统提供的进程完成任务

进程相关的概念
cpu时间片
如果一个进程占有cpu此时我们称为该进程占有cpu时间片
多个进程任务会轮流占有cpu时间片形成并发效果

PCB进程控制块
进程创建后会自动在内存产生一个空间存放进程信息。
进程信息:进程的ID 进程占有内存的位置,创建时间,创建用户。
查看系统该进程信息:ps -aux
D:等待态 阻塞–>不可中断等待态
S:等待态 睡眠–>可中断等待态
T:等待态 暂停–>暂停执行
R:运行态(就绪态)
Z:僵尸

+:前台进程 (在终端运行)
<:较高优先级的进程
N:较低优先级的进程
s:会话组
l:有进程链接

进程的优先级
取值范围:-20----19 (-20最高)
nice:以指定的优先级运行一个程序
nice -9 程序名—>以9的优先级运行程序
sudo nice --9 程序名 —>以-9的优先级运行程序(优先级越小优先级越高)

PID(process ID):在操作系统中每个进程都有唯一的PID值是由系统分配的。

进程特征
×进程时操作系统分配资源的最小单元
×每个进程拥有自己独立的运行空间(虚拟内存空间)
×进程之间的运行相互独立互不影响

进程的状态
三态
×就绪态:进程具备执行条件,等待系统分配处理器资源进入运行态
×运行态:进程占有cpu处于运行状态
×等待态:进程暂时不具备运行条件,需要阻塞等待
五态(三态的基础上增加新建和终止)
×新建:创建一个新的进程,获取系统资源的过程
×终止:进程执行结束,释放资源的过程

父子进程
在系统中除了初始化进程每个进程都有一个父进程,可能由0个或多个子进程。由此形成进程间的父子关系
便于进程管理,父进程发起创建子进程要求

查看进程树:pstree

查看父进程PID:ps -ajx

要求:
1.什么时进程,进程和程序的区别
2.了解进程的特征和基本概念
3.理解并发并行的区别
4.清楚进程的状态即转换

os.fork 创建进程

pid = os.fork()
功能:创建进程
返回值:
×失败:返回一个负数
×成功:在原有进程中返回新进程的PID号,在新进程中返回0

  • 子进程会复制父进程全部内存空间包括代码端
  • 子进程会从fork的下一句开始执行
  • 父进程中fork返回值即为新创建子进程的PID号
  • 父子进程不一定谁先执行,执行上互不干扰抢占时间片
  • 使用if语句结构使父子进程执行不同的代码几乎时fork创建进程的固定结构
  • 在子进程中对变量等其他内容的修改,不会影响父进程中的内容
  • 子进程虽然复制父进程内容,但是也有自己的特有属性特征。比如:PID号,PCB内存区间等

获取进程PID
os.getpid()
功能:获取进程的PID
返回值:返回进程的PID号
os.getppid()
功能:获取父进程的PID
返回值:返回父进程的PID号

进程退出
os._exit(status)
功能:退出一个进程
参数:进程的推出状态 整数

sys.exit([status])
功能:退出一个进程
参数:默认0,如果传入一个整数则同_exit(),传入一个字符串,则在对出时打印该字符串

作业:进程fork理解,熟悉进程理论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值