html写手机网站,asp手机网站自动跳转,H5 网站,分类网站发布信息有生意做吗目录 什么是在计算机运行的程序这么多运行的程序计算机是如何管理的先描述再组织 什么是在计算机运行的程序
对于一个在磁盘可执行的二进制文件#xff0c;也可叫做可执行程序。对于一个可执行的程序#xff0c;程序有自己的代码和数据。一旦运行起来#xff0c;就会在计算… 目录 什么是在计算机运行的程序这么多运行的程序计算机是如何管理的先描述再组织 什么是在计算机运行的程序
对于一个在磁盘可执行的二进制文件也可叫做可执行程序。对于一个可执行的程序程序有自己的代码和数据。一旦运行起来就会在计算机内部运作起来。 根据冯诺依曼体系一个程序要被运行起来先是要加载到内存当中然后再到CPU调度。当代计算机中能运行一个程序就能运行多个程序然后每个二进制的可执行文件程序都像在自己干自己的事情互不干扰。这就是在计算机运行的程序。
这么多运行的程序计算机是如何管理的
先描述
当程序加载到内存的时候计算机的操纵系统OS必然会对这个程序进行管理操作系统是通过对程序对象的先描述抽象成一个对象这个对象就是一个进程process所以程序运行起来就是操作系统的一个进程操作系统创建一个进程来运行这个程序。操作系统对程序的管理转而变为对进程的管理进程有程序的代码和数据。实际上在磁盘的程序在运行之前是把代码和数据拷贝到内存当中而程序依据再磁盘保存着所以说运行的程序其实是操作系统中运行的进程。然后这些进程在合适的时机会被CPU调度。
再组织
对程序拷贝到内存的代码和数据进行描述完成后操作系统要对这些进程管理再linux系统当中会以一个叫task_struct的结构体对象对进程进行管理task_struct包含着进程的属性task_struct就是操作系统管理进程的控制块包含着进程的许多属性(process contorl block)然后task_struct以某种数据结构类型相互联系起来。再以一个struct runqueue的运行队列结构体管理。 进程包含代码 数据 进程控制数据结构 如果一个在磁盘可执行的文件已经加载到内存有进程一直在运行如果进程还没结束把磁盘的可执行文件删除该进程还能运行因为该进程是拷贝可执行文件的数据和代码虽然已经删除可执行文件但依旧运行。如果终止想重新执行就不可以。
struct task_struct {volatile long state; /* -1 unrunnable, 0 runnable, 0 stopped */prio_array_t *array;//有该进程被cpu调度的优先级pid_t pid;//有进程的id编号pid_t tgid;struct mm_struct *mm, *active_mm;//进程的内存地址空间int exit_code, exit_signal;//进程的退出码和退出信息struct task_struct *next_task, *prev_task;////...........................................//该进程的一系列属性。包括形成该进程的文件路径和其他文件信息
}
//操作系统也是软件上述结构体就是操作系统管理进程的task_structstruct task_struct *next_task, *prev_task;操作系统通过这种双链表的形式组织管理这些进程控制块。
当新的程序执行的时候操作系统再次创建进程把进程通过链表的链入规则连接到运行队列如果进程结束则task_struct在链表上删除然后重新连接。