山东建设厅官方网站,兰溪网站建设,网站托管 建设方案,劳务公司找工程网进程的概念
程序的概念 这里说的是一个可执行文件#xff0c;passive的意思可以理解为我们这个执行文件需要我们进行双击才会被被执行。 双击后#xff0c;程序入口地址读入寄存器#xff0c;程序加载入主存#xff0c;成为一个进程 进程是主动去获取想要的资源#xff0…进程的概念
程序的概念 这里说的是一个可执行文件passive的意思可以理解为我们这个执行文件需要我们进行双击才会被被执行。 双击后程序入口地址读入寄存器程序加载入主存成为一个进程 进程是主动去获取想要的资源注意这里每个进程都只有一个pc 这里我去问了一下老师老师说微观上来说确实一个核心一个pc只能同时运行一个进程因为学习过计组之后我们知道单核只有一个pc寄存器分时任务可以设置中断程序然后让pc数据存入对应堆栈空间然后执行完相应程序再读取回来通过cpu流水线进行优化这样一套流程让我们感觉到多进程是在同时运行的。
程序推入内存示意图 执行流程 1.先将代码解释成二进制指令该指令区域text是只读的压入无法修改 2.入口main函数加载入栈空间压入静态变量i和调用另外一个g函数同时压入全局变量global 3.g函数压入栈a局部变量压入栈再压入f函数 4.压栈入f函数,x,y,p局部变量进栈动态申请堆空间100Byte(p指针局部变量值为此堆空间的地址) 继续向下读 5.返回到f函数f函数再代码中存在的地址区继续向下读 6.读到g函数return返回g函数代码点返回0值进栈释放栈、堆空间释放text空间
遗留问题
c语言需要手动释放垃圾内存
并发的进程 当然这里我们要知道这个并发并非并行前面讨论pc的时候有讲。 当然如果是多核cpu是可以并行的。
并发进程共享cpu 就算是并行也会被并发所影响 最后给进程下个定义
进程的状态 最后一个等待态是不具备运行条件下面这个例子是如果指定到2步输出语句需要调用系统write占用io如果这个函数执行占用资源很大那调用2步函数的进程需要进入等待状态让出cpu控制权等待调用结束。
运行状态何时能让出cpu控制权
调用i/o设备进入等待非正常结束进入终止。
windows叫做抢占式的多任务操作系统如果有更高优先级的进程到达就绪状态那么立刻就会抢占低优先级进程的cpu使用权分时操作系统为所有的并发进程分发时间片假设分时系统为每个进程运行时间平均分配100s那么进程占用cpu达到100s就会被强制剥夺cpu使用权。
进程转化
总结 外中断外部事件 内中断经典例子地址越界除数为0c语言堆栈溢出。 中断处理程序保存前面 我们画的那个程序内存空间的数据 中断程序执行一个lpsw指令跳回用户模式
上下文内容context
操作系统管理context,只需要调用每个进程的context内的PCB