Linux:多进程多线程
认识进程什么是进程进程是动态执行过程程序与进程的区别程序是静态代码静态性进程是动态执行过程动态性程序静态代码--加载到内存--分配资源--执行这个资源这个执行过程就叫进程等待CPU调度的进程叫作就绪进程task_struct结构体管理 创建-运行-回收 这整个过程隔离机制将用户空间与内核空间进行隔离实现共享与独立//我们编写的数据放在用户空间程序使用的是用户空间进程的管理是由task_struct这个结构管理这个结构体放在内核空间系统使用的是内核空间内核机制保证了系统的稳定性互不干扰进程的核心特征动态性进程的实在是程序在多道程序系统中的一次执行过程进程是动态产生、动态消亡并发性任何进程都可以同其他进程一起并发执行//进程饥饿、系统崩溃独立性进程是一个能独立运行的基本单位同时意思系统分配资源和调度的独立单位同时也是系统分配资源和调度的独立单元异步性由于进程间的相互制约使进程具有执行的阶段性即进程各自独立、不可预知的速度向前推进程序与进程的关系程序与进程间的区别对比维度程序进程定义存在形式程序与进程的关联1进程是程序的执行过程一个程序可以对应多个进程2程序是进程的“模板”进程是程序的“运行态体现”3进程的执行过程本质是按程序指令逐步推进程序的链接决定进程的行为4同一程序的多个进程共享程序的代码段只读,到各自拥有数据段独立5关闭进程后程序文件仍存在于磁盘永久存储仍可以运行程序删除程序文件后已运行的进程仍可进行执行是程序的副本在起作用就像Makefile的可执行文件删掉了其他依赖文件仍能执行但是修改了功能之后就执行不了了直到要依赖文件时出错进程的组成进程是由三部分组成。分别为进程控制块PCB、文本段、数据段进程控制块PCBProcess Control Block虚拟地址与物理地址的映射关系程序访问虚拟内存时根据映射规则去找实际的物理内存地址或去找swap交换分区这个分区存于硬盘映射关系swap是一个后备仓库存储物理内存多余的数据文件CPU发送虚拟地址——通过MMU查询页表——将虚拟地址——翻译成实际的物理内存地址Linux系统进程类型三种交互进程需要手动配置的文件如vim编辑器批处理进程需要编译处理的文件如gcc守护进程进程的状态就绪状态也是运行状态