zoukankan      html  css  js  c++  java
  • 鸟妈妈变形记(线程基础)

    鸟妈妈变形记

    • 早期操作系统:早期计算机操作系统,只运行着一个执行线程。同时只能执行一个任务,其他任务等待。还可能出现死循环,机器停止工作。
      • 喂饱一只,再喂另一只:只能同时喂一只小鸟(CPU只有一个执行线程)、其他小鸟等待中,容易出现食物短缺,将其他小鸟饿死
    • 进程:现代计算机操作系统,为每个应用程序分配一个进程,多个进程之间不能互相访问代码或者数据,进程也不能访问OS的内核代码、数据。
      • 用途:解决应用程序之间、应用程序和OS不能互相破坏,各自运行各自的事务;系统更加安全,数据不能互相访问
    • 线程:由于系统可能是多个进程运行,如果某个应用程序发生死循环,CPU不能执行其他任何东西,系统停响应。线程的职责就是对CPU进行虚拟化,每个进程都有自己的线程,保证CPU可以处理多个进程,不会因为某个代码死循环,而影响其他进程。
      • 喂喂这只,喂喂那只:鸟妈妈(cpu)分别喂食(线程)小鸟(进程)的情景,不至于小鸟饿死(因为鸟妈妈不会因为某个小鸟老要吃,而不顾其他小鸟)

      • 线程开销:由于分别分喂3只小鸟,鸟妈妈需要记忆(内存消耗)喂过谁,没喂过谁。每次喂食都需要一定的时间(时间开销)。
      • 上下文切换:鸟妈妈喂食时,需要在3只小鸟之间进行切换,轮着喂。以此带来3只小鸟同时都可以吃到食物的良好体验。(windows大概30毫秒执行一次上下文切换)

     

    • 如何查看系统中的线程数:
      • windows默认为每个线程的“用户模式栈”分配1MB内存。(保留1MB空间,实际需要时才会提交物理内存)

    3220个线程,意味着仅仅线程栈就需要分配3220MB(3个多G内存)。

    • CPU利用率:上图CPU忙的时间是11%,意味着在81%的时间里,这3220个线程什么事情都没做(它们白白占用着内存,但这些内存是不会使用的)

     

    • 查看某个进程的CPU利用率和线程数

  • 相关阅读:
    linux下虚拟机virtualbox USB设备设置
    位带操作
    带通滤波器
    滞回比较器
    warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead.
    汇编指令速查
    Win32汇编基础1
    第一个win32汇编程序开发步骤
    使用BIOS进行键盘输入和磁盘读写(学习汇编)
    直接定址表(学习汇编)
  • 原文地址:https://www.cnblogs.com/gougou1981/p/10335571.html
Copyright © 2011-2022 走看看