一、进程(Process)和线程(Thread)的关系和区别?
参考:https://www.cnblogs.com/xymqx/p/4442329.html
进程:
是具有一定独立功能的程序关于某个数据几何上的一次运行活动,是系统进行资源分配和调度的一个独立单位;
线程:
是进程的一个实体(进程(线程)),是CPU调度和分派的基本单位,是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可以玉同属于一个进程的其他线程共享进程所拥有的全部资源。
关系:
一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行
进程和应用程序的区别在于应用程序作为一个静态文件存储在计算机系统的硬盘等存储空间中,而进程则是处于动态条件下由操作系统维护的系统资源管理实体。
区别:
1、粒度性分析:线程的粒度小于进程;
2、调度性分析:进程是资源拥有的基本单位,线城是独立调度和独立运行的基本单位,除了寄存器、程序计数器等必要的资源外基本不拥有其他的资源;
3、系统开销分析:由于线程基本不拥有系统资源,所以在进行切换时,线程切换的开销远远小于进程
二、进程同步
进程同步的主要任务:对于多个相关进程在执行次序上进行协调,以使并发执行的各进程之间能够有效的共享资源和相互合作,从而使程序的执行具有可再现性
同步机制遵循的原则:
(1)空闲让进;
(2)忙则等待(保证对临界区的互斥访问);
(3)有限等待(有限代表有限的时间,避免死等);
(4)让权等待(当进程不能进入自己的临界区时,应该释放处理机,以免陷入盲等状态)
经典进程同步问题:生产者-消费者问题;哲学家进餐问题;