进程 并发 线程 032

一 计算机操作原理简介:

  硬盘 永久存储数据的

  内存 暂存数据

  cpu  运算 三者之间关系如下图

二 并发 : 提高程序的工作效率(伪并行)

    并行 :  3个cpu同时运行 3个程序

三 进程的创建

  打开设备上安装的程序使其进入运行状态即创建了一个进程

  与程序的区别 :

      1 .程序是指令和数据的有序集合,其本身没有任何运行的含义 , 是一个静态的概念. 而进程是程序在处理机上的一次执行过程,它是一个动态的概念

      2 .程序可以作为一种软件资料长期存在 , 而进程有一定盛名周期

      3 .程序是永久的,进程是暂时的

      例如qq 不运行 就是程序 运行起来 就成为一个进程了.

          

  

  

四  进程调度

     想要多个进程交替运行 操作系统必须对这些进程进行调度 而这个调度也不是随机进行的 是需要遵循一定的法则 因此就有了进程的调度算法

    先来先服务  调度算法最简单的调度算法 既可用于作业调度 也可用于进程调度 该算法有利于长作业(进程) 不利于短作业(进程) 适合于cpu繁忙性作业 不适合i/o繁忙性作业(进程)

    短作业优先调度 对短作业(进程)优先调度,对长作业不利 不能保证紧迫性作业(进程)被及时处理 长短只是被估出来的

    时间片轮转  :

    多级反馈队列

五 并发与并行

    通过进程之间的调度 即进程之间的切换 我们感知到好像是两个视频文件同时在播放 或者音乐和游戏同时在进行 其实无论是并行还是并发 在用户看来都是‘同时‘运行的 不管是进程还是线程 都只是一个任务而已 真正干活的是cpu来做这些任务

    并发 : 伪并行 , 即看起来是同时运行 单个cpu + 多道技术就可以实现并发(并行也属于并发)

    并行 : 同时运行 只有具备多个cpu才能实现并行 将cpu比作高速上的多个同向车道 进程好比是行驶的车辆 大家在自己的车道上行驶 互不影响 同时开车 这就是并行

    单核下 可以利用多道技术 多个核 每个核也都可以利用多道技术(针对单核而言的)

    例如 有四个核 六个任务 ,这样同一时间有4个任务被执行 一旦某个核遇到i/o就被迫中断执行 此时任务5就会拿该核的cpu时间片去执行 这就是单核的多道技术 而一旦被迫中断的任务的i/o结束了 操作系统就会重新调用它 可能被分配到四个cpu的任意一个去执行 保证cpu一直在工作.

六 同步\异步\阻塞\非阻塞(重点)

  1 .进程状态介绍

    在程序进行运行过程中 由于被操作系统的调度算法控制 程序会进入几个状态 :就绪 运行和阻塞.

    就绪状态  当进程已分配到除cpu以外所有必要的资源 只要获得处理机便可立即执行 这时的进程状态称为就绪状态.

    执行/运行状态 进程获得处理机 正在处理机上进行 此时的状态称为执行状态

    阻塞状态 状态正在执行的进程 由于等待某个事件发生而无法执行时 便放弃处理机而处于阻塞状态 引起阻塞的事件可以有多种 例如 等待i/o完成 申请缓冲区不能满足.等待信件(信号)等

    事件请求 : input  sleep  文件输入输出 recv accept 等

    事件发生 :sleep input 等完成了

    时间片到了之后又回到就绪状态 这三个状态不断地在转换

  2 .同步异步

    同步就是 一个任务的完成需要依赖另一个任务时 , 只有等待被依赖的任务完成以后 依赖的任务才能算完成 这是一种可靠的任务序列 要成功都成功 失败都失败 其实就是一个程序结束才执行另外一个程序 串行的,不一定两个程序就有依赖关系.

    异步就是不需要等待被依赖的任务完成 只是通知被依赖的任务要完成什么工作 依赖的任务也立即执行 ,只要自己完成了整个任务就算完成了 至于被依赖的任务是否真正完成 依赖它的任务无法确定 所以它是不可靠的任务序列.

  3 .阻塞和非阻塞

    与程序(线程)等待消息通知时的状态有关 即是由程序(线程)等待消息通知时的状态角度来说的

  4 .同步/异步 与阻塞/非阻塞

    1 .同步阻塞

    2 .异步阻塞

    3 .同步非阻塞

    4 .异步非阻塞

七 multiprocess 模块

  仔细说来 multiprocess 不是一个模块而是Python中的一个包 ,管理进程的包.

  1 .process 模块介绍  该模块是一个创建进程的模块 借助它可以完成进程的创建

  

原文地址:https://www.cnblogs.com/f-g-f/p/9831567.html

时间: 2024-08-01 16:40:43

进程 并发 线程 032的相关文章

走近并发编程之一 进程和线程

并发与并行,进程与线程不仅是操作系统中及其重要的概念,也是并发编程入门 必须要理解的核心知识. 什么是并发?并发与并行的区别 顺序编程:程序中的所有事物在任意时刻都只能执行一个步骤 并发:在同一时间段内,需要处理多个任务,而在每个时间点又只能处理一个,这就是并发. 假设我们要把多个任务分配给处理机,如果这台机器有多个处理器,显然可以同时执行这些任务,这就是并行. 不同于并行,并发的目的旨在最大限度的提高程序在单处理器上的效率.前者是在物理上的同时发生,而并发是在逻辑上的同时发生.如图,如果要在同

Java并发编程:进程和线程

.title { text-align: center } .todo { font-family: monospace; color: red } .done { color: green } .tag { background-color: #eee; font-family: monospace; padding: 2px; font-size: 80%; font-weight: normal } .timestamp { color: #bebebe } .timestamp-kwd

进程、线程的并发

进程.线程的并发 本文是自己学习经验总结,有不正确的地方,请批评指正. 总结一下这一段时间来,有关网络编程的学习.我是从csapp的最后章节的Tiny HTTP服务器开始,以它为基础,改用不同的方式实现并发,包括进程.线程.线程池.I/O多路复用.所有代码见地址:https://github.com/xibaohe/tiny_server 一.基于进程.线程的并发 关于进程和线程的网络编程模型,在UNP卷1的第30章,有详细的介绍.我这里,在Tiny基础上,实现了以下几种: tiny_proce

11.python并发入门(part1 初识进程与线程,并发,并行,同步,异步)

一.什么是进程? 在说什么是进程之前,需要先插入一个进程切换的概念! 进程,可以理解为一个正在运行的程序. 现在考虑一个场景,假如有两个程序A和B,程序A在执行到一半的过程中,需要读取大量的数据输入(I/O操作),而此时CPU只能静静地等待任务A读取完数据才能继续执行,这样就白白浪费了CPU资源.你是不是已经想到在程序A读取数据的过程中,让程序B去执行,当程序A读取完数据之后,让程序B暂停.这当然没问题,但这里有一个关键词:切换. 既然是切换,那么这就涉及到了状态的保存,状态的恢复,加上程序A与

Java并发编程--进程与线程

进程:百度百科说"进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.",维基百科说"是计算机中已运行程序的实体.进程本身不会运行,是线程的容器." 线程:百度百科说"线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元",维基百科说"是操作系统能够进行运算调度的最小单位.它被包涵在进程之中,是进程中的实际运作单位

服务器线程并发和进程并发

进程和线程的使用在前面博文已经讲述完毕,在完成一个最简单的服务器之后,就是要考虑下如何实现并发服务器了. 要实现服务的并发,只能通过进程和线程两种方式. 之前提到过listen_fd和connect_fd,listen用于监听是否有客户端连接,维护两个fd队列,没完成握手的和完成就绪的. connect从就绪队列取描述符,这个connect_fd描述符将用于数据通信,所以要实现并发,就是将connect_fd分发到线程或进程上,由他们去独立完成通信. 在实际并发服务器应用场合,在IO层大多通过两

进程与线程、并行与并发的理解

进程与线程 1.定义 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 2.关系 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行. 相对进程而言,线程是一个更加接近于执

(并发编程)进程池线程池--提交任务的2种方式、协程--yield greenlet,gevent模块

一:进程池与线程池(同步,异步+回调函数)先造个池子,然后放任务为什么要用"池":池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务池子内什么时候装进程:并发的任务属于计算密集型池子内什么时候装线程:并发的任务属于IO密集型 #提交任务的两种方式:    # 同步调用:提交完一个任务之后,就在原地等待,等待任务完完整整地运行完毕拿到结果后,再执行下一行代码,会导致任务是串行执行的    # 异步调用:提交完一个任务之后,不在原地等待,结果???,而是

并发服务器三种实现方式之进程、线程和select

前言:刚开始学网络编程,都会先写一个客户端和服务端,不知道你们有没有试一下:再打开一下客户端,是连不上服务端的.还有一个问题不知道你们发现没:有时启服务器,会提示“Address already in use”,过一会就好了,想过为啥么?在这篇博客会解释这个问题. 但现实的服务器都会连很多客户端的,像阿里服务器等,所以这篇主要介绍如何实现并发服务器,主要通过三种方式:进程.线程和select函数来分别实现. 一.进程实现并发服务器 先说下什么是并发服务器吧?不是指有多个服务器同时运行,而是可以同