1、什么是进程:
答:操作系统最核心的概念就是进程。其实进程简单来说就是操作系统中运行的程序,他是操作系统资源管理的最小单位。但是进程是一个动态的实体,他是程序执行的一次执行过程。进程和程序的区别在于:进程是动态的,程序是静态的,进程是运行中的程序,而程序是一些保存在硬盘上的可执行代码。
2、什么是线程:
答: 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
3、进程与线程的区别:
- 调度:在传统的操作系统中,CPU调度和分派的基本单位是进程。而在引入线程的操作系统中,则把线程作为CPU调度和分派的基本单位,进程则作为资源拥有的基本单位,从而使传统进程的两个属性分开,线程编程轻装运行,这样显著提高系统的并发行。同一进程中线程的切换不会引起进程的切换,从而避开了昂贵的系统调用,但是在由一个进程中的线程切换到另一个进程中的线程,依然会引起进程切换。
- 并发行:在引入线程的操作系统中,不仅进程间可以并发执行,而且在一个进程中的多个线程之间也可以并发执行,因而使操作系统具有更好的并发行,从而更有效地提高系统资源和系统吞吐量。
- 拥有资源:不论是引入了线程的操作系统还是传统的操作系统,进程都是拥有资源的独立单位,他可以拥有自己的资源。一般地说,线程不能拥有资源,但他可以访问其隶属进程的资源,亦即是一个进程的代码段,数据段以及系统资源,可供同一个进程的其他所有线程共享。
- 独立性:在同一进程中的不同线程之间的独立性要比不同进程之间独立性低得多。这是因为,为了防止进程之间彼此干扰的破坏,每个进程都有一个独立的地址空间和其他资源除了共享全局变量外,不允许其他进程访问。但是同一进程中的不同线程往往是为了提高并发行以及进行相互之间的合作而创建的,他们共享进程的内存地址空间和资源,如:每个线程都可以访问他们所属的进程地址空间的所有地址,如一个线程的堆栈可以被其他线程读写甚至完全清除。
- 支持多处理机系统:在多处理机系统中,对于传统的进程,即单线程进程,不管有多少处理机,该进程只能运行在一个处理机上。但对于多线程进程,就可以将一个进程中的线程分配到多个处理机上,使他们并行执行,这无疑将加速进程的完成。因此现代处理机OS都无一例外的引入了多线程。
注:1、一个程序至少一个进程,一个进程至少一个线程;
2、线程的划分尺度小于进程,使得多线程程序的并发性高;
3、进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率;
4、每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序 中,由应用程序提供多个线程执行控制;
5、多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应 用,来实现进程的调度和管理以及资源分配。