| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 进程与线程 -> 正文阅读 |
|
[系统运维]进程与线程 |
一.进程 1.进程是什么 进程就是一个正在运行的程序(任务) ——任务管理器里就能看到很多进程,对操作系统来说一个任务(为了完成某个目的所要所得一系列事情)就是一个进程。 2.操作系统如何管理进程 (1)描述:task struct(进程描述符 Linux内核的一种数据结构 ) (2)组织:用双向链表把很多task struct变量给串起来。(例如 ,看到任务管理器,就可以认为是操作系统内核遍历了这个双向链表,然后把每个节点的信息获取出来并展示。) 3.一个进程的task struct里大概有什么信息 (1)pid(进程ID) (2)进程的内存指针:描述了进程持有的内存资源是哪些范围(进程依赖的代码,数据都在哪里) (3)进程的优先级 (4)进程的上下文(某个进程在cpu上执行了一段时间之后,就需要调度下去了,但可能还会再未来的某个时间段继续回到cpu上往下执行,这个进程就需要把上次执行的状态给记录下来,记录的内容是当时cpu的各个寄存器的值,记录在内存中,以便下次运行时可以恢复之前的现场,继续往下执行) (5)进程的记账信息(就像是统计信息,记录每个进程在cpu上执行多久了,调度多少次了) (6)进程的状态(创建,就绪,执行,阻塞,终止) (3)-(5)提供的信息 都是为了辅助进程的调度(进程的调度是一个抢占式执行的过程,调度工作完全是由操作系统内核负责的,进程不知道自己接下来的命一切都听从于操作系统) 4.并行与并发: (1)并行:多个进程在多个cpu下分别同时运行。 (2)并发:多个进程在一个cpu下你运行一会后换我运行,我运行一会后再换别的进程运行,让多个进程都得以推进。 现在表述的时候一般都用并发 又可以代指并行也可以指并发 看情况而定 但是都说成并发。 5.内核态与用户态 (1)内核态:操作系统内核来执行任务 (2)用户态:应用程序来执行任务 完整的操作系统=操作系统内核+配套的应用程序 6.为什么要引入进程 (1)让操作系统能够支持多“任务” (2)更加充分的利用cpu资源 二.线程 1.进程和线程的区别: (1)根本区别:进程是系统分配资源的最小单位,线程是系统调度的最小单位 (2)开销方面:进程都有自己的独立数据空间,创建和销毁的开销比较大:线程也有自己的运行栈和程序计数器,但创建和销毁的开销比较小。 (3)一个进程“挂了”并不会影响其他进程,但是一个线程出现异常,会影响到别的线程(因为它们共享一些内存资源)或者这个进程的。 2.进程是为了实现并发编程的效果,但是为了追求更高的效率就引入了线程,线程也被称之为“轻量级进程”,一个进程内的线程之间是可以共享资源的,每一个进程至少有一个线程存在,即主线程,每一个线程就对应到一个“独立的执行流”,在这个执行流里就可以完成一系列指令,多个线程就有多个“执行流”,就可以并发的完成多个系列的指令了,但是线程也不是越多越好,在线程数目达到一定的数量下,继续增加线程,这时候多个线程为了竞争cpu资源就会占用更多的开销(线程多了调度的开销也就多了),这时候不但不会提高效率,反而还会降低效率。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 12:38:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |