OS:进程&线程
1、进程 vs 线程
进程 | 线程 | |
---|---|---|
含义 | 一个在内存中运行的应用程序 | 进程的一个执行任务 |
包含关系 | 一个进程有若干个线程 | 进程的一部分,相当于只有一个任务的进程(轻权进程、轻量级进程) |
根本区别 | 操作系统资源分配的基本单位 | CPU 任务调度和执行的基本单位 |
资源开销 | 每个进程都有独立的代码和数据空间(程序上下文),上下文切换的开销大 | 同一进程的线程共享代码和数据空间,每个线程有独立的栈区和程序计数器,上下文切换的开销小 |
影响关系 | 进程崩溃后,在保护模式下不影响其它进程 | 线程“崩溃”,可能导致整个进程崩溃。 (多进程比多线程健壮) |
执行过程 | 可独立执行,有程序运行的入口、顺序执行序列和程序出口 | 线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制 |
2、进程
- 线程调度算法
3、线程
3.1、线程崩溃
线程“崩溃”时触发 segment fault 信号
线程触发 segment fault 信号时,系统有两种处理方式。
- 不屏蔽信号:操作系统终止该线程所在的进程(默认)
- 屏蔽信号:由线程的崩溃位置决定
- 线程独占区:不影响其它线程。
- 线程共享区:会的
Hint:Java 线程崩溃,JVM 自动释放相关的资源,不会导致进程崩溃。
3.2、线程状态
-
OS 层面:
-
初始
-
可运行
-
运行
-
阻塞
-
终止
-
-
Java Thread API:
-
NEW
-
RUNNABLE
-
BLOCKED
-
WAITING
-
TIMED_WAITING
-
TERMINATED
-