进程

8.8内容整理和概述

今日内容概要

内容目录

  • socket套接字
  • 操作系统的发展史
  • 多道技术
  • 进程

socket套接字

基于文件类型的套接字家族:
	套接字家族的名字:AF_UNIX
基于网络类型的套接字家族:
	套接字家族的名字:AF_INET

方法:
	1.socket():创建一个socket对象
		参数:
        	1.type:默认为socket.SOCK_STREAM(TCP协议),socket.SOCK_DGRAM为UDP协议
	2.bind((访问地址,端口号)):绑定一个固定的地址(ip\port)
	3.listen(个数):半连接池
	4.accept():开始工作,会返回双向通道,客户端地址
	5.send(数据):朝客户端发送数据
	6.recv(接收的数据最大字节数):接收客户端发送的数据
	7.sock.close():断链接
	8.socket对象.close():关机
	9.connect((访问地址,端口号)):连接服务端(拼接服务端的ip和port)
	10..recvfrom(接收的数据最大字节数):接收客户端发送的数据,返回数据,以及服务端的ip和port(元组)
	11.sendto(数据,地址):朝客户端发送数据

TCP协议:
    注意:
        1.服务端频繁重启可能会报端口被占用的错(主要针对mac电脑)
            from socket import SOL_SOCKET,SO_REUSEADDR
            server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #就是它,在bind前加
        2.客户端异常退出会发送空消息(针对mac linux)
            针对接收的消息加判断处理即可

UDP协议:
	1.服务端不需要考虑客户端是否异常退出
	2.UDP不存在黏包问题(UDP多用于短消息的交互)

操作系统的发展史

1.穿孔卡片
	CPU利用率非常的低,一人一卡一机模式
2.联机批处理系统
	多人卡合在一起录入,提升CPU利用率
3.脱机批处理系统
	远程利用CPU,是现代计算机的雏形,提升CPU利用率
总结:
	操作系统的发展史也可以看成是CPU利用率提升的发展史

多道技术

前提:一个单核CPU
单道技术:所有的程序排队执行,总耗时是所有程序耗时之和
多道技术:
	概述:计算机利用空闲时间提前准备好一些数据,提高效率,总耗时较短
	概括:切换+保存状态
		切换:CPU在两种情况下会切换(去执行其他程序)
			1.程序自身进入IO操作
			2.程序长时间占用CPU
		保存:每次切换之前要记录下当前执行的状态,之后切回来基于当前状态继续执行

IO操作:
	1.输入输出操作
	2.获取用户输入
	3.time.sleep()
	4.读取,保存文件

进程

程序:一堆躺在文件上的死代码
进程:正在被运行的程序(活的)

进程调度算法演变:
	1.先来先服务算法:
		谁先来先调谁,针对耗时比较短的程序不友好
	2.短作业优先调度:
    	先调短的程序,针对耗时比较长的程序不友好
	3.时间片轮转法+多级反馈队列
		1.先平分时间给所有进程
		2.多次分配后,进程持续越长分配的时间额度越多,优先级越低
        
并行:多个进程同时执行(等单位的CPU)
并发:单cpu做到类似多个进程同时执行的效果

进程的三状态:(就绪,阻塞,运行)
	1.所有的进程要想被运行,必须先经过就绪态
	2.运行过程中如果出现了IO操作,则进入阻塞态
	3.运行过程中如果时间片用完,则继续进入就绪态
	4.阻塞态要想进入运行态必须先经过就绪态

"进程的提交状态"  
同步:提交完任务之后原地等待任务的结果,期间不做任何事
异步:提交完任务之后不原地等待直接去做其他事,结果自动提醒

"进程的执行状态"
阻塞:阻塞态
非阻塞:就绪态 运行态

同步阻塞
同步非阻塞
异步阻塞
异步非阻塞
posted @ 2022-08-08 22:26  维生素Z  阅读(5)  评论(0)    收藏  举报