操作系统的作用:
1、隐藏硬件接口
2、调度进程对资源的竞争
多道技术:针对单核,实现并发
空间上的复用、时间上的复用
遇到io切,占用cpu时间过长也切
进程是操作系统动态执行的基本单元
进程包括:
文本区域:存储处理器执行的代码
数据区域:存储变量和进程执行期间使用的动态分配的内存
堆栈:存储着活动过程调用的指令和本地变量
进程调度:
先来先服务算法
端作业优先算法
时间片轮转法
多级反馈队列(按时间片次数下移)
并行:同时执行(多核)
并发:交替使用资源
进程三种状态:就绪、运行、阻塞
会让进程进入阻塞状态的事件请求:io, sleep, 文件的输入输出, 网络请求
同步:需要一直等着
异步:可以先去做别的
from multiprocessing import Process
import os
def func(args):
print(args)
print('这是子进程')
print('子进程ID:',os.getpid())
if __name__ == '__main__': # 只有windows需要
p = Process(target=func,args=(12345,)) # 注册 # 参数一个数必须加逗号(元组)
p.start() # p是一个进程对象,现在启动 # 启动子进程
print('哈哈哈') # join和子进程之间的代码和子进程仍然是异步的
p.join() # 感知一个子进程的结束,把异步改为同步
print('这是主进程') # 和上面的子进程是异步的
print('父进程ID:',os.getpid())
print('父进程的父进程:',os.getppid()) # pycharm的进程ID
p_lst = []
for i in range(10):
p1 = Process(target=func,args=(i*'*',))
p_lst.append(p1)
p1.start()
[p1.join() for p1 in p_lst] # 前面异步,最后变成同步
# 等于 for p1 in p_lst: p1.join()
print('运行完了')