【简记】Operating System——Process

来源:互联网 发布:数据库常用sql语句大全 编辑:程序博客网 时间:2024/04/30 12:53

This memo is based on the course of Dr.Li with Operating System as the reference book.

本part重点:

进程概念

  • 3.1 进程概念

3.1 进程概念

进程的三个维度(区分不同的进程):在执行什么程序;用到了哪些数据;处于什么状态

这里写图片描述
注意ready状态和waiting状态的区别
状态的分类各操作系统有区别

===
PCB

每个进程在操作系统内用进程控制块(PCB)来表示。它包含许多与一个特定进程相关的信息。(存放在内存中)
这里写图片描述

  • 进程状态
  • 程序计数器:表示进程要执行的下个指令的地址
  • CPU寄存器:
  • CPU调度信息:包括进程优先级、调度队列的指针和其他调度参数 内存管理信息
  • 记账信息:包括CPU时间、时间界限、记账数据(当使用云计算的时候,可通过相关信息计费)
  • I/O状态信息

3.2 调度队列

进程的调度可以理解成将PCB通过队列进行管理。
这里写图片描述

当进程被分配到CPU并执行时,可能会发生下面几种事件中的一种:

  • 发出一个io请求,并被放到io队列中
  • 可能创建一个新的子进程,并等待其结束
  • 可能会由于中断而强制释放CPU,并被放回就绪队列中

这里写图片描述

时间片:是一种最古老,最简单,最公平且使用最广的算法。每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。

===
3.2.3 上下文切换

q:为什么有上下文切换?
a:程序在执行时为了追求高效率,它希望变量放在CPU寄存器或者内存里面。所以当进程运行时,一定会使用到寄存器。所以当进程切换时,寄存器里的值要先备份,确保进程以后能正确地执行。

这是在引进了mutil-tasking后出现的时间开销。

- 这里写图片描述


Linux下的PCB

  • 优先级(为进程分级)
  • 调度策略:非实时进程,基于优先权的轮转法;实时进程,用先进先出算法;实时进程,用基于优先权的轮转法
  • 所有就绪进程均放置在就绪队列,构成一个双向链表
  • 所有进程(以PCB形式)组成双向链表

3.3 进程操作

3.3.1 进程创建

子进程的资源有多种可能:

  • 子进程是父进程的复制品(具有与父进程相同的程序和数据)(并不是指针指向同一个对象,而是得到一份完全相同的“对象”)
  • 子进程不从父进程共享资源,重新独立申请

这里写图片描述
对于子进程,系统调用fork()返回值为0;对于父进程,返回值为子进程的进程标识符(非0)

===
3.3.2 进程终止

调用exit()请求操作系统删除自身时,进程终止。
可以返回状态值到父进程,所有进程资源会被系统释放。


3.4 进程通信

3.4.1 共享内存系统

生产者-消费者模型

3.4.2 消息传递系统

同步通信和异步通信

同步式通信也称为阻塞式通信:
发送进程等待,直至接受进程确认收到消息
接受进程等待,直至有个消息到达

异步通信是非阻塞式的:
发送进程发出消息后继续进行其他操作
接收者收到一个有效消息或空消息

阅读全文
0 0
原创粉丝点击