【简记】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 消息传递系统
同步通信和异步通信
同步式通信也称为阻塞式通信:
发送进程等待,直至接受进程确认收到消息
接受进程等待,直至有个消息到达
异步通信是非阻塞式的:
发送进程发出消息后继续进行其他操作
接收者收到一个有效消息或空消息
- 【简记】Operating System——Process
- 【简记】Operating System——process synchronization
- 【简记】Operating System——process synchronization in Java
- 【简记】Operating System—— distributed system
- 【简记】Operating System——Overview
- 【简记】Operating System——Thread
- 【简记】Operating System——CPU Scheduling
- 【简记】Operating System——Dead Lock
- 【简记】Operating System—— virtual memory
- 【简记】Operating System—— I/O
- 【简记】Operating System—— file system in Linux
- 【简记】Operating System——Linux schedule()(暂)
- 【简记】Operating System——Atomic Transaction Overview
- 【简记】Operating System—— memory management(part 1)
- 【简记】Operating System—— memory management(分页,分段,页表大小计算)
- 【简记】Operating System—— memory management in Linux(暂)
- 【简记】Operating System—— distributed coordination(2PC 3PC)
- Chapter 3 : Process -- Operating System
- 一些MySQL语句
- Python:操作dict时避免出现KeyError的几种方法
- log4j2配置固定内容(IP等)
- JavaScript停止冒泡和阻止浏览器默认行为
- eclipse调试postgresql源码安装教程
- 【简记】Operating System——Process
- You haven't accepted the license agreements of the following SDK components:
- rails问题汇总
- CSS基础
- handler机制的原理
- Axure RP 8.0 用中继器(repeater)完成按钮点击添加下拉菜单和文字
- CRC校验算法
- LeetCode 11. Container With Most Water
- Python 的 with 语句