操作系统学习笔记(三)--进程(上)

笔记一请见 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):

  1. 程序是静态的,是一组代码的集合;进程是动态的,具有其声明周期。
  2. 进程具有生命周期(创建、存活,撤销);程序的存在是永久的。
  3. 进程=程序+数据+PCB(process control block,进程控制块)。
  4. 一个程序可以对应多个进程。
  5. 一个进程可以包含多个程序。

一个进程包含了:

  1. Program counter & register;
  2. Stach -contains temporary data(function parameters, return address, local variables);
  3. Data section(数据段) - global variables;
  4. 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)

调度队列分三种:

  1. 作业队列(Job queue):批处理系统才有,系统中进程的集合(后备队列),还未经过高级调度-->未进内存
  2. 就绪队列(Ready queue):已被高级调度,进入内存,等待执行
  3. 设备队列(Device queue):等待输入输出设备的集合

进程在不同的队列中转移(Processes migrate among the various queues)

调度分类:

  1. 长程调度(Long-term scheduler, or job scheduler) high-level
  • 从后备队列中选择满足调度算法条件的作业创建PCB分配内存,放入就绪队列中
  • 从磁盘到内存
  • 调度频度低

  2. 短程调度(Short-term scheduler, or CPU scheduler) low-level

  • 从就绪队列中选择进程放在CPU上执行
  • 调度频繁

  3. 中程调度:某些长时间不需CPU执行的进程,将一部分从内存移动到磁盘中,只留下一部分在内存中。

短程调度很频繁(milliseconds),长程调度不频繁(seconds, minutes)。

长程调度控制了多道调度的道数。

进程可分为:

  1. I/O型进程(输入输出型,I/O-bound process),在输入输出上花费更多时间
  2. 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. 子进程将与父进程不同的程序装入自己的地址空间(相当于自己保留的一部分资源

下图为父进程创建子进程后等待子进程执行完毕再执行的流程图:

原文地址:https://www.cnblogs.com/PaulingZhou/p/5321344.html