C#进程、线程、CPU
===============================================C#线程===========================================================================
基本知识:
线程和进程
1.在创建进程时,内核会为进程创建相应的堆栈,每个进程会有两个栈,一个是用户栈,另外一个则是内核栈
2.一个进程中,包含多个线程
3.当你打开一个程序很慢,这是因为此时的CPU运行的进程数太多,该进程需要等待调度,才能真正运行
4. 一般来说,打开一个应用程序就会创建一个进程
5. 一个进程的内存空间是可以共享的,每个线程都可以使用这些共享内存
6. 一个线程在占用某些共享内存时,其他的线程就不能进来,必须要等前一个线程走完才能够使用共享内存,这个时候就需要加一把互斥锁(mutex),告诉其他线程这块共享内存已被占用!防止多线程读写通一块共享内存
7.有些内存区域,只能供给固定的线程使用,这里就会牵扯一个词叫信号量(semaphore)数量,即这个内存区域只能供给固定数目的线程访问,满了线程后,后面的线程只能排队,直到有线程让出,后面的线程才能进入,保证多个线程不会冲突
=============================操作系统的设计======================================================
1. 以多进程形式,允许多个任务同时运行
2. 以多线程的方式,把进程分为不同的部分进行
3. 协调机制:防止进程与线程之间产生的冲突,运行进程之间内存共享
===============================CPU================================================================
1.计算机的核心是CPU,它负责所有的计算任务,时刻在运行
2.单个CPU一次只能运行一个任务
内核:提供操作系统最基本的功能,负责管理系统的进程、线程、设备驱动程序、文件和网络系统
Cpu寄存器: 是Cpu用来存储数据的小型存储区域
用户模式栈:在函数执行执行之前记录函数的地址,然后等函数调用完之后,再返回前面所记录的地址
内核模式栈:在调试的时候 不能修改代码的原因是 用户模式栈不能访问内核模式栈 ,在执行之前代码都被送去内核了