当前位置: 首页 > news >正文

世界十大网站排名出炉最新军事新闻最新消息视频

世界十大网站排名出炉,最新军事新闻最新消息视频,微信小程序个人网站开发,wordpress悬浮导航栏文章目录 Linux写时拷贝技术(copy-on-write)进程的概念进程的定义进程和程序的区别PCB的内部构成 程序是如何被加载变成进程的#xff1f;写时复制#xff08;Copy-On-Write, COW#xff09;写时复制机制的原理写时拷贝的场景 fork与COWvfork与fork Linux写时拷贝技术(copy-… 文章目录 Linux写时拷贝技术(copy-on-write)进程的概念进程的定义进程和程序的区别PCB的内部构成 程序是如何被加载变成进程的写时复制Copy-On-Write, COW写时复制机制的原理写时拷贝的场景 fork与COWvfork与fork Linux写时拷贝技术(copy-on-write) 在了解写时拷贝技术之前我们得先知道进程 进程的概念 进程的定义 肤浅的来说加载到内存中的程序就叫做进程。但这并不完善。 运行中的系统存在大量的进程操作系统该如何管理这些进程呢仍然是先描述再组织。 进程在形成之初操作系统就会为其创建进程控制块 PCB。进程控制块PCB用于描述进程其中存储着进程的所有属性。 Linux 系统中PCB 就是一个名为task_struct的结构体。 Linux 查看进程的命令 $ ps axj | head -1 ps axj | grep myprocPPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 25486 29733 29733 25486 pts/0 29733 S 1003 0:00 ./myproc # 正在运行的myproc进程启动程序的本质就是在内存上创建进程。 进程和程序的区别 程序本质就是文件是编译生成的二进制可执行文件。程序被加载到内存中系统自动为其创建PCB以管理该进程。故进程是程序的代码数据与进程相关内核数据结构的总和。 操作系统在处理进程时 不是直接操作程序而是读写PCB因为PCB中含有程序的所有属性。也就是说进程管理与进程对应的程序毫无关系只与进程的PCB强相关。 PCB的内部构成 task_struct结构 进程编号 —— 每个进程都有编号或称标识符也就是 PID具有唯一性用来区别于其他进程。进程状态 —— 包括进程退出时的退出码、退出信号、任务状态等。 #include sys/types.h #include unistd.h pid_t getpid(void); pid_t getppid(void);程序是如何被加载变成进程的 首先程序通过编译器转换为目标代码并由链接器与库函数链接形成可执行文件。此时程序内部已分配逻辑地址但尚未映射至物理内存。当程序被执行时操作系统将其从存储介质加载至内存并进行逻辑地址到物理地址的映射这一映射关系存储于页表中。 在C/C中地址并不是内存物理上的地址而是操作系统提供的虚拟地址。操作系统不允许直接读取物理内存。虚拟地址在不同进程中是相同的但物理地址是不同的。例如当使用fork函数创建子进程时父进程的栈空间中的变量并不会直接复制到子进程中而是通过写时拷贝的机制。这意味着当父进程或子进程尝试修改这些变量时才会发生真正的复制操作从而保证了父子进程间的数据独立性。 如果想要执行你书中A程序第8页的一段代码那就由一个人我们叫他管理员操作系统管理员把这一页程序复制到这本速读书物理地址空间的某个空白页上比如第1页同时记录这个映射关系A程序的第8页放在了这本书的第1页如果B程序也要执行第8页中的一段代码虚拟地址相同也需要由那个人把这一页复制到这本速读书的某个空白页上比如第二页并将映射关系记录在映射表上。这种情况就是虚拟地址相同但被放在了不同的物理地址上。 写时复制Copy-On-Write, COW 写时复制Copy-on-Write, COW是一种优化策略。其主要思想是当多个调用者callers请求相同资源如内存或磁盘上的数据存储时他们会共享相同的指针指向同一资源。只有当某个调用者尝试修改资源内容时系统才会为该调用者创建一份专用副本private copy。这种策略对其他调用者是透明的只有在修改资源时才会创建副本因此在调用者仅进行读取操作时可以共享同一份资源。 写时复制机制的原理 进程具有独立性为了保证进程间数据独立进程间不相互干扰会有数据的写时拷贝得到一张新的页表。在上面的程序中变量的物理地址实际就不同了因此数据也是不同的。 写时拷贝技术实际上是运用了一个 “引用计数” 的概念来实现的。在开辟的空间中多维护四个字节来存储引用计数。 有两种方法 多开辟四个字节(pCount)的空间用来记录有多少个指针指向这片空间。在开辟空间的头部预留四个字节的空间来记录有多少个指针指向这片空间。 当我们多开辟一份空间时让引用计数1如果有释放空间那就让计数-1但是此时不是真正的释放是假释放等到引用计数变为 0 时才会真正的释放空间。如果有修改或写的操作那么也让原空间的引用计数-1并且真正开辟新的空间。 linux 下的 fork() 就是用的写时拷贝技术引用计数不光在 string 这里用到还有智能指针 shared_ptr 也用到了引用计数来解决拷贝问题。 写时拷贝的场景 虚拟内存管理中的写时复制 在虚拟内存管理中页面通常被标记为只读。当某个进程尝试向内存写入数据时内存管理单元MMU会抛出一个异常。内核在处理该异常时会为该进程分配一份新的物理内存并复制数据到该内存中然后重新执行写操作。 数据存储中的写时复制 Linux等操作系统的文件管理系统使用了写时复制策略。数据库服务器也通常采用写时复制策略为用户提供快照snapshot。 软件应用中的写时复制 C标准程序库中的std::string类在C98/C03标准中允许写时复制策略但在C11标准中为了提高并行性取消了这一策略。GCC从版本5开始std::string不再采用COW策略。 fork与COW fork是Linux系统中用于创建新进程的系统调用。在传统的fork实现中子进程会完全复制父进程的地址空间包括数据段、堆、栈和只读的代码段。这种复制操作可能会消耗大量的时间和内存资源。 为了优化这一过程现代操作系统引入了写时复制Copy-On-Write, COW策略。在fork之后子进程和父进程共享数据段、堆和代码段但内核会将这些共享区域的访问权限设置为只读。如果任何一个进程尝试修改这些共享区域内核会为该进程创建该区域的一个私有副本这个过程称为“写时复制”。这样只有在实际需要修改数据时才会发生内存复制从而节省了内存空间和复制时间。 vfork与fork vfork是另一种用于创建新进程的系统调用它与fork的主要区别在于vfork不会复制父进程的地址空间而是让子进程直接在父进程的地址空间中运行直到子进程调用exec或exit。这意味着子进程在调用exec或exit之前对父进程地址空间中的任何修改都会影响到父进程。 vfork的设计初衷是为了在子进程立即调用exec执行新程序的情况下避免不必要的地址空间复制。由于子进程不会访问父进程的地址空间因此vfork可以更高效地创建新进程。 然而vfork的使用需要非常小心因为子进程和父进程共享地址空间这可能导致数据竞争和不确定的行为。因此vfork通常在子进程调用exec或exit后立即返回以避免潜在的问题。 vfork与fork的对比 fork通过写时复制技术优化了进程创建过程允许父进程和子进程共享地址空间直到需要修改时才进行复制。vfork则是在子进程立即调用exec或exit的情况下避免复制父进程的地址空间直接在父进程的地址空间中运行子进程。 两者都是创建新进程的方法但fork更为通用而vfork则是在特定场景下的一种优化手段。由于vfork可能带来的风险现代操作系统中fork通常已经足够高效而vfork的使用则越来越少。
http://www.pierceye.com/news/793697/

相关文章:

  • 后台网站更新 网站没显示广告投放代理商
  • 北京住房保障建设投资中心网站wordpress文章页面修改
  • 游戏网站建设项目规划书案例集约化网站群建设情况
  • 网站策划书编写阿里云部署多个网站
  • 品牌高端网站制作公司佛山新网站建设如何
  • 网站开发中怎么设置快捷键网页设计知名网站
  • 公司网上注册在哪个网站分析网络营销方式
  • 网站用什么颜色外贸企业建站公司
  • 网站下载音乐网站开发公司知乎
  • 什么样式表一般用于大型网站什么是seo搜索
  • 做网站用vue还是用jquery济宁网站建设 中企动力临沂
  • 网站专题教程最吸引人的营销广告词
  • 瑞安网站网站建设如何推广自己的店铺
  • 建设网站花都水泥公司网站建设
  • asp网站怎么下载源码农业做的好的网站
  • 导购网站怎么做视频教学网页设计与制作教程第5版
  • 建设部施工安全管理网站网站建设公司如何
  • 企业商城建站公司网站页面加密
  • 昆山教育云平台网站建设软件工程师考试报名
  • ps做网站大小尺寸大连开发区商场
  • 化妆品网站建设网站右键禁止
  • wordpress 没有样式表网站如何免费做SEO优化
  • 青岛有没有专门做淘宝网站中国建设人才网站
  • 网站移动端是什么问题吗怎样自己做免费的网站
  • 做网站没有做退钱宁波品牌策划公司
  • 网站备案 不关站家乡网页制作模板
  • 成都网站建设企业 排名网络营销推广方案ppt
  • 阳西住房和城乡规划建设局网站微信公众号商城制作
  • 石家庄自助建站软件邯郸做紧固件网站
  • 做川菜的网站动画制作网页