1.进程
(https://www.cnblogs.com/tianlangshu/p/5224178.html)
一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度运行的基本单位。
1.1三种状态
- 运行状态:获得CPU的进程处于此状态,对应的程序在CPU上运行着。
- 阻塞状态:为了等待某个外部事件的发生(如等待I/O操作的完成,等待另一个进程发来消息),暂时无法运行。也称为等待状态。
- 就绪状态:具备了一切运行需要的条件,由于其他进程占用CPU而暂时无法运行。
1.1.1状态之间的转换
a. 运行状态 ===> 阻塞状态:例如正在运行的进程提出I/O请求,由运行状态转化为阻塞状态
b. 阻塞状态 ===> 就绪状态:例如I/O操作完成之后,由阻塞状态转化为就绪状态
c. 就绪状态 ===> 运行状态:例如就绪状态的进程被进程调度程序选中,分配到CPU中运行,由就绪状态转化为运行状态
d. 运行状态 ===> 就绪状态:处于运行状态的进程的时间片用完,不得不让出CPU,由运行状态转化为就绪状态
1.1.2 分类
a. 系统进程:操作系统用来管理资源的进程,当系统进程处于运行态时,CPU处于管态,系统之间的关系由操作系统负责
b. 用户进程:操作系统可以独立执行的的用户程序段,当用户进程处于运行态时,CPU处于目态,用户进程之间的关系由用户负责
2.线程
进程与线程的一个简单解释(还有互斥锁、信号量的解释)
一个进程就是一段程序的执行,但是一段程序可以实现很多功能,而我们可以简单的认为,每一个功能就是一个线程,线程就是进程内执行的任务。
一个进程内部可以有很多的线程。
线程是CPU使用的基本单元,它由线程ID、程序计数器、寄存器集合和栈组成。它与属于同一进程的其他线程共享代码段、数据段和其他操作系统资源。
2.1 多线程优点
- 响应度高:如果对一个交互程序采用多线程,即使有部分线程阻塞或执行冗长的操作,该程序也能继续执行,从而增加对用户的相应程度
- 资源共享:多线程默认共享他们所属进程的内存和资源
- 经济:进程创建所需要的内存和资源的分配比较昂贵,由于线程能够共享他们的进程的资源,所以创建线程比进程经济;
- 多处理器体系结构的利用:多线程的优点是充分利用多处理器体系结构,以便每个进程能够并行运行在不同的处理器上。
3.进程的通信方式
3.1共享内存
最有用的进程间通信方式。
它使得多个进程可以访问同一块内存空间, 不同进程可以及时看到对方进程中对共享内存中数据得更新。
这种方式需要依靠某种同步操作, 如互斥锁和信号量等。
3.2消息队列
“消息队列” 是在消息的传输过程中保存消息的容器。
具有写权限的进程可以按照一定得规则向消息队列中添加新信息;
对消息队列有读权限的进程则可以从消息队列中读取信息。
3.3.信号
信号是一种比较复杂的通信方式, 用于通知接收进程某个事件已经发生。
3.4信号量
信号量是一个计数器, 可以用来控制多个进程对共享资源的访问。
它常作为一种锁机制, 防止某进程正在访问共享资源时, 其他进程也访问该资源。
因此, 主要作为进程间以及同一进程内不同线程之间的同步<