引入
- 之前有一篇文章我写了为什么要引入虚拟内存,它可以维护内存的安全。之后,为了进一步保证系统和内存安全,操作系统又把虚拟地址划分为内核空间和用户空间,内核空间主要由操作系统控制,用户不可直接访问。
- 内核空间保存了像进程控制信息PCB这样有关进程的信息。而线程就是进程的执行体,它需要一个执行入口,通常会是某个函数的指令入口,这样的信息保存在用户空间。
执行
- 在创建进程时,操作系统会分别在内核空间和用户空间分配两段栈,即内核栈和用户栈,用来存储线程执行时需要保存的数据。
- 执行程序前,IP指向执行入口,esp指向栈指针,ebp指向栈基。这样看来,程序执行时,CPU面向的是线程,所以说线程是操作系统调度和执行的基本单位。一个进程至少有一个线程,第一个由进程创建,