014 进程线程总结

014 进程线程总结

 

Windows 进程及线程

  ● 进程的组成
    ○ 进程是“惰性”的,进程要做的任何事情,都必须让线程来运行,线程执行进程地址空间中包含的代码

      ◌ 进程本身无法运行任何东西

      ◌ 进程划定一个区域,存在一些代码,这些代码都是静态存在的


    ○ 一个进程可以拥有多个线程,所有的线程都能够在进程的地址弓箭中“同时”运行代码,每个线程都有他自己的一组CPU寄存器以及自己的堆栈。

      ◌ 一个进程最少可以有一个线程

      ◌ 如果一个进程里面没有线程会被销毁


    ○ 每个进程必须有一个线程,当系统创建一个进程时,会自动创建一个线程。这个线程我们称为主线程。如果没有线程要执行进程地址空间中的代码,进程就失去了存在的意义,此时系统会自动销毁进程以及它的地址空间

      ◌ 线程执行CPU的代码

       ◌ Windows是一个支持多进程技术的操作系统 


    ○ 操作系统会以轮询的方式为每一个线程分配CPU时间片,从营造出“并行”的假象。

    ○ 如果计算机拥有多个CPU,操作系统会更复杂的方式为线程分配CPU时间。



  ● 内核对象
    ○ 操作系统用来管理进程


  ● 地址空间
    ○ 包含了可执行文件及DLL模块的代码和数据


应用程序类型

  ● 控制台用户界面
    ○ 控制台程序则是基于文本的它们一般不会创建窗口或进程消息,而且不需要GUI

      ◌ 通过文本交互的程序都叫做CUI

      ◌ 基于文本操作的叫做CUI

      ◌ 并不是说CMD执行的程序就叫做CUI

  ● 图形用户界面
    ○ GUI程序一个图形化的前端,它可以创建窗口,可以拥有菜单,能通过对话框与用户交互,还能使用所有标砖 “视窗化” 的东西 Windows 的几乎所有附件应用程序都是GUI程序

  ● 区别

    ○ 1.在 VS中,CUI程序的链接器开关位 /SUBSYSTEM:CONSOLE,GUI程序的链接器开关位 /SUBSYSTEM:WINDOWS.在加载时,会获取此值,如果是一个文本控制台窗口,操作系统会使用命令提示符启动这个程序,否则它只是加载这个,由应用程序来管理自己的窗口
    ○ 2.入口函数不同

    ○ 启动函数不同,GUI的启动函数位 WinMainCRTStartup或wWinMainCRtatup,CUI的启动函数为mainCRTStartup或wmainCStartup

      ◌ 命令提示符是一个软件,完全独立软件

      ◌ 我们开发的程序是另外一个软件,如果里面设置了命令行,或者控制台,用户界面属性

  ● UAC 权限控制设置

    ○ 可以选择设置权限提示

    ○ 或者关闭权限提示的功能

原文地址:https://www.cnblogs.com/sdk123/p/6977704.html