内核,进程,线程之间的关系

内核:
在计算机科学中,内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法来完成这些操作。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单。
简单的说,内核就是承上启下,承上是内核接收软件所发出的需求,来给分配资源,进行处理。启下就是内核合理的分配和管理硬件资源,来为上层提供服务。
进程:
1、用户角度: 进程是程序的一次动态执行过程
2、操作系统: 进程是操作系统分配资源的基本单位,也是最小单位
当内核接到任务时,就会创建一个进程来执行这个任务,进程的资源是由内核分配的,内核会有一个进程表,来记录进程,如果只有单个进程那么进程独享cpu使用权,如果多个任务来临,内核就会创建多个进程来执行不同的任务,那么cpu的使用权就会通过时间片轮转的方式来分配给进程使用,进程就排队使用cpu,当进程使用完cpu这个时间段时,就停下来把使用权交给下一行进程使用,这样轮流使用cpu,由于cpu的速度很快,所以我们感觉不到停顿。所以进程在被执行和在执行的这一个过程中,可以分为三态,就绪态,执行态,阻塞态。
就绪态是说进程具备了执行的任何条件,就差cpu了,只要给cpu使用权,就可以进入执行态。执行态是进程正在使用cpu,阻塞态是进程在执行态时,由于缺少数据,数据需要从内存里拿,但是内存和cpu的速度相差很大,所以cpu会把进程放到阻塞态中,让下一个进程进入执行态,这个进程等到数据之后,在进行排队,进入就绪态,再进入执行态,不可以从阻塞态直接到执行态。
内核,进程,线程之间的关系_第1张图片
线程:
线程是由进程创建的,进程是由内核创建的,进程的资源是由内核分配的,线程的资源是进程的。进程可以创建多个线程,线程之间 是没有通信的,进程之间是有通信的,进程之间的通信可以通过 管道通信,消息队列,信号通信,共享内存,信号量等,线程之间没有通信,但线程之间再访问同一个公共资源时,会产生冲突,这里线程有自己的处理方法,就是互斥锁的设置,保证在这个线程使用的过程中,自己独占这个资源,用完了再释放,在这个线程使用的过程中其他线程不可以使用,这就可以避免冲突。

总的来说,内核创建进程,进程由内核来管理,线程由进程创建。内核管不了线程,就像教育部管学校一样,教育部不管学校的具体学生,学生由学校来管理一样。

你可能感兴趣的:(操作系统,linux)