批处理系统与分时系统

批处理系统:一批一批的处理任务的一种系统,用户将一批作业提交给操作系统后就不再干预,有操作系统控制它们自行运行。(不具备交互能力)

分时系统:多个用户使用同一台计算机,多个程序分时(分时间片)共享硬件和软件资源。

分时操作系统将CPU的时间划分为若干个片段,称为时间片,操作系统以时间片为单位,轮流为每个终端用户。

TIPS:

①批处理系统没有人机交互;

②分时系统允许多个用户同时使用;

③批处理系统中允许程序长时间地占用CPU,而分时系统不允许。

Process Concept (进程概念)

CPU的角度理解进程Process:进程是CPU资源分配的最小单位

CPU速度很快,只有寄存器能够追的上它的脚步,内存和别的挂在各总线上的设备完全是望其项背。当有多个任务要执行时,不管怎么样的策略,在CPU看来就是轮流着来执行一段程序代码,实现一个功能的过程介绍,当得到CPU的时候,相关的资源(显卡、外设等)必须也已经就位,然后CPU开始执行。

这里除了CPU以外所有的就构成了这个程序的执行环境,也就是我们所定义的程序上下文。

当这个程序执行完,或者分配给他的CPU执行时间用完,那它就要被切换出去,等待下一次CPU的光临。在被切换出去的最后一步工作就是保存程序上下文,因为这个是下次CPU光临的运行环境,必须保存。
在CPU看来所有的任务都是一个一个的轮流执行的,具体的轮流方法:先加载程序A的上下文,然后开始执行A保存程序A的上下文,调入下一个要执行的程序B的程序上下文,然后开始执行B,保存程序B的上下文
进程是系统进行资源分配和调度的单位( T )
进程是CPU调度的最小单位                  ( F) 

内存中的进程

text(文本段):存放程序的二进制代码 ,其长度固定,不会动态变化。

Data section(数据段):分为全局数据区和常量区

全局数据区:存放全局变量和静态数据,即使是函数内部的静态局部变量,均存放于全局数据区。程序结束后由OS释放

常量区:所有常量,程序结束后由OS释放

Heap(堆):由程序员分配和释放,如果程序员不释放,程序结束时可能由OS释放,存放:new, malloc产生的动态数据

Stack(栈):由编译器自动分配和释放,存放:1.函数内部的局部变量     2.函数的参数值。

程序是被动执行的,进程是主动的(当可执行文件加载到内存中时,程序成为进程

一个程序可以是多个进程(考虑多个用户执行同一个程序

同一个程序不同的数据

不同的程序同一个进程

进程的三维概念:程序、数据、状态。

KEY:

As a process executes, it changes state(状态)

new (新建):  The process is being created

进程在创建时需要申请一个空白PCB,向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态

running (运行):  Instructions are being executed

waiting (等待或被阻塞):  The process is waiting for some event to occur

ready  (就绪):  The process is waiting to be assigned to a processor (万事俱备 随时随地可以被CPU调度)

terminated (终止):  The process has finished execution

1. 进程从就绪状态进入运行状态的原因可能是( A )

A. 被选中占有CPU

B. 等待某一事件发生

C. 等待的事件已经发生

D. 时间片用完

2.当一个进程处于( B )状态时,称为等待或阻塞状态

A.正在等待CPU

B.正在等待合作进程的一个消息

C.正在等待分配给它一个时间片

D.正等待进入内存

3.以下哪种是不可能的进程状态变化( D )

A. 阻塞 – 就绪

B. 执行 – 阻塞

C. 执行 – 就绪

D. 阻塞 – 执行

进程与线程

Process Control Block(PCB,进程控制块,包含控制和管理进程的信息,完成资源分配)

PCB:进程信息的仓库,这些信息在进程与进程之间是不同的

一个进程只能有一个PCB,多个进程不能共享PCB,进程和PCB之间是一对一的关系。

Context Switch (上下文切换)

When CPU switches to another process, the system must save the state of the old process and load the saved state for the new process via a context switch 

(当CPU切换到另一个进程时,系统必须保存旧进程的状态,并通过上下文切换为新进程加载保存的状态)

Context-switch time is overhead(额外开销); the system does no useful work while switching

The more complex the OS and the PCB è the longer the context switch

(切换时,系统不会执行任何有用的操作。操作系统和PCB越复杂,上下文切换的时间就越长)

上下文切换速度因机器而不同(影响CPU运行的效率 切换上下文时CPU处于idle空闲状态)

它依赖于内存速度、必须复制的寄存器的数量、是否有特殊指令,一般需几毫秒。

Process Scheduling (进程调度)

进程调度的目的是使CPU的效率最大化,CPU中不能同时运行两个进程,其他的进程只能等待。

最大限度地提高CPU利用率,快速将进程切换到CPU上以实现分时

进程调度器从可用进程中选择下一个在CPU上执行的进程

用于单处理器系统

永远不会有超过一个正在运行的进程。

如果有更多的进程,其余的进程将不得不等待CPU释放并重新调度。

维护进程的调度队列

作业队列–系统中所有进程的集合

就绪队列–驻留在主存中、准备好并等待执行的所有进程的集合

设备队列–等待I/O设备的一组进程等待特定I/O设备的进程列表称为设备队列。每个设备都有自己的设备队列。假设进程向一个共享设备(如磁盘)发送I/O请求,由于系统有许多进程,磁盘可能会忙于其他进程的I/O请求,因此该进程可能需要等待磁盘。

进程在不同的队列之间迁移

Short-term scheduler  (短期调度) or CPU scheduler  
短期调度,又称为进程调度、低级调度或微观调度
短期调度是从就绪队列里调度进程到处理机中
这也是通常所说的调度,一般情况下使用最多的就是短期调度。
主要任务:按照某种策略和算法CPU分配给一个处于就绪状态的进程,分为抢占式和非抢占式。

Long-term scheduler  (长期调度) or job scheduler

选那些进程应该被放入ready queue 

对于批处理系统,进程更多地是被提交,而不是马上执行。这些进程被放到大容量存储设备(通常为磁盘)的缓冲池中,保存在那里以便以后执行。长期调度程序或作业调度程序从该池中选择进程。长期调度从批作业中选出一些进入就绪队列。

长期调度,又称为作业调度或高级调度,这种调度将已进入系统并处于后备状态的作业按某种算法选择一个或一批,为其建立进程,并进入主机,当该作业执行完毕时,还负责回收系统资源。
批处理系统中,需要有作业调度的过程,以便将它们分批地装入内存,在分时系统和实时系统中,通常不需要长期调度。它的频率比较低,主要用来控制内存中进程的数量。

不是所有的系统都会用到长期调度,批处理系统会用到,实时操作系统不会用到长期调度。

Medium-term scheduler(中期调度程序)

它的核心思想是能将进程从内存或从CPU竞争中移出,从而降低多道程序设计的程度,之后进程能被重新调入内存,并从中断处继续执行,这种交换的操作可以调整进程在内存中的存在数量和时机。
其主要任务是按照给定的原则和策略,将处于外存交换区中的就绪状态或等待状态的进程调入内存或把处于内存就绪状态或内存等待状态的进程交换到外存交换区

Operations on Processes

fork()  系统调用创建新进程

exec()  在fork()之后使用系统调用,用新程序替换进程的内存空间

fork的妙用

fork调用的奇妙之处:它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:

1)在父进程中,fork返回新创建子进程的进程ID;

2)在子进程中,fork返回0;

3)如果出现错误,fork返回一个负值;

1.为什么fork()返回的是两个值?

fork函数是一个API函数,最终会发生异常处理函数系统调用system call。两次分别为底层的一次system fork外加操作系统的一次调用。操作系统先调用谁和系统以及内存占用有关(不好定论)。

【Process Termination】(终止进程)

(译文)

主动方式:

进程执行最后一条语句,然后使用exit()系统调用请求操作系统删除它。

将状态数据从子级返回到父级(通过wait())

进程的资源由操作系统分配

被动方式:

父进程可以使用abort()系统调用终止子进程的执行。这样做的一些原因:

子项已超出分配的资源

不再需要分配给孩子的任务

父级正在退出,如果父级终止,操作系统不允许子级继续

一些操作系统,比如虚拟机虚拟内存系统:

如果其父级已终止,则不允许子级存在。如果进程终止,则其所有子进程也必须终止。我们称之为级联终止。终止由操作系统启动。

*l希望接收以逗号分隔的参数列表,列表以NULL指针作为结束标志

*p是一个以NULL结尾的字符串数组指针,函数可以DOS的PATH变量查找子程序文件

问题:

分别是如何影响count值的?

父进程等待子进程执行,结果又会怎样?

如果fork调用返回值是一个大于0的数,这个数代表了什么?(表示当前是父进程)

既然进程是fork出来的,那第一个进程是怎么来的?(自己打出来的)

子进程为什么没有继续创建进程?(子进程fork过来PC=5,从此开始执行)

子进程和父进程谁先执行?为什么?(并发执行)

进程和程序的本质区别是(  D ) 。

A. 前者分时使用CPU,后者独占CPU

B. 前者是执行程序,后者是源代码

C. 前者在一个文件中,后者在多个文件中

D.前者为动态的,后者为静态的

参考答案:A

 进程的基本特称

实验总结

 

【Interprocess Communication】(IPC,进程间通信)

进程间不允许互相访问内存,所以用系统调用函数开辟一块共享的内存区域(仅仅建立时运用系统调用),读写时由程序员控制。该共享内存在创建它的这个进程的地址空间,其它想使用该共享内存区域的进程必须让它(这个共享内存区域)与自己的进程空间有关联。

shmget(得到一个共享内存标识符或创建一个共享内存对象)

shmat(把共享内存区对象映射到调用进程的地址空间)

父进程向shaaddr写入信息 strcpy(shm_addr, "Hello world! this message is father process write!");

【Chapter 3: Process】相关推荐

  1. 朝颜的计算机网络学习笔记【Chapter 3.数据链路层】

    课程来源: 「湖科大」计算机网络微课堂视频传送门 Chapter 3.数据链路层 3.1 数据链路层概述 基本概念 链路(Link):就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结 ...

  2. 《乔布斯传》英文原著重点词汇笔记(十二)【 chapter ten eleven】

    The Mac is Born: You Say You Want a Revolution 之 Jef Raskin's Baby(宝贝) 1. thesis                     ...

  3. 朝颜的计算机网络学习笔记【Chapter 6.应用层】

    课程来源: 「湖科大」计算机网络微课堂视频传送门 Chapter 6.应用层 6.1 应用层概述 应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分. ...

  4. Docker启动失败提示【exec user process caused: exec format error】

    Docker启动失败提示[exec user process caused: exec format error] Docker版本不支持Arm64,可在网络上查找ARM64的版本

  5. maven依赖拉不下来Process terminated【解决方法之一】

    Process terminated:对于这个错误导致的原因可能很多,网上也有很多种方案,我今天说其中一种方案. 看一下maven的配置文件 :apache-maven-3.6.3\conf\sett ...

  6. 【图文详解】HBase 的数据模型与架构原理详解

    HBase 简介 https://hbase.apache.org/ HBase, Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩. 实时读写的分布式开源 NoSQL 数据库, ...

  7. 计算机英语介绍项目,【精品文档】614关于计算机专业Vue.js应用程序设计开发介绍简介概述的毕业设计论文英文英语外文文献翻译成品资料:了解Vue.js项目和工具(中英文双语对照)...

    1.本文是中英对照毕业设计论文外文文献翻译,下载后直接可用!省去您找文献.pdf整理成word以及翻译的时间,一辈子也就一次的事!文献引用作者出处信息:Freeman, Adam Pro Vue.js ...

  8. 我确实不知道如何使用计算机,【图片】从零开始的计算机教程:看不懂我就打死你【红石电路吧】_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 =============================================================== [###====== [# ...

  9. Builder (建造者) — 【面向对象设计模式学习】

    Builder (建造者) - [面向对象设计模式学习] By CityWalker 2010年3月19日 Intent Separate the construction of a complex ...

最新文章

  1. 所有类是object的子类,但是又可以继承一个其他类解析
  2. MyBatis 和 Spring 中的 23 种设计模式,真香,拿去用吧!
  3. 圆圈在动吗?这个骗过人眼的动图火了,LeCun解释原理:和CNN对抗攻击类似
  4. 第五章5.1 strace
  5. oracle实现自增字段
  6. Java Vector与ArrayList的区别
  7. java每秒向mysql写一条记录_【Java】mysql一条记录在高并发场景下读写?
  8. 转:【图文教程】创建Xcode自定义模板
  9. 无刷新上传Excel后利用JQuery AJAX 显示进度条的实现方式
  10. jpg , png 图片转SVG格式(资源篇)
  11. MySQL 瓶颈分析及优化
  12. JFreeChart画折线图
  13. 转《针对不同版本的ie调用不同css样式》
  14. qq2006导致alt-tab切换失灵,还不知道怎么报告和解决(英文win2000)
  15. 网络基础四 DNS DHCP 路由 FTP
  16. C#winform省市县联动,以及有的县是空值时显示异常的处理
  17. 控制输入框的:选择,复制,粘贴功能。
  18. Mac M1安装ffmpeg报错DependencyNotInstalled: Found neither the ffmpeg nor avconv executables.
  19. oracle序列不连续,Oracle不连续的值,如何实现查找上一条、下一条
  20. python画二维折线图_python画折线图的程序

热门文章

  1. 典型环节matlab仿真,实验一典型环节的matlab仿真
  2. centos7修改主机名的方法
  3. cat 021 解析
  4. Ceph分布式存储实践应用之Ceph性能调优
  5. OpenCV + CPP 系列(卌一)图像特征匹配( FLANN 匹配)
  6. VUE DIFF算法之双端DIFF
  7. nuc970 nfs启动配置问题
  8. 盲沟低比?不不不,是芒果的笔,今天学一下分布式文件存储数据库MongoDB。
  9. 【转】字节跳动(抖音)收购VR眼镜厂商Pico的划时代意义
  10. 洛谷10月月赛Round.1| P3400 仓鼠窝[单调栈]