对进程的初步描述

一.和进程有关的一些概念

①一个进程就是一个正在执行程序的实例,包括程序计数器,寄存器和变量的当前值。

从概念上说,每个进程拥有它自己的虚拟CPU,当然真实的CPU在各个进程之间来回切换。

②在某一瞬间,CPU只能运行一个进程,但在一秒钟时间他可以运行多个进程,这一就产生了并行的错觉,

通产这就是人们所说的伪并行。

③在伪并行状态下CPU在进程之间的快速切换称为多道程序设计。

④一个进程是某种类型的一个活动,他有程序,输入,输出以及状态,单个处理器可以被若干个状态进程共享,它使用某种调度算法

决定何时停止一个进程的工作,并转而为另外一个进程提供服务,值得注意的是一个进程如果运行了2遍则算作2个进程。

二.进程的创建

㈠有4种主要的方式创建进程

①系统初始化

②执行了正在运行的进程所调用的进程创建了系统调用

③用户请求创建一个新的进程

④一个批处理作业的初始化

㈡一些和进程创建有关的概念

①停留在后台诸如电子邮件,web页面,新闻,打印之类活动的进程称为守护进程

②在UNIX系统中,只有一个系统调用可以用来创建新进程:fork,这个系统调用会创建一个与调用进程相同的副本

③在windows中,情形正好相反,一个Win32函数调用CreatProcess既处理进程的创建,也负责把正确的程序装入新的进程。

④在UNIX系统中,子进程的的初始地址空间是父进程的一个副本,但这里涉及两个不同的地址空间,不可写的内存区是共享的

⑤在windows中,从一开始父进程的地址空间和子进程的地址空间就是不同的

三.进程的终止

进程通常有4种方式终止

①正常退出

②出错退出(自愿的)

③严重错误(非自愿)

④被其他进程杀死

多数进程是由于完成了他们的工作而终止,

Unix中该系统调用是exit,而在windows中相关的系统调用时ExitProcess

Unix中结束进程的系统调用是Kill,Win32对应的函数是TerminateProcess

四.进程的层次结构

某些系统中,当进程创建了另一个进程后,父进程和子进程就以某种形式继续保持关联,

子进程可以创建更多的进程,但注意的进程只有一个父进程,这与有性繁殖不同;

在Unix中,进程和他所有的子女以及后代共同组成了一个进程组,当用户从键盘发出一个信号时,该信号被送到当前与键盘相关的进程

组中的所有成员(他们通常是当前窗口创建的所有活动进程),每个进程可以分别捕获该信号,忽略该信号,忽略该信号或采取默认动作,

即该信号被杀死)

这里还有一个例子,可以用来说明进程的层次的作用,考虑UNIX在启动时如何初始化自己,一个称为Init的特殊进程出现在启动的映像

中,当它开始运行时,读入一个说明终端数量的文件,接着,为每个终端创建一个新的进程,这些进程等待用户的登录,如果有一个用户登

录成功,该登录进程就准备一个shell准备接受命令.所有接受的这些命令会启动更多的进程,以此类推,这样,在整个系统中都是以Init

为根的一颗树.

相反Windows中没有进程的层次概念,所有的进程都是地位相同的,唯一类似进程层次的暗示是在创建进程的时候,父进程得到一个特别的令牌(称为句柄),该句柄可以用来控制子进程,但是它有权把这个令牌传送给某个其他的进程,这样就不存在进程层次了,在Unix中,进程就不能剥夺其子女的"继承权".

五.进程的状态

①运行态

②就绪态

③堵塞态

1.运行--->堵塞---->进程为等待输入而堵塞

2.运行--->就绪---->调度程序选择另一个进程

3.就绪--->运行---->调度程序选择这个进程

4.堵塞--->就绪---->出现有效的输入

操作系统最底层的是调度程序,在它上面有许多进程,所有关于中断处理,启动进程和停止进程的具体细节都隐藏在调度程序中,那么是这样么?实际上,调度程序是一段非常短小的程序.操作系统的其他部分被简单的组织成进程的形式,不过很少有真实的系统是以这样理想的方式构造的.

六.进程的实现

(1)为了实现进程模型,操作系统维护着一张表(一个结构数组),即进程表(Process Table).

每个进程占用一个进程表项.(有的作者称这为进程控制块)

该表项包含了进程状态的重要信息,包括程序计数器,堆栈指针,内存分配状况,所打开的文件的状态,帐号和调度信息,以及其他在进程

中由运行态转换到阻塞态时必须保存的信息,从而保证该进程随后能再次启动,就像从未被中断过一样.

典型的进程表项中的一些字段

进程管理

存储管理

文件管理

寄存器

正文段指针

根目录

程序状态字

数据段指针

工作目录

程序计数器

堆栈段指针

文件描述符

堆栈指针

用户ID

进程状态

组ID

优先级

调度参数

进程ID

父进程 父进程

进程组

信号

进程开始时间

使用CPU时间

子进程的CPU时间

下次报警时间

(2)在了解了进程表后,就可以对单个(或者每一个)CPU上如何维持多个顺序进程做出更多的描述

与每一个IO关联的是一个称为中断向量(interrupt vector)的位置(靠近内存底部的固定区域),它包括中断服务程序的入口地址.假设

当多个磁盘中断发生时,用户进程3正在运行,则中断硬件将程序计数器,程序状态字,有时还有一个或多个寄存器压入堆栈,计算机随机

跳转到中断所指示的地址,这些是硬件完成的所有操作,然后软件,特别是中断服务例程就接管剩余的工作.

所有的中断程序都从保存寄存器开始,对于当前进程而言,通常实在进程表项中,随后,会从堆栈中删除由硬件中断机制存入堆栈的那部

分信息,并将堆栈指针指向一个由进程处理程序所使用的临时堆栈,一些诸如保存寄存器值和设置堆栈指针等操作,无法用C语言这类高

级语言描述,所以这些操作通过一个短小的汇编语言例程来完成,通常该例程可以供所有的中断使用,因为无论中断是怎么样引起的,有

关保存寄存器的工作则完全是一样的.

当该例程结束后,他调用一个C过程处理某个特别定的中断类型剩下的工作,.在完成有关工作之后,大概就会使某些进程就绪,接着调用

调度程序,决定随后该运行哪个进程,随后将控制转给一段汇编代码,为当前的进程装入寄存器值以及内存映射并启动该进程运行,

当该进程结束时,操作系统显示一个提示符并等待新的命令,一旦它接到新命令,就能装入新的程序进入内存,覆盖前一个程序.

(3)中断发生后操作系统底层所做的一些事情

1.硬件压入堆栈程序计数器等.

2.硬件从中断向量装入新的程序计数器.

3.汇编语言过程保存寄存器值.

4.汇编语言过程设置新的堆栈,

5.C中断服务例程运行(典型的读和缓冲输入)

6.调度程序决定下一个将运行的进程

7.汇编语言过程开始运行新的当前进程

七.多道程序设计模型

设进程得到IO操作的时间与其停留在内存中的时间的比为P.当内存中同时有n个进程时(n也被称为多道程设计的道数),

CPU的利用率 = 1 - P的n次方

并行:进程和IO同步

并发:多个程序同步执行

一个计算的若干操作必须按照严格的先后次序顺序地执行,这类计算过程就是程序的顺序执行过程

(1)多道程序设计应该考虑到的3个问题:

1.存储保护

主存储器中同时存放了多个作业的程序,为了避免相互干扰,必须提供必要的手段使得主存储器中的各道程序只能访问自己的区域

2.程序浮动

程序可以随机的从主存储器的一个区域移动到另一个区域,程序被移动后,仍然不丝毫不影响他的执行,这种技术称为程序浮动

3.资源的分配和调度

(2)并行工作倒数与系统效率不成正比

1.主存储器空间大小限制了可同时装入的程序数量.

2.外围设备的数量也是一个制约条件

3.多个程序同时要求使用同一资源的情况也会经常发生

进程的一些基本的概念的笔记......备份....

有关进程的一些基本概念相关推荐

  1. TCP与UDP协议初步学习——网络环境中分布式进程通信的基本概念

    TCP与UDP协议初步学习--网络环境中分布式进程通信的基本概念 一.单机系统中进程通信方法 进程和进程通信是操作系统中最基本的概念,首先通过回忆操作系统课程中,关于单击系统中进程和进程通信的问题描述 ...

  2. 【进程线程】1. 概念和区别

    进程和线程--1. 概念与区别 一.概念 1. 进程 进程本质上是正在执行的一个程序,是对运行时程序的封装,每个进程会具备一个地址空间,在该空间内可以进行读写.该地址空间中存放可执行程序.程序的数据. ...

  3. C++11多线程第一篇:并发基本概念及实现,进程、线程基本概念

    文章目录 1.并发基本概念及实现,进程.线程基本概念 1.1 并发.进程.线程的基本概念和综述 1.1.1 并发.并行 1.1.2 可执行程序 1.1.3 进程 1.1.4 线程 1.1.5 程序.进 ...

  4. 进程和线程的概念、区别及进程线程间通信

    进程与线程的概念,以及为什么要有进程线程,其中有什么区别,他们各自又是怎么同步的? 1. 基本概念: 进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发: 线程是进程 ...

  5. 进程的介绍(概念、作用)

    想要实现多任务可以使用进程来完成,进程是实现多任务的一种方式. 1. 进程的概念 一个正在运行的程序或者软件就是一个进程,它是操作系统进行资源分配的基本单位,也就是说每启动一个进程,操作系统都会给其分 ...

  6. 第一节 并发基础概念及实现、进程、线程基本概念

    1.并发.进程.线程的基本概念和综述 并发.线程.进程要求必须掌握!!!! 1.1 并发 概念:两个或更多的任务(独立的活动)同时发生(进行):一个程序同时执行多个独立的任务: 以往的计算机通常是单核 ...

  7. 【Linux 内核】进程管理 ( 内核线程概念 | 内核线程、普通进程、用户线程 | 内核线程与普通进程区别 | 内核线程主要用途 | 内核线程创建函数 kernel_thread 源码 )

    文章目录 一.内核线程概念 二.内核线程.普通进程.用户线程 三.内核线程.普通进程区别 四.内核线程主要用途 五.内核线程创建函数 kernel_thread 源码 一.内核线程概念 直接 由 Li ...

  8. 【Java 并发编程】线程简介 ( 进程与线程 | 并发概念 | 线程间通信 | Java 并发 3 特性 )

    文章目录 一.进程与线程 二.并发 三.线程间通信 四.Java 并发 3 特性 一.进程与线程 最开始是没有线程这个概念的 , 一个应用程序就是一个进程 , 应用程序运行时 , 如果还要处理与用户交 ...

  9. 进程和线程的概念、区别和联系

    进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂. 进程与线程的一个简单解释 在这 ...

最新文章

  1. SUBSTRING函數用法
  2. Django框架视图类
  3. python编程语言是什么-什么是编程语言,什么是Python解释器
  4. Codeforces 797C Minimal string【贪心】
  5. sizeof计算类的大小
  6. Python Day28
  7. 小学奥数 7649 我家的门牌号 python
  8. 关于 web.config impersonate 帐号模拟
  9. 想成为一个怎样的人?
  10. C/C++[codeup 1397,2020]查找
  11. EXCEL 代码大全
  12. 你知道如何提升JSON.stringify()的性能吗?
  13. Visual Studio 调试时右侧诊断工具窗口如何显示
  14. 如何在软件UI设计中运用格式塔心理学5项法则?
  15. matlab汽车牌的识别,matlab车牌号识别
  16. WindowsPhone8 应用开发学习笔记(一)
  17. CMD(命令提示符)命令大全及网络安全课程中所用到的命令
  18. BZOJ 1123: [POI2008]BLO
  19. 如何剪切视频,只截取视频中间的一部分
  20. c语言课程设计人事管理,C语言课程设计-人事管理系统(65页).doc

热门文章

  1. 交通大数据应用细分_盈海科技 | 交通大数据可视化“掘金”数据价值
  2. 安徽阜阳计算机高中学校排名,安徽阜阳排名靠前的三大高中,有争议?2020年高考成绩说话!...
  3. css React 单行省略和多行省略
  4. uniapp /deep/设置uni-app组件样式时 h5生效 小程序失效问题解决
  5. JS之 if语句函数 对接事件动作 函数更改css css对接需要换妆的区id或class
  6. 转-测试用例-常用控件
  7. Beam概念学习系列之Pipeline Runners
  8. 如何调整自定义标签样式
  9. 模型和控制器-起步阶段
  10. idhttp.post方式 调用datasnap rest 远程方法