(十九)进程——概念引入
来源:互联网 发布:网络商标注册保护 编辑:程序博客网 时间:2024/06/05 19:36
什么是进程?
一个进程是一个程序的一次执行的过程。它和程序不同,程序是静态的,它是一些保存在磁盘上的可执行的代码和数据集合;而进程是一个动态的概念,也是操作系统分配资源的最小单位。
我们知道,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。虽然在不同的操作系统中对进程的控制和管理机制不同,PCB中的信息多少也不一样,但是通常PCB应包含如下一些信息:
1、进程标识符(name): 每个进程都必须有一个唯一的标识符,可以是字符串,也可以是一个数字。UNIX系统中就是一个整型数。在进程创建时由系统赋予。2、进程当前状态(status): 说明进程当前所处的状态。为了管理的方便,系统设计时会将相同的状态的进程组成一个队列,如就绪进程队列,等待进程则要根据等待的事件组成多个等待队列,如等待打印机队列、等待磁盘I/O完成队列等等。3、进程相应的程序和数据地址,以便把PCB与其程序和数据联系起来。4、进程资源清单: 列出所拥有的除CPU外的资源记录,如拥有的I/O设备,打开的文件列表等。5、进程优先级: 进程的优先级反映进程的紧迫程序,通常由用户指定和系统设置。UNIX系统采用用户设置和系统计算相结合的方式确定进程的优先级 。6、CPU现场保护区: 当进程因某种原因不能继续占用CPU时(等待打印机),释放CPU,这时就要将CPU的各种状态信息保护起来,为将来再次得到处理机恢复CPU的各种状态,继续运行。7、进程同步与通信机制: 用于实现进程间互斥、同步和通信所需的信号量等。8、进程所在队列PCB的链接字: 根据进程所处的现行状态,进程相应的PCB参加到不同队列中。PCB链接字指出该进程所在队列中下一个进程PCB的首地址。9、与进程有关的其他信息: 如进程记账信息,进程占用CPU的时间等。
而对于linux而言,在进程的讨论中fork和exec是两个重要的系统调用。fork的作用是根据一个现有的进程复制出一个新进程,原来的进程称为父进程(Parent Process),新进程称为子进程(ChildProcess)。系统中同时运行着很多进程,这些进程都是从最初只有一个进程开始一个一个复制出来的。在Shell下输入命令可以运行一个程序,是因为Shell进程在读取用户输入的命令之后会调用fork复制出一个新的Shell进程,然后新的Shell进程调用exec执行新的程序。
我们知道一个程序可以多次加载到内存,成为同时运行的多个进程,例如可以同时开多个终端窗口运行/bin/bash,另一方面,一个进程在调用exec前后也可以分别执行两个不同的程序,例如在Shell提示符下输入命令ls,首先fork创建子进程,这时子进程仍在执行/bin/bash程序,然后子进程调用exec执行新的程序/bin/ls 。
每个进程前3g的环境:
5 0
- (十九)进程——概念引入
- (二十九)信号——概念
- 进程概念的引入
- 进程概念的引入
- 第二章 引入"进程"概念的原因
- 进程——进程的概念
- 正则表达式(引入概念)
- 引入编译的概念——压缩JavaScript文件
- Linux学习(十九):守护进程
- 动力节点——数组(十九)
- ConfigReader(十九)—— ReadGuideObstructTaskConfig
- ConfigReader(二十九)—— ReadHeroHeadConfig
- Effect(十九)—— SM_TrailFade
- Redis研究(十九)—命令属性
- 设计模式—命令模式(十九)
- 进程管理——基础概念
- 进程调度(概念)
- ——什么是进程?进程的详细概念——
- java 继承中的this
- java带有效期的map
- Android Studio advanced configuration
- mybatis使用idea自动生成的
- Java中为啥要使用16进制
- (十九)进程——概念引入
- Docker实践(五):镜像的概念、管理(查看、下载、删除)
- 深度学习小结以及相关的一些很不错的资料
- Android数据库表升级(添加列),并保留原表中的数据---以后有其他升级操作将会更新该文
- Xcode-利用Configuration实现多个配置
- JAVA基础入门JDK、JRE、JVM等基本概念
- android:scaleType
- 搭建React Native Android开发环境[Windows]
- [LeetCode]62. Unique Paths&&动态规划