最最基础的笔试题之一.....
进程VS线程。。堆VS栈
1、进程VS线程
1)进程是具有一定独立功能的程序关于某个数据集上的一次运行活动
2)进程是系统进行资源分配和调度的一个独立的单位
3)线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
4)线程自己基本不拥有系统资源,但是它可以与同属于一个进程的其他线程共享进程所拥有的全部资源。
5)一个线程可以创建和撤销另一个线程,同一个进程中的多个线程可以并发执行
6)每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中。
7)多线程的意义在于,一个应用程序中,有多个执行部分可以同时执行。但是操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配
2、堆VS栈
1)堆是共有的空间,分为全局堆和局部堆。全局堆就是所有没有分配的空间。局部堆就是用户分配的空间。堆在系统初始化的时候分配,运行过程中也可以向系统要额外的堆,用完之后要还给操作系统,否则会发生内存泄露。。
2)栈是线程独有的,保存其运行状态和局部自动变量的。栈在线程开始的时候初始化,每个线程的栈相互独立,因此栈是thread safe的。操作系统在切换线程的时候会自动的切换栈。