摘要:
同步异步阻塞和非阻塞 一、状态介绍 [ 在了解其他概念之前,我们首先要了解进程的几个状态。在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞。 1. 就绪(Ready)状态:当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为 阅读全文
摘要:
进程的并行和并发 一、进程的并行和并发 并行: 并行是指两者同时执行,比如赛跑,两个人都在不停的往前跑;(资源够用,比如三个线程,四核的CPU ) 并发: 并发是指资源有限的情况下,两者交替轮流使用资源,比如一段路(单核CPU资源)同时只能过一个人,A走一段后,让给B,B用完继续给A ,交替使用,目 阅读全文
摘要:
进程调度 要想多个进程交替运行,操作系统必须对这些进程进行调度,这个调度也不是随即进行的,而是需要遵循一定的法则,由此就有了进程的调度算法。 一、先来先服务调度算法 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。FCFS算法比较有利于长作业(进程), 阅读全文
摘要:
进程基础 [TOC] 一、操作系统背景知识 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须事先了解操 阅读全文
摘要:
操作系统的发展史 一、手工操作———穿孔卡片 1946年第一台计算机诞生 20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。 " " " " 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序 阅读全文
摘要:
基于socketserver实现并发的socket编程 一、基于TCP协议 基于tcp的套接字,关键就是两个循环,一个链接循环,一个通信循环 socketserver模块中分两大类:server类(解决链接问题)和request类(解决通信问题) 1.1server类 [ 1.2 request类 阅读全文
摘要:
基于UDP协议的socket套接字编程 一、UDP套接字简单示例 1.1 服务器 1.2 客户端 UDP是无链接的,先启动哪一端都不会报错 UDP协议是数据报协议,发空的时候也会自带报头,因此客户端输入空,服务端也能收到 1.3 通信循环 服务端 客户端 二、UDP套接字无粘包问题 2.1服务器 b 阅读全文
摘要:
解决粘包问题 一、解决粘包问题方式一 问题的根源在于,接收端不知道发送端将要传送的字节流的长度,所以解决粘包的方法就是围绕,如何让发送端在发送数据前,把自己将要发送的字节流总大小让接收端知晓,然后接收端来一个死循环接收完所有数据。 1.1 服务器 1.2 客户端 缺点: 程序的运行速度远快于网络传输 阅读全文
摘要:
粘包问题 [TOC] 一、什么是粘包 注意: 只有TCP有粘包现象,UDP永远不会粘包, 为何,且听我娓娓道来。 首先需要掌握一个socket收发消息的原理 [ 发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据 阅读全文
摘要:
模拟ssh远程执行命令 一、服务器 二、客户端 输入 命令,由于服务端发送字节少于1024字节,客户端可以接受。 输入 命令,由于服务端发送字节多于1024字节,客户端只接受部分数据,并且当你再次输入 命令的时候,客户端会接收 命令的结果,但是会打印上一次的剩余未发送完的数据, 这就是粘包问题。 阅读全文