进程的简单介绍
来源:互联网 发布:raysource mac版下载 编辑:程序博客网 时间:2024/05/16 15:28
进程概念
进程是执行中的程序,进程通常包括进程堆栈段(临时数据,例如函数参数,返回地址和局部变量)和数据段(包括全局变量)。进程还可能包括堆,是在进程运行时期动态分配的内存。
程序不是进程,程序只是被动实体,程序只是存储在磁盘上的一系列指令的集合,进程是活动实体,是运行在CPU上的程序。
进程状态
创建:进程正在被创建
就绪:进程等待分配CPU
运行:指令正在被执行
阻塞:进程等待某个事件的发生
退出:进程执行完毕
进程控制块:包含许多与一个进程相关的信息
进程状态:参见上述
程序计数器:计数器表示进程下一个要执行的指令
CPU寄存器:累加器,索引寄存器,堆栈指针和其他信息寄存器,这些信息都要保存,以便进程恢复后继续执行
CPU调度信息:包括进程优先级,调度队列的指针和其他调度参数
内存管理信息
I/O状态信息:包括分配给进程的I/O设备列表,打开的文件列表
进程调度
进程进入系统时,会被分配到作业队列,该队列包括系统中的所有进程。驻留在内存中的就绪的等待运行的进程保存在就绪队列中。
进程被分配到CPU运行时会发生以下的某个事件
进程发出I/O请求,并被放到I/O队列中
进程创建一个子进程,并等待子进程执行完毕
进程会发生中断而被强制释放到CPU,并放回就绪队列中
调度程序:
进程被放到大容量存储设备的缓冲池中,长期调度程序从该池中选择进程并装入设备以准备执行。
短期调度程序:从准备执行的进程中选择进程执行
两种调度程序的区别在与执行的频率,长期调度程序一般有一到两分钟的间隔,而短期调度程序必须频繁的为CPU选择进程准备执行,一般是毫秒级
有的操作系统(如分时系统)还包括中期调度程序,将放置在内存中的进程移除到缓冲池中。
上下文切换:
将CPU切换到另一个进程需要保存当前进程的状态(一般用PCB表示)并恢复到另一个进程的状态,上下文切换需要额外开销,所以不能频繁执行,
进程创建
进程创建子进程时
子进程一般从操作系统或父进程中获得资源
父进程和子进程并发执行
子进程执行完毕后,父进程方能执行
子进程时父进程的复制品(拥有同样的数据段和代码段)
子进程装入到另一个进程
进程间通信
如果一个进程不能影响其他进程或者被其他进程影响,则该进程是独立的,否则该进程是协作的
进程需要协作的理由
信息共享:多个用户对同样的数据感兴趣
提高运算速度:一个特定任务分成许多子任务以并发执行
模块化
协作进程需要一种进程间通信方式:共享内存,消息传递
共享内存是建立起一块用于两个进程间共享的内存区域,两个进程对该区域中的数据进行访问时,不需要来自内核的访问,就像常规的内存访问一样
消息传递易于实现,适用于较小数量的数据,共享内存不易于实现,但适用于大量数据
- 进程的简单介绍
- Oracle后台进程的功能简单介绍
- Oracle后台进程的功能简单介绍
- 进程和线程的简单介绍
- Android进程调度cgroups的简单介绍
- Android进程调度cgroups的简单介绍
- Linux守护进程的简单介绍
- 介绍并实现简单的守护进程
- 进程的简单介绍与实现
- ORACLE 进程 简单介绍
- Spark集群启动后进程的简单介绍
- Spark集群启动后进程的简单介绍
- Oracle 服务进程-简单介绍
- Linux进程同步简单介绍
- 宿主进程的介绍
- iOS多线程简单介绍(线程,进程)
- 简单的进程编写
- 进程的简单解释
- 提交商店xcode 7 90049 ERROR ITMS-90535 Unexpected 解决办法
- Spark入门_2_LoadSaveData
- Android 命名规范 (提高代码可以读性)
- Linux内核与实现
- 树上倍增求LCA(最近公共祖先)
- 进程的简单介绍
- 如何设置允许某些用户执行sudo的命令
- iOS 导航栏颜色渐变与常用属性
- Python中转到指定目录
- 3-5乘法表问题
- Java中的private、protected、public和default的区别
- h5学习地址
- Java-HttpSession监听
- 柯南《业火的向日葵》观影归来 - 不涉及剧透