zoukankan      html  css  js  c++  java
  • 操作系统学习笔记(三)--进程(上)

    笔记一请见 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. 子进程将与父进程不同的程序装入自己的地址空间(相当于自己保留的一部分资源

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

  • 相关阅读:
    【36氪收录】观「招商银行」隐私计算布局的思考
    如何用cmake编译
    docker | Ubuntu16.04安装与卸载docker
    通过删除注册表重新获得软件试用期
    k8s | 重启Kubernetes Pod的几种方式
    2021年终总结(一)
    凡是过往、皆为序章20210917PPT分享
    多厂商容器平台开发系统性总结
    VS2022安装.NetFramework4.0目标包的方法
    C# Winform窗体继承过程中,TableLayoutPanel是不支持继承的
  • 原文地址:https://www.cnblogs.com/PaulingZhou/p/5321344.html
Copyright © 2011-2022 走看看