• 进程、线程的理解


    在理解进程和线程概念之前,首先理解一下并发,如果服务器同一时间内只能服务于一个客户端,其他客户端都再那里傻等的话,可见其性能的低下估计会被客户骂的头破血流,因此并发编程应运而生,并发是网络编程中必须考虑的问题。实现并发的方式有多种:比如多进程、多线程、IO多路复用。
    一、什么是进程?
    进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间;第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时
    (操作系统执行之),它才能成为一个活动的实体,我们称其为进程。
    二、进程状态:
    1)就绪:获取出CPU外的所有资源、只要处理器分配资源就可以马上执行
    2)运行:获得处理器分配的资源,程序开始执行
    3)阻塞:当程序条件不够的时候,需要等待提交满足的时候才能执行。
    进程只能由父进程建立,系统中所有的进程形成一种进程树的层次体系;挂起命令可由进程自己和其他进程发出,但是解除挂起命令只能由其他进程发出。

    三、进程创建的过程:
    1.申请空白PCB。
    2. 为新进程分配资源。
    3.初始化进程控制块。
    4.将新进程插入就绪队列


    四、进程与程序的区别:

    程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。
    程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的。
    进程更能真实地描述并发,而程序不能;
    进程是由进程控制块、程序段、数据段三部分组成;
    进程具有创建其他进程的功能,而程序没有。
    同一程序同时运行于若干个数据集合上,它将属于若干个不同的进程,也就是说同一程序可以对应多个进程。
    在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单元都是进程。

    五、线程
    线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程
    中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。

    六、线程的状态:
    线程也有就绪、阻塞和运行三种基本状态。
    就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;
    运行状态是指线程占有处理机正在运行;
    阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。
    每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。
    线程是程序中一个单一的顺序控制流程。进程内有一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指令运行时的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。

    七、线程的特点:
    1. 轻型实体:基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。
    2.独立调度和分派的基本单位:线程的切换非常迅速且开销小(在同一进程中的)。
    3.可并发执行:多个线程之间可并行执行,充分利用和发挥了处理机与外围设备并行工作的能力。
    4.共享进程资源:由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。

    八、线程与进程的区别可以归纳为以下4点:
    1)地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
    2)通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
    3)调度和切换:线程上下文切换比进程上下文切换要快得多。
    4)在多线程OS中,线程不是一个可执行的实体。

    九、进程与线程之间的关系
    从一定意义上讲,进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,而线程是进程中的一部分,进程包含多个线程在运行。
    在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。
    举例说明:
    进程:北京地铁单位
    线程:北京地铁1号线、2号线、5号线........15号线
    北京地铁单位的所有地铁线路共享着北京坐地铁的所有客源(相当于进程中的资源,所以进程属于资源单位),而各线路负责将客源输送到指定地点(执行操作,所以线程属于执行单
    位)。

    十、如果我们要同时执行多个任务怎么办?
    1)启动多个进程,每个进程虽然只有一个线程,但是多个进程可以一块执行多个任务
    2)启动一个进程,在一个进程内启动多个线程,这样多个线程也可以一块执行多个任务

    多任务:
    1)一边浏览网页、一边听歌、一边看电影;这就是多任务。

  • 相关阅读:
    【web安全】浅谈web安全之XSS
    【css】浅谈BFC
    nodejs笔记一--模块,全局process对象;
    逼真打字机效果;
    深入理解CSS3 animation的steps
    网址链接收藏
    用hoverclock插件实现HTML5时钟
    JS多种方法实现随机颜色;
    canvas实现跟随鼠标旋转的箭头
    封装insertAfter、addClass、格式化时间
  • 原文地址:https://www.cnblogs.com/nlxx/p/9922767.html
Copyright © 2020-2023  润新知