💥 💥 💥如果你觉得我的文章有帮助到你,还请【关注➕点赞➕收藏】,得到你们支持就是我最大的动力!!!
💥 💥 💥
⚡版权声明:本文由【马上回来了】原创、在CSDN首发、需要转载请联系博主。
版权声明:本文为CSDN博主「马上回来了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
🚀🚀🚀 新的知识开始喽🚀🚀🚀
进程就是在硬盘里的可执行文件被CPU读取并且运行起来的文件.
进程和进程之间是相互独立的,通过专门设备MMU来构建虚拟地址空间映射到实际的物理地址空间,如果进程访问的地址不在该进程范围内,为了不影响其他进程,MMU会将通知进程(比如把该进程杀死).
进程之间是相互独立的,存在隔离性,如果是进程间的相互访问,引入一个新机制,进程间通信,无论是哪种进程间的通信,核心原则相同:找到一个多个进程都能访问到的公共资源,然后基于公共资源来交换数据.
操作系统如何管理进程?
1.通过pcd结构体来描述进程说包含的信息
2.通过双向链表的数据结构来组织
pcb描述进程的信息有哪些?
1.pid
一串数字,同一个主机同一时刻,进程的唯一表示
2.内存指针
为进程开辟内存空间 ,描述进程持有的内存资源
3.文件描述附表
每个进程都可以打存在硬盘上的文件,文件描述符表就记录了这个进程打开了哪些文件,描述进程持有的文件资源
下面几个信息与进程调度有关
4.进程状态
①就绪状态,如果CPU没被占用满,可直接执行
②阻塞状态,当前无法被CPU执行
5.进程优先级
在这么都进程里,操作系统根据优先级来个每个进程调用安排时间,创建进程时,可以通过系统调用来干预优先级(在进程优先级一样高的情况下)
6.进程上下文
对于CPU来说,上下文就是CPU寄存器里的值,进程在CPU上执行了一会儿,切换到别的进程执行就需要保存当前进程的信息(存档),下次有调用该进程的时候接着上次没执行完的进程继续执行
7.进程记账信息
记录进程执行了多少条执行,避免一些进程完全无法分配到cpu
一个进程默认包含一个线程,也可以包含多个线程,对于多线程的应用程序,每个线程都可以执行特定的任务,提高了CPU的使用效率.
CPU的资源非常有限,一个CPU(单核)在某一时刻只能运行一个进程,这个进程执行结束了才能执行下一个进程(并发执行),但是我们的电脑上实际运行的进程很多甚至上百,那么是怎么实现的能够"同时"实现多进程的呢?
CPU的集成程度(单位面积内的组件数量)决定了CPU的工作效率,但是截至到目前,CPU已经达到了5nm的制程,想要进一步提高制程比较困难,因此就把多个CPU焊在同一块板上,这样多核cpu就诞生了,多核CPU可以同时执行多个进程(并行执行).
结合上面提到的进程调度相关的信息,这就可以解释为什么我们的计算机可以"同时并发"的执行多个进程了,这里"同时并发"是指宏观上的"并发+并行",因为CPU的运算速度极快,就算是单核CPU的并发执行,在多个进程间切换,人类肉眼无法察觉到,再加上CPU多核的并行执行,所以多核CPU实际上是以并发+并行的方式管理者进程,而且我们也无法知道是并发执行的多些还是并行执行的多一些,这就是为什么电脑上执行的进程数往往大于CPU的内核数的原因.
系统的调度已经实现了多进程,但是在某些情况,频繁的创建进程和销毁进程非常的消耗时间(给进程分配内存空间和销毁进程的内存空间极大)的影响了CPU的使用效率,因此在这个基础上线程就诞生了.
进程是操作系统分配资源的基本单位
线程是操作系统调度的基本单位
一个进程包含了一组PCB,每个PCB都包含了一个线程,这些线程共用该进程执行的内存资源和文件资源,每个线程都是一个"执行流",可以单独在CPU上进行调度.
因此描述进程的相关信息其实也是在描述线程,CPU在实现多线程时,实际上某一个时间段是执行改进程里的某个线程,对于多CPU则可以同时执行该进程里的多个线程.
多线程极大的提高了CPU的使用效率,只有在第一次创建线程时才会申请资源空间,后续在创建新的线程都是共用的同一份资源(节省了申请资源的开销),在销毁最后一个线程时,才会真正释放资源,前面的线程销毁都不必释放资源.
进程和线程的概念和区别?
1.正在运行的程序叫做进程
2.进程包含线程,线程比进程更轻量,创建更快,销毁也更快
3.同一个进程的多个线程之间共用同一份内存/文件资源,进程和进程之间则是独立的内存/文件资源
4.进程是资源分配的基本单位,线程是调度执行的基本单位
🌏🌏🌏今天的你看懂这里又学到了很多东西吧🌏🌏🌏
🌔 🌔 🌔下次见喽🌔 🌔 🌔