目录
一、有关于进程的理解
1、进程的定义以及如何管理进程
进程是什么?简单来说,一个运行起来的程序,就称为进程。
而进程在计算机的定义是进程是操作系统资源分配的基本单位。
站在操作系统的视角,如何管理进程呢?首先,我们要描述一个进程是什么样子的,使用结构体,描述出进程的核心属性(通过进程控制块(PCB)来做,因为这个是一个非常大的结构体,里面是有很多很多的属性的),然后把多个进程组织起来。
就好比一个进程是一位同学,而进程控制块(PCB)里面里面内容就好比学生的学号、姓名、性别、班别这些,然后班级作为结构体,管理这一群学生。
2、进程控制块的理解(PCB)
1)pid(进程id):进程的身份标识符号(也就类似于学生的学号和姓名)。
2)内存指针(一组指针):进程需要知道执行的指令在哪里,指令依赖的数据又在哪里,进程进行的过程中,非常需要消耗内存资源,所以内存指针对于进程的控制块不言而喻。
3)文件描述符表:进程在运行的过程中,很多时候需要和硬盘这个设备进行交互,硬盘上的数据就是以文件的形式来组织的,每次打开一个文件,就会保存到文件描述表中,而表中的每一个项,就对应了每一个打开的文件。(在操作系统中,会把很多资源,都抽象成文件来表示,就是当作“文件”意义来管理)。
4)进程状态:进程状态主要有俩种,就绪状态和阻塞状态;就绪状态是随时准备在cpu上进行执行的,阻塞状态是不适合在cpu上面进行执行。
5)进程优先级:进程优先级需要考虑哪个进行需要及时吃到cpu,哪个进程可以暂时不用吃到cpu,比如微信,qq,如果别人发送信息过来,那么微信qq都需要吃到cpu资源,在空闲的时候且还要更需要吃到cpu资源的进程(游戏或者其他程序)的时候,那么cpu会优先给到这些进程。
6)进程上下文:进程上下文是操作系统中的一个概念,它指的是进程执行时所需的所有信息的集合,这些信息使得进程能够被CPU执行。其中进程上下文中,还包括保存上下文(把cpu中的这些寄存器的值,保存到内存中)和恢复上下文(把PCB中刚才保存的属性,填写到对应的寄存器中)等。
7)进程的记账信息:主要起到一个统计的功能,比如记一个进程在cpu上运行的时候,如果优先级同等,那么就会把cpu资源倾斜给吃的时候比较少的进程。
3、进程创建、销毁和查看
进程的创建:首先创建一个PCB,初始化PCB中的各个属性。并且把PCB加载到链表中。
进程的销毁:在链表上找到需要删除的PCB,并将他们在链表上删除。
查看进程列表:遍历链表,取出链表关键信息,放到显示界面。
二、有关于线程的理解
1、线程的定义
线程cpu上调度执行的基本单位,它被包含在进程之中,是进程中的实际运作单位。线程自身不拥有系统资源,只拥有一点在运行中必不可少的资源(如执行栈),但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一进程下的线程之间可以并发执行。
2、线程存在的意义
进程是一个比较重量级的东西,每次创建和销毁都需要消耗大量的资源,而线程被线程包括,比线程更小,属于轻量级,每次创建和销毁消耗的资源会比较少,不会浪费大量的资源,而且线程之间能共享进程资源,可以更加方便。
三、进程和线程之间的区别
1、定义
线程cpu上调度执行的基本单位。
进程是操作系统资源分配的基本单位。
2、资源拥有
进程:自己独立的资源,如内存空间、文件描述符等。
线程:共享进程的资源,如内存空间、文件描述符等,但每个线程有自己独立的执行栈。
3、创建和管理开销
、 进程:进程创建和管理的开销都很大,因为每个进程都需要独立的地址空间和系统资源。
线程:线程创建和管理的开销相对于进程来说小很多,因为线程共享线程的资源,只需要很少的额外资源。
4、通信方式
进程:进程间通信(IPC)需要特定的机制,如管道、信号、共享内存、消息队列等。
线程:线程间可以直接读写进程数据段(如全局变量)来进行通信,因为它们共享相同的内存空间。
5、独立性
进程:进程之间是相互独立的,互不影响的。
线程:线程之间是相互依赖的,同一个进程下的一个线程崩溃可能会导致下面的一个线程崩溃,进而导致整个进程崩溃。
6、执行
进程:进程是程序的执行流,每一个进程至少有一个线程(主线程);
线程:线程是进程中的一个执行流,线程依赖于进程的资源。
7、上下文切换
进程:进程之间的上下文切换开销会比较大。
线程:线程之间的上下文切换开销会比较小。