标签:操作系统 存储 遇到 临时 睡眠 共享 时间片 ima inf
在一个CPU(一核)的电脑上,
程序的运行是并发运行的,调度的算法叫时间片轮转法,也叫轮询法
在多CPU(多核)的电脑上,一个CPU跑一个程序,刚程序运行数量小于核心数时,程序是并行的
并发:看上去一起执行,同时在发生
并行:真正的一起执行,同时在进行
进程的概念:
计算机程序是存储在磁盘上的可执行二进制(或者其他类型)文件
只有当他们被加载到内存中,并被操作系统调用的时候,他们才会拥有自己的生命周期
进程则表示一个正在执行的程序
每个程序都拥有自己的地址空间,内存,数据栈以及其他用于跟踪执行的辅助资料
操作系统负责其上的所有进程的执行
操作系统会为这些进程合理的分配执行时间
线程的概念:
线程被称作轻量级进程
与进程类似,不过他们是在不同的进程下执行的。并且他们会共享相同的上下文
当其他线程执行时,他可以被抢占(中断),和临时挂起(睡眠)---------让步
线程的轮询调度机制类似于进程的轮询调度。只不过这个调度不是由操作系统来负责的,而是由python解释器来负责
CPU,进程,线程之间的调度关系
CPU——>进程——>线程
利用进程和线程,实现并发服务器
线程:(GIL全局解释器锁:遇到阻塞就切换)
from socket import * import threading server = socket() server.bind((‘‘, 9999)) server.listen(1000) def func(conn): while True: recv_date = conn.recv(1024) if recv_date: print(recv_date.decode(‘utf8‘)) conn.send(recv_date) else: conn.close() break while True: conn, addr = server.accept() w = threading.Thread(target=func, args=(conn, )) # 开启一个子线程 w.start()
进程:
import multiprocessing from socket import * server = socket() server.bind((‘‘, 9999)) server.listen(10) def func(conn): while True: recv_date = conn.recv(1024) if recv_date: print(recv_date.decode(‘utf8‘)) conn.send(recv_date) else: conn.close() break while True: conn, addr = server.accept() w = multiprocessing.Process(target=func, args=(conn, )) # 开启一个子线程 w.start()
标签:操作系统 存储 遇到 临时 睡眠 共享 时间片 ima inf
原文地址:https://www.cnblogs.com/pywjh/p/9475136.html