如何为南通城市建设集团定制一个现代教育主题的网站?

摘要:现代教育网站开发项目的研究,南通城市建设集团网站,自己做个网站需要什么,做配送平台网站多少钱线程同进程一样都是OS中非常重要的部分,线程的应用场景非常的广泛,试想我们使用的视频软件
现代教育网站开发项目的研究,南通城市建设集团网站,自己做个网站需要什么,做配送平台网站多少钱线程同进程一样都是OS中非常重要的部分#xff0c;线程的应用场景非常的广泛#xff0c;试想我们使用的视频软件#xff0c;在网络不是很好的情况下#xff0c;通常会采取下载的方式#xff0c;现在你很想立即观看#xff0c;又想下载#xff0c;于是你点击了下载并且在… 线程同进程一样都是OS中非常重要的部分线程的应用场景非常的广泛试想我们使用的视频软件在网络不是很好的情况下通常会采取下载的方式现在你很想立即观看又想下载于是你点击了下载并且在线观看。学过进程的你会不会想视频软件运行后在OS内形成一个进程有一个执行流但下载和在线观看是两件事情这两件事情是如何同时进行的呢你可能会想到CPU的时间片轮转不过曾经提到过的时间片轮转是针对进程间的切换的下载和在线观看这两件事本身处于同一个进程内完成你可能还会想到在这个进程内创建一个子进程主进程负责播放子进程负责下载这确实是一个解决问题的方法但是创建一个进程所带来的开销是不小的。本篇文章将会介绍另一种更加轻便的解决方案——线程同时我们需要重新理解CPU时间片轮转的调度单位 目录 什么是线程 深入理解页表  理解进程和线程  实践线程操作  线程终止 线程等待  分离线程  线程取消  TCB 线程的优缺点  优点 缺点  C提供的线程库  什么是线程 按照课本上的定义线程就是进程内部的执行流有多个执行流就意味着一个进程可以同时进行多个操作比如视频软件同时具备播放视频和下载视频的功能如果只有一个执行流那么在播放视频时就不能同时下载视频因为播放视频和下载视频的代码是不同的 以前我们一直认为进程是CPU的调度单位现在我们要改变这个看法被CPU调度意味着被CPU执行也就是一个执行流一个进程里可以有多个线程线程才是CPU的调度单位。所谓的调度单位就是CPU时间片轮转时的切换单位以前我们解释CPU时间片轮转时说的是每个进程都被分配一定的CPU执行时间到达时间CPU会强制切换到下一个进程以保证每个进程都能够被执行 此时通过线程的概念能得知CPU时间片轮转切换的并不是进程而是线程。但上面的话并没有说错一是创建一个进程时默认只有一个执行流也就是只有一个线程时间片轮转时可以认为是切换进程。二是在后面我们将学习到Linux其实并没有线程的概念所谓的线程在Linux中是轻量级进程 有些懵没有关系后面会一一解释原因 现在线程的概念先放到一边我们接下来再次回顾曾经学习过的进程地址空间 深入理解页表  这是笔者曾经多次提到过的进程地址空间映射图并且说过虚拟地址空间和物理内存之间一一映射那么大家有没有思考过这么一个问题假设虚拟地址空间有4G大小物理内存也是4G大而页表是虚拟地址空间和物理地址空间的一一映射这意味着页表自身得有8G大小的空间才能够满足虚拟地址空间和物理内存之间一一映射要知道页表可也得加载到内存中才能让CPU执行照这样的映射法物理内存连一个页表都存不了更何况4G物理内存空间还得留1G给OS呢 可想而知页表的映射不会像哈希表那样一一对应要明白页表的真实构造我们就得从物理内存的划分开始 ​​​ 实际上物理内存是按4kb为单位进行划分的每个大小单位被称为页框大家知道磁盘往内存中加载数据时就是以4kb大小为单位正好能够加载到物理内存的页框中这看似巧妙的背后是前人无数日夜的精心设计 但是这好像并没有说明页表的真实构造别急接着往下看 真实的页表并不是只有一张页表里存储的也不是虚拟地址和物理地址的一一对应页表里正真存储的是物理内存中每个页框的起始地址一张页表里只存储指定数量的页框整个物理内存的页框被多张页表存储着 这多张页表被页目录记录着通过页目录可以找到每一张页表到这里页表的整体结构就出来了可见当初我们刚了解页表时进行了很大程度的简化。但是这就结束了吗笔者只是把页表真实的结构给描绘出来但是并没有解释现在的页表是如何进行映射的  上图是虚拟内存中的一个虚拟地址接下来我们刨析这个虚拟地址如何通过页表最终映射到物理内存  虚拟地址映射到物理内存的方法就在地址本身上通过虚拟地址的前10位可以到页目录中找到该地址对应在哪个页表找到具体的页表之后虚拟地址的中间10位标识着该地址在物理内存的哪个页框里找到具体的页框之后那么最后12位想必大家已经猜出来了 最后12位正是页框内的偏移地址因为一个页框大小就是4kb要想在某个页框内准确定位就要知道该页框的起始地址以及在该页框内的偏移地址。
阅读全文