进程

1. TCP半连接池原理

    什么情况下会进入半连接池  来不及处理accept  或者客户端单方面终止连接

2.UDP 通讯

    写代码的区别  对比TCP

       没有listen

       没有accept

       发送使用sendto 需要指定接收方的地址

       recvfrom 缓冲区大小最大建议512  需要和发送方一致

3.UDP聊天  input会阻塞 导致recv无法立即获取数据

4.TCP 和 UDP通讯的流程

    需要先绑定端口

    TCP 从操作系统缓存取出数据 发送给服务器 必须接收到服务器返回的确认包

        更加安全

    UDP 从操作系统缓存取出数据 发送给服务器 不需要确认  数据可能丢失

        更加高效

5.什么是进程

    一个正在运行的程序称之为进程

        是一种抽象概念 表示一个执行某件事情的过程

    进程的概念 起源于操作系统

    第一代计算机  程序是固定 无法修改 某种计算机只能干某种活

    第二代批处理系统 需要人工参与  将程序攒成一批 统一执行

        串行执行 提高计算机的的利用率  但是调试麻烦

    第三代计算机 为了更好利用计算机资源,产生了

    多道技术:  ******

      1.空间复用

        内存分割为多个区域 每个区域存储不同的应用程序

      2.时间的复用

        1.当一个程序遇到了I/O操作时 会切换到其他程序 (切换前需要保存当前运行状态 以便恢复执行)

            提高效率

        2.当你的应用程序执行时间过长 操作系统会强行切走 以保证其他程序也能正常运行 当然因为cpu速度贼快 用户感觉不到

            降低效率

        3.有一个优先级更高的任务需要处理 此时也会切走

            降低了效率

        我们编写程序时 只能尽量减少I/O操作

    总的来说 有了多道技术之后 操作系统可以同时运行多个程序吧 这种情形称之为并发

    但是本质好 这些程序还是一个一个排队执行

    并发

        在同一个时间段内 发生的多个事情

    并行

        在同一时刻 同时进行多个事情

    串行

        许多任务排队执行

        第一个任务没执行完   第二个只能等待

        此时不叫阻塞 因为CPU执行权还在手里 依然在执行你的代码

        第一个任务做不下去 i/o操作 此时就是阻塞 因为cpu被分配给其他进程

        总结一下:只要还拥有cpu的执行权 就不叫阻塞

    非阻塞

    同步 和 异步

      

  思考:多核处理器 能不能真正的并行?

        可以 每个核可以单独负责一个任务  这些任务可以同时进行

6. Python如何使用多进程

    1.直接创建Process对象 同时传入要做的事情就是一个函数

    2.创建一个类 继承自Process 把要做的任务放在run方法中

7.  父进程与子进程间的执行顺序(写代码运行)

8.  进程和程序的区别

     程序是什么?

       本质就是一堆代码文件!

     一个程序正在被操作系统读取并执行 就变成了进程

    一个程序只能有一个进程吗?

      可以 启动一次就产生一个进程  当然可以用代码控制是否允许多进程

 启动进程的方式?

    1.系统初始化 会产生一个根进程

    2.用户的交互请求 鼠标双击某个程序

    3.在一个进程中 发起了系统调用启动了另一个进程 ******

    4.批处理作业开始 某些专用计算机可能还在使用

不同操作系统创建进程的方式不同

    unix <   centos mac  linux

        完全拷贝父进程的所有数据 子进程可以访问父进程的数据吗?不可以 但是可以访问拷贝过来数据副本

    windows

        创建子进程 加载父进程中所有可执行的文件

9. 常用的属性

  start 开启进程

  join 父进程等待子进程

  name 进程名称

  is_alive是否存活

  terminate 终止进程

   pid 获取进程id

原文地址:https://www.cnblogs.com/zhouhai007/p/9925150.html