笔记一请见 http://blog.csdn.net/u012277682/article/details/50971514
笔记二请见 http://blog.csdn.net/u012592313/article/details/50978072
最近开始学习操作系统原理这门课程,特将学习笔记整理成技术博客的形式发表,希望能给大家的操作系统学习带来帮助。同时盼望大家能对文章评论,大家一起多多交流,共同进步!
本篇文章大致内容为:
- 进程概念(Process Concept)
- 进程调度(Process Scheduling)
- 进程操作(Operatios on Processes)
- 进程间协同(Cooperating Processes)
- 进程间通信(Interprocess Communication)
进程概念:程序的执行称为进程 -- a program in execution
具体定义: 进程是具有独立功能的程序,关于某个数据集合的一次运行过程。
进程与程序区别(Comparison of Process & Program):
- 程序是静态的,是一组代码的集合;进程是动态的,具有其声明周期。
- 进程具有生命周期(创建、存活,撤销);程序的存在是永久的。
- 进程=程序+数据+PCB(process control block,进程控制块)。
- 一个程序可以对应多个进程。
- 一个进程可以包含多个程序。
一个进程包含了:
- Program counter & register;
- Stach -contains temporary data(function parameters, return address, local variables);
- Data section(数据段) - global variables;
- Heap(堆) - memory dynamically allocated at runtime.
进程的状态 三个基本状态:ready, waiting, running 两个临时状态:new, terminated
下图为进程之间的状态切换机制
进程控制块(PCB, process control block)
功能:
-
- Process state 进程状况
- Program count 程序计数器
- CPU register 上次进程中断时CPU内寄存器的值
- CPU scheduling information
- Memory-management information
- Accounting information
- I/O status informatios
PCB时有结构的存储器,其位于操作系统区,包含系统执行的所有信息; 系统通过PCB感知进程, PCB是进程存在的唯一标识!!!
分割线
__________________________________________________________________________________________________
2016.3.27 更新
进程调度(Process Stable)
调度队列分三种:
- 作业队列(Job queue):批处理系统才有,系统中进程的集合(后备队列),还未经过高级调度-->未进内存
- 就绪队列(Ready queue):已被高级调度,进入内存,等待执行
- 设备队列(Device queue):等待输入输出设备的集合
进程在不同的队列中转移(Processes migrate among the various queues)
调度分类:
- 长程调度(Long-term scheduler, or job scheduler) high-level
- 从后备队列中选择满足调度算法条件的作业创建PCB分配内存,放入就绪队列中
- 从磁盘到内存
- 调度频度低
2. 短程调度(Short-term scheduler, or CPU scheduler) low-level
- 从就绪队列中选择进程放在CPU上执行
- 调度频繁
3. 中程调度:某些长时间不需CPU执行的进程,将一部分从内存移动到磁盘中,只留下一部分在内存中。
短程调度很频繁(milliseconds),长程调度不频繁(seconds, minutes)。
长程调度控制了多道调度的道数。
进程可分为:
- I/O型进程(输入输出型,I/O-bound process),在输入输出上花费更多时间
- CPU型进程(CPU-bound process),在CPU上花费更多时间
意义:进行高级调度时两类进程搭配选择。
上下文切换(Context Switch):中断现场的保存和恢复,在Unix中被称作上下文切换
- save the state of the old process
- load the saved state for the new process
上下文切换的时间被称为系统消耗(overhead)
进程创建(Process Creation)
父进程创建子进程
-可依次创建
-形成一棵树(进程树),进程树反映了进程与进程之间的创建与被创建的关系
注:前驱图,DAG,directed acyclic graph,有向无环图,反映了进程间执行次序的关系 http://baike.baidu.com/view/1990000.htm
三种类型的资源共享:
1. 父进程与子进程共享所有资源
2. 子进程共享父进程的资源子集(大部分系统采用)
3. 父进程与子进程之间不共享任何资源
执行:
1. 父进程与子进程之间并发进行 concurrently
2. 父进程等待子进程执行结束后执行
地址空间分配:
1. 子进程复制父进程的地址空间(相当于共享的一部分资源)
2. 子进程将与父进程不同的程序装入自己的地址空间(相当于自己保留的一部分资源)
下图为父进程创建子进程后等待子进程执行完毕再执行的流程图: