• 进程之基础


    1.并行/并发

    计算机操作系统定义:

    并行性是指两个或多个事件在同一时刻发生;
    并发性是指两个或多个事件在同一时间段内发生。

    计算机组成原理定义:
    并行性包含同时性和并发性,前者是指两个或多个事件在同一时刻发生;
    后者是指两个或多个事件在同一时间段内发生。

    并行(Parallel):当系统有一个以上CPU(多核),则线程的操作有可能非并发.当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行

    并发(Concurrent):当有多个线程在操作时,如果系统只有一个CPU(单核),则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状态

    打个比方:

    并行:2个人喂2个孩子,两个孩子也同时在吃饭。
    并发:1个人(cpu)喂2个孩子(程序),轮换着每人喂一口,表面上两个孩子都在吃饭。

    2.线程/进程

    2.1进程(Process):具有一定独立功能的程序关于某个数据集合上的一次运行活动

    2.2线程(Thread):系统(CPU)进行资源分配和调度的一个独立单位

    一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。 线程与进程的一个主要区别是,同一进程内的多个线程会共享部分状态, 多个线程可以读写同一块内存(一个进程无法直接访问另一进程的内存)。同时, 每个线程还拥有自己的寄存器和栈,其它线程可以读写这些栈内存。

    联系:不支持线程机制,进程的系统调度的单位;否则,线程是系统调度的单位

    不同:

    • 定义方面:进程是程序在某个数据集合上的一次运行活动;线程是进程中的一个执行路径
    • 角色方面:在支持线程机制的系统中,进程是系统资源分配的单位,线程是系统调度的单位。
    • 资源共享方面:进程之间不能共享资源(拥有各自独立堆空间和栈空间),而线程共享所在进程的地址空间(堆空间)和其它资源。同时线程还有自己的栈和栈指针,程序计数器等寄存器(堆空间共享,栈空间独立)
    • 独立性方面:进程有自己独立的地址空间,而线程没有,线程必须依赖于进程而存在。

    2.3线程调度:

    计算机通常只有一个CPU时候,在任意时刻只能执行一条计算机指令,每一个进程只有获得CPU的使用权才能执行指令。

    所谓多线程并发运行,从宏观上看,其实是各个进程轮流获得CPU的使用权,分别执行各自的任务,

    那么在可运行池中会有多个线程处于就绪状态等到CPU,JVM就负责线程的调度

    JVM采用的是抢占式调度,没有采用分时调度,因此可以能造成多线程执行结果的随机性。

    java程序的进程(java的一个程序运行在系统中)至少包含主线程(main)和垃圾回收线程(gc后台线程)。

    3.创建进程

        public static void main(String[] args) {
            Runtime runtime = Runtime.getRuntime();
            try {
                runtime.exec("notepad");//只能是系统进程.exe的名字,win+r+dropbox(因为环境变量指定了文件夹 dropbox.lnk)的不行的
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
  • 相关阅读:
    Mirco2440核心板设计思考
    linux 第一次获得root权限
    MakeFile 文件详解
    windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号
    linux信息查找
    ubuntu不能正常使用make menuconfig的解决方案
    Linux 解压/压缩操作命令
    Linux 文件/文件夹操作命令
    Linux内核开发基础
    计算文件夹的大小
  • 原文地址:https://www.cnblogs.com/manusas/p/6699080.html
Copyright © 2020-2023  润新知