一、进程
1、进程的概念及特征,状态转换,及进程的控制
程序段,数据段,PCB三部分组成了进程的实体(进程映像)。进程是一个动态的概念,进程实体的是一个动态的概念。
进程运行的三种状态,就绪,运行和阻塞。
进程的五大特征:
动态,异步,独立,结构,并发
动态:进程是程序依次执行过程,动态创建,存在和消亡。
并发:内存中存在多个进程,各进程并发的接收系统资源,是接收的最小单位。
独立:进行独立的执行,独立的接收进程的资源。
结构:一个进程有程序段,数据段,PCB三部分构成。
异步:操作系统要提供“进程同步机制“来解决异步问题。各进程按各自独立的、不可预知的速度向前推进(这个我也不理解,当八股文背吧!)
2、进程通信方式
因为进程的独立性因此进程之间不能直接进行“交流”,这时有一些进程相互暧昧需要交流,于是像操作系统发出通信请求,操作系统为了让这些程序进行“交流”便提供了一些交流的方式;
第一种便是共享存储,提供提供一块存储区域(有可能时数据块就是一个数组(基于数据结构的共享),也有可能是一块数据块(基于存储区间的共享))。同时两个进程是互斥的访问这一块共享存储区间。
第二种是消息传递,两个进程之间发送消息,有直接表明接收进程ID的消息传递即直接通信。
也有通过信箱暗送秋波
第三种通过管道通信,内容不多全在下图!
二、线程
1、what is 线程?
若是将去图书馆看书比作一次计算机的运作,人就是一个进程,桌子便是操作系统,一根书便是一个线程。进程由系统分配资源,线程是处理机分配的单元,是CPU执行流的最小单位。
why?
引入线程的好处有很多,其中最重要的一点就是线程提高了计算机的并发度,之前的计算机以进程为单位进行并发,引入线程之后计算机可以以线程为单位进行并发。其他的好处如下图:
2、how do achieve 线程?
线程分为用户级线程,和内核级线程。用户级线程,从用户的视角能看到的线程,是用户能看到的线程,线程之间的转换不需要操作系统内核,有写好的线程库来实现。
内核级线程从操作系统内核的视角能看到的线程,由操作系统实现,操作系统内核级线程才是处理机分配的单位。
还有由以上两种方式组合而成,计算机老生长谈的话题了什么都要组合到一起才能达到性能的最优。
一共有三种方式,没错第三种是前两种的组合。
第一种多个用户级线程对应一个操作系统的内核级线程,多对一一旦有一个发生故障就会发生阻塞。
第二种一对一,开销太大不太行。
第三种类似,三对二或者五对三,总之就是多个用户级线程对应更少的操作系统级的线程。