进程模型
2015-03-23 16:50
148 查看
(一)多道程序设计
从系统允许多个程序同时进入CPU那一天开始,我们才有了进程,这个对CPU资源的抽象。我们把这种多个程序同时运行在CPU的情况叫做多道程序。其优点不必赘述,举个例子,单一程序设计时,好比公交车上每次只能坐一个人,多道以后,就能坐多个人,有上有下。也是基于这样的设计思路,才有现在的各种貌似高端的技术。多道,跟中断,DMA,SPOOLer一并,被称为计算机操作系统发展史上里程碑一样的创造。
在某个数据集合上,具有独立功能的程序运行过程,叫做进程。英文里有许多叫法(process task job)当然换汤不换药,不同时代的产物罢了。进程的出现,解决了程序并发执行时对系统资源共享的描述问题,同时顺路解决了程序执行时动态特征的描述问题。虽然是抽象出来的概念,但作为程序员,那东西是存在的。
进程控制的目的是为进程完成生命周期指明方向,保驾护航。系统创建了进程,一定要负责到底。从进程创建,撤销,到状态转换中的阻塞,唤醒,挂起,激活,同时还有进程间优先级的控制。这些控制指令都是通过“原语”实现的,这个词不出意外最先是在数据库基础知识中学到的,对滴,不能被打断,打断就抛弃结果。对于系统,没有被打断的可能性。
此处加一个小插曲:进程的创建fork()的执行过程
1.为子进程分配一个空闲进程描述符;
2.赋予子进程唯一标示符pid;
3.以一次一页的方式复制父进程的地址空间(这是Unix的实现方式,linux引入COW技术);
4.子进程获得父进程共享资源的指针;
5.子进程进入就绪态,加入调度队列;
6.子进程返回0,向父进程返回pid。
系统进程vs用户进程,系统进程优先于用户进程
前台进程vs后台进程,前后台进程有优先级的区别,前台往往高于后台
计算密集vsI/O密集,决定了调度策略,是系统设计时讨论的话题
进程的层级结构有树形(unix)和平行结构(windows)
就像开车得有方向盘,管理得有管理的可控对象,对于进程来讲,PCB就是进程的方向盘,他是一个专门的数据结构,记录了进程的外部特征,描述了进程的运动过程,标记了进程在整个生命周期中的活动,成为了系统感知进程存在的唯一标识。这个数据结构中包含了三个方面的内容:
进程管理,内存管理,文件管理
看上去就很容易理解了,OS的大部分功能通过进程来实现,所以进程中必须包含实现操作系统功能的“方向盘”。这些内容中,多数是记录了管理相应对象的主指针,以及指向不同管理对象描述块的指针,比如文件管理,指向文件描述块,就是我们常说的FCB等。
在linux系统中,TCB被具体实现为task_struct其中包含了进程调度 pid,信号处理,状态管理,进程队列指针,定时控制,信号量管理,上下文切换,文件系统管理,内存管理等等。这个数据结构能看懂,看完,你的Linux内核分析工作就可以开始了。
内存管理模块会在进程创建的时候分配地址空间,这些空间被进程划分为四大部分:
PCB占用,用户栈空间,私有用户空间(代码),共享空间。其中,PCB占用的部分又划分为PCB号,进程状态,进程控制信息
从系统允许多个程序同时进入CPU那一天开始,我们才有了进程,这个对CPU资源的抽象。我们把这种多个程序同时运行在CPU的情况叫做多道程序。其优点不必赘述,举个例子,单一程序设计时,好比公交车上每次只能坐一个人,多道以后,就能坐多个人,有上有下。也是基于这样的设计思路,才有现在的各种貌似高端的技术。多道,跟中断,DMA,SPOOLer一并,被称为计算机操作系统发展史上里程碑一样的创造。
(二)进程定义
在某个数据集合上,具有独立功能的程序运行过程,叫做进程。英文里有许多叫法(process task job)当然换汤不换药,不同时代的产物罢了。进程的出现,解决了程序并发执行时对系统资源共享的描述问题,同时顺路解决了程序执行时动态特征的描述问题。虽然是抽象出来的概念,但作为程序员,那东西是存在的。
(三)进程控制操作
进程控制的目的是为进程完成生命周期指明方向,保驾护航。系统创建了进程,一定要负责到底。从进程创建,撤销,到状态转换中的阻塞,唤醒,挂起,激活,同时还有进程间优先级的控制。这些控制指令都是通过“原语”实现的,这个词不出意外最先是在数据库基础知识中学到的,对滴,不能被打断,打断就抛弃结果。对于系统,没有被打断的可能性。此处加一个小插曲:进程的创建fork()的执行过程
1.为子进程分配一个空闲进程描述符;
2.赋予子进程唯一标示符pid;
3.以一次一页的方式复制父进程的地址空间(这是Unix的实现方式,linux引入COW技术);
4.子进程获得父进程共享资源的指针;
5.子进程进入就绪态,加入调度队列;
6.子进程返回0,向父进程返回pid。
(四)进程分类及进程层次结构
系统进程vs用户进程,系统进程优先于用户进程前台进程vs后台进程,前后台进程有优先级的区别,前台往往高于后台
计算密集vsI/O密集,决定了调度策略,是系统设计时讨论的话题
进程的层级结构有树形(unix)和平行结构(windows)
六)进程控制块
就像开车得有方向盘,管理得有管理的可控对象,对于进程来讲,PCB就是进程的方向盘,他是一个专门的数据结构,记录了进程的外部特征,描述了进程的运动过程,标记了进程在整个生命周期中的活动,成为了系统感知进程存在的唯一标识。这个数据结构中包含了三个方面的内容:进程管理,内存管理,文件管理
看上去就很容易理解了,OS的大部分功能通过进程来实现,所以进程中必须包含实现操作系统功能的“方向盘”。这些内容中,多数是记录了管理相应对象的主指针,以及指向不同管理对象描述块的指针,比如文件管理,指向文件描述块,就是我们常说的FCB等。
在linux系统中,TCB被具体实现为task_struct其中包含了进程调度 pid,信号处理,状态管理,进程队列指针,定时控制,信号量管理,上下文切换,文件系统管理,内存管理等等。这个数据结构能看懂,看完,你的Linux内核分析工作就可以开始了。
(七)进程虚拟地址空间
内存管理模块会在进程创建的时候分配地址空间,这些空间被进程划分为四大部分:PCB占用,用户栈空间,私有用户空间(代码),共享空间。其中,PCB占用的部分又划分为PCB号,进程状态,进程控制信息
相关文章推荐
- Python3之进程生产者消费者模型(important)
- Chrome源码剖析、上--多线程模型、进程通信、进程模型
- 进程的三态模型
- 进程与线程模型
- 谈谈dpdk应用层包处理程序的多进程和多线程模型选择时的若干考虑
- 进程、线程调度模型及其在Windows2000中的实现<ZT>
- nginx多进程模型之配置热加载
- 父进程非阻塞回收子进程(适用LINUX下C语言的client-server模型)
- 进程、线程调度模型及其在Windows2000中的实现
- Linux网络编程多进程模型
- Chrome源码剖析、上--多线程模型、进程通信、进程模型
- 朴素的UNIX之-进程/线程模型
- 进程服务器模型和线程服务器模型
- Nginx源码学习(三) nginx进程模型
- Chromium与CEF的多进程模型及相关參数
- 这个模型用来测试并发服务器,是否会产生僵尸进程
- 图解Nginx-Nginx进程模型1
- nginx架构-进程模型事件模型
- Android应用程序模型:应用程序,任务,进程,线程
- python 多进程提升模型效率