什么是进程?
进程简单的讲就是计算机中的程序关于数据的一次活动,它是系统资源分配和调度的基本单位。
进程的上下文组成:
进程管理块包括进程的编号,状态,优先级以及正文段和数据段中的数据
什么是正文段?
就是存放该进程的可执行代码
什么是数据段?
存放进程静态产生的数据结构
上下文还包括用户堆栈。
线程
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
线程的基本特点
-
线程有自己的运行线索,可完成特定任务。
-
线程自己基本上不拥有系统资源,只拥有少量在运行中必不可少的资源(如程序计数器、一组寄存器、栈、线程信号掩码、局部线程变量和线程私有数据)。
-
一个线程与同属一个进程的其他线程共享进程所拥有的全部资源(同一地址空间、通用的信号处理机制、数据与I/O)。
-
可通过相互之间协同来完成进程所要完成的任务。
线程的优点:
1.节俭。运行于一个进程的多个线程,他们之间使用相同的地址空间,而且线程间彼此切换所需的时间小于进程间切换所需的时间。据统计,一个进程的开销大约是一个线程的开销的30倍左右。
2.线程间方便的通信方式。对于不同进程。它们具有独立的数据空间,要进行数据的传递只能通过进程间通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。
进程与线程结构的对比图:
他俩的区别:
- 进程是资源调度的基本单位,线程时CPU调度的基本单位。
- 进程是运行中的程序,线程是进程的内部的一个执行序列
- 进程间切换代价大,线程间切换代价小
- 进程拥有资源多,线程拥有资源少
- 多个线程共享进程的资源