IntroductionProcess我们从上一篇文章中了解到,操作系统的基本功能是管理底层的硬件资源,包括以下几个部分。通过操作系统,可以轻松管理这些资源。那么假设在没有操作系统的时代,这些计算机资源是如何管理的呢?在未配置操作系统之前,资源只属于当前正在运行的程序,计算机只能运行一个程序。这时候因为一些资源的原因,不能充分合理的利用当前运行的程序,所以引入了多道程序。该概念还配置了相关的操作系统。有了操作系统,进程就出现了。进程的作用是合理隔离资源,运行环境,提高资源利用率。可以为每个程序分配资源)进程作为程序独立运行的载体,保证程序的正常执行(由于多程序的概念,计算机中可能有多个进程共享一个一定的物理设备,比如内存。那么这里的进程就是起到运行资源隔离的作用)进程的存在大大提高了操作系统资源的利用率(这也依赖于多道程序设计的概念)。因此,基于以上原因,操作系统需要进程更合理、更高效地运行。2、进程在物理主存中的进程形式在主存中,进程也是一个连续的存储空间。这个空间称为进程控制块。在进程控制块中,有一些重要信息:标识符、状态、优先级、程序计数器、内存指针、上下文数据、IO状态信息、记账信息等一些重要信息。标识符:唯一标识一个进程的符号,用于区分其他进程。比如我们常见的进程ID就是这个唯一标识state:标记进程的进程状态。如运行态或阻塞态程序计数器:进程即将执行的下一条指令的地址内存指针:程序代码或进程数据相关的指针。可能有多个内存指针,指向程序的具体逻辑代码,或者与执行过程数据相关的地址上下文数据:这是进程控制块中比较重要的区域,存放处理器存储的数据进程执行时(处理器中有寄存器和缓存,所以这些数据就是进程的上下文数据)IO状态信息:进程IO操作占用的文件列表(在Linux中,所有信息都以形式文件的,比如我们操作的磁盘,我们操作的内存或者文件都是以文件的形式保存在IO状态信息中)Accounting信息:进程使用的CPU时间,或者sum上面的进程控制块信息时钟的数量,可以归纳为以下四类:这些是进程在主存中的形式ProcessControlBlock(PCB)进程控制块是p中最重要的内容process,那么什么是进程控制块呢?用于描述和控制进程运行的通用数据结构(每个进程都有一个进程控制块)记录进程的当前状态和控制进程运行的所有信息PCB是使能进程的基本单元独立运行(即每个进程都依赖进程控制块被操作系统调度,或者控制)PCB是操作系统调度时经常读取的信息,所以PCB常驻内存,存放在系统专门开发的PCB区域。线程进程(Process)和线程(Thread)的区别对于一个进程,可能有多个线程在里面执行,也就是说一个进程和一个线程是一对多的关系。一个进程可以有多个线程。那么进程中的线程是如何定义的呢?线程是操作系统调度操作的最小单位(回忆一下什么是进程:进程是系统进行资源分配和调度的基本单位),一个是调度的最小单位,一个是基本单位调度,意思是:操作系统对进程的调度,实际上就是进程中线程的调度。线程包含在进程中,是进程中实际运行工作的单位。也就是说,真正运行进程中逻辑的是进程中的线程,而不是进程本身。一个进程可以同时运行多个线程,每个线程执行不同的任务。如果把一个进程比作一个比较大的任务,那么多个线程可以在进程中完成不同的任务,这样多个线程运行得更快,这也是一个线程拥有多个线程的好处。现在,进程是操作系统分配资源的基本单位,也就是说一个进程拥有可观的资源,而线程并不拥有资源,而是共享进程的资源,所以线程共享进程的资源假设现在一个进程里面有3个线程,线程1、线程2、线程3,这3个线程都使用线程分配的资源,也就是说这3个线程共同使用进程的资源。处理和分配相关资源,所以它的系统开销比较大。通信对于进程来说是进程间通信(IPC),对于线程来说,是通过读写同一进程的数据来进行通信的。比如一个进程中有两个线程,线程1可以在进程资源中的某个区域写入【我处理完后的数据是多少】,然后线程2也可以读取这个区域并放入相应的数据被读出。此时线程1和线程2通过读写进程数据进行通信。在瞬息万变的技术中寻找相同点,是一个技术人的核心竞争力。知行合一,理论与实践相结合
