zoukankan      html  css  js  c++  java
  • 3.进程

    进程通常被定义为一个正在运行的程序的实例.它由两个部分组成:
    一个是操作系统用来管理进程的内核对象.内核对象也是系统用来存放关于进程的统计信息的地方.
    另一个是地址空间,它包含所有可执行模块或DLL模块的代码和数据.也包含动态内存分配的空间,如线程堆栈和堆分配的空间.

    进程是不活泼的.也就是说,进程是没有执行能力的,它仅仅是代码和数据的集合.它必须拥有一个在它环境中运行的线程,并由这个线程负责执行包含在进程地址空间内的代码.


    单个进程可以包含多个线程.每个线程都有自己的一组CPU寄存器和它自己的堆栈.每个进程至少拥有一个线程,如果进程一个线程都没有,也就失去了存在的意义,系统就会自动撤销该进程和它的地址空间.

    在Windows下,创建进程是需要开销大量的资源,但是创建线程几乎不需要资源,所以在Windows下更推荐使用单进程下的多线程.在Unix则推荐使用多进程.

    Windows下是通过快速的切换线程,采取循环(有优先级)的方式给不同的线程提供一定的时间片,来运行代码.当这个切换速度足够快时,就造成了多个同时运行的假象.

    创建进程时,系统会自动为它创建一个线程,这个线程就被称为主线程.和界面有关的工作,一般都交给主线程去做,不论是通过事件,消息还是别的方式进行通讯.其他的线程负责与界面无关的计算,处理等,也被叫做Work Thread.

    进程中的内存对属于该进程的所有线程都是可用的.每个进程都有一个标识,可以通过调用GetCurrentProcessID函数来获取.这个进程标识在整个系统内是唯一的.

    其他的内容,感觉和要说的目的无关,就不多说了.其他的一些细节,后面或许会说.

    欲知后事如何,且听下回分解.

  • 相关阅读:
    LeetCode: Longest Valid Parentheses 解题报告
    LeetCode: Generate Parentheses 解题报告
    Leetcode: LRU Cache 解题报告
    LeetCode: Maximal Rectangle 解题报告
    LeetCode: Min Stack 解题报告
    LeetCode: Restore IP Addresses 解题报告
    LeetCode: Longest Common Prefix 解题报告
    LeetCode: Regular Expression Matching 解题报告
    Python——rrdtool模块的安装
    python-xlsxwriter模块绘制表格
  • 原文地址:https://www.cnblogs.com/solokey/p/2126609.html
Copyright © 2011-2022 走看看