zoukankan      html  css  js  c++  java
  • 并发编程-前提了解

    一.程序和进程的区别

    1.程序

    一堆静态的代码文件

    2.进程

    一个正在运行的程序进程,抽象的概念(起源于操作系统)

    3.进程被谁运行

    由操作系统操控调用,交予CPU运行

     

    二.操作系统

    操作系统在计算机中的位置

    1.什么是操作系统

    操作系统就是一个协调、管理和控制计算机硬件和软件资源的控制程序。

    2.操作系统的作用

    1.将一些对计算机硬件的复杂丑陋的操作变成简单美丽的接口

    2.将多个进程对CPU资源的抢占变得合理有序。

    3.多道技术

    多道技术中的多道指的是多个程序。多道技术的产生背景是为了解决多个程序竞争同一个资源(比如CPU)的有序调度问题,解决方式即多路复用(1.时间上的复用 2.空间上的复用)

    1.空间上的复用

    将内存中分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序。(内存隔离)

    2.时间上的复用

    实现CPU在多个进程之间来回切换,并且保留状态。

    提升效率,最大限度使用CPU

    如果是一个IO密集型进程,来回切换提升效率(在IO阻塞时自动切换)

    如果是一个计算密集型,来回切换降低效率

    三.进程的理论

    1
    2
    3
    4
    5
    6
    7
    8
    9
    1.串行:所有任务一个一个完成
    2.并发:一个cpu完成多个人为,看起来像是同时完成
    3.并行:多个cpu执行多个任务,真正的同时完成
    4.阻塞:cpu遇到io就是阻塞
    5.非阻塞:没有io,就叫非阻塞
    6.进程创建:一个子进程必须依赖于一个主进程才能开启
        unix:fork一个子进程会完全复制一个主进程的所有资源,初始资源不变
        windows:操作系统调用CreateProcess创建进程。创建一个子进程,会复制主进程所有的资源,但是会改变一些资源
    7.cpu:cpu是用来做计算,cpu是无法执行IO操作的,一旦遇到io操作,应该让cpu去执行别的任务

      

    进程的状态

    程序遇到IO操作(Input、output),会阻塞,IO完成会进入就绪状态,此时等待cpu执行。正在执行的程序时间片完(cpu切到其他程序执行),会进入就绪状态。

     

     四.并发与并行

    无论是并发还是并行,在用户看来都是"同时"运行的,不管是进程还是线程,都只是一个任务而已,真正干活的是cpu,cpu来做这些任务,而一个cpu同一时刻只能执行一个任务

    1.并发

    伪并行,即看起来是同时运行。单个cpu+多道技术就可以实现并发

    2.并行

    同时运行,只有具备多个cpu才能实现并行

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

  • 相关阅读:
    五大常用算法之二:动态规划算法
    五大常用算法之一:分治算法
    c++控制台程序实现定时器
    Oracle sqlplus设置显示格式命令详解
    存储的基本概念谈
    类UNIX操作系统概念
    从源代码到可执行文件
    SQL更改表字段为自增标识
    enum和int、string的转换操作
    SEO技巧汇集
  • 原文地址:https://www.cnblogs.com/luckinlee/p/11620897.html
Copyright © 2011-2022 走看看