首页 > 其他分享 > 计算机操作系统秋招学习第一轮(三)

计算机操作系统秋招学习第一轮(三)

时间:2022-08-15 01:13:37浏览次数:69  
标签:第一轮 操作系统 状态 阻塞 进程 秋招 CPU 运行

主要参考书籍:《CSAPP》、《图解操作系统》、《MOS现代操作系统》

本篇着重学习线程与进程

进程

小林coding对进程的解释:代码以二进制的文件形式存储到内存当中,CPU读取并执行其中的每一条指令,其中CPU正在运行的每一条指令就是进程

CSAPP中对进程的解释:进程的经典定义是一个执行中的程序实例 , 系统中每个程序都运行在进程的上下文(context)中。
上下文是指程序运行时的环境:包括存在内存中的代码和数据、它的栈、寄存器、环境变量、程序计数器等等。

MOS中对进程的解释:MOS对进程的由来和定义以及概念讲解得很详细。容易理解,但也导致难以记忆。进程是人类抽象出来的。它与程序有细微的区别。

用简单的公式去记忆进程: 代码(运行中)+ 上下文(环境) = 进程

进程模型

我们经常也把进程模型简称为进程。

比较底层的东西:进程的实现

这里应该拓展出来为操作系统中进程模型的实现

进程的特点(有什么状态)

在我们初步知道进程是什么之后(也许,毕竟概念真的很难记,而且这东西很抽象),我们需要进一步地知道进程在做些什么,他有什么样的特点。

在《MOS》中先提到了如何控制进程,然后才提到进程的状态
而在《图解系统》中则先提到进程的状态

因为进程是并发的<单核中>(不是并行)

进程的运作规律

运行 -- 暂停 -- 运行

进程三大基本状态

如果没有状态没法控制的,而且有一个物理原因(只有一个核,一个核同时只能跑一个进程 ),必须要切换才能完成多进程工作

运行态

运行态就是:该时刻进程实际占用CPU

就绪态

就绪态就是:进程所有条件都准备好,随时等待CPU可用就马上进入占用

阻塞态

阻塞态就是:因为某些条件还没准备好,等待外部事件发生使条件准备好。

状态的轮转关系

使用进程模型使得我们易于想象系统内部的操作状况。一些进程正在运行执行用户键入命令所对应的程序。另一些进程是系统的一部分,它们的任务是完成下列一些工作:比如,执行文件服务请求、管理磁盘驱动器和磁带机的运行细节等。当发生一个磁盘中断时,系统会做出决定,停止运行当前进程,转而运行磁盘进程,该进程在此之前因等待中断而处于阻塞态。这样,我们就可以不再考虑中断,而只是考虑用户进程、磁盘进程、终端进程等。这些进程在等待时总是处于阻塞状态。在已经读入磁盘或键入字符后,等待它们的进程就被解除阻塞,并成为可调度运行的进程。 ------------------

也许我们一直觉得操作系统深不可测,无法知道内部如何运转,但在理解了进程模型之后,一切变得明朗起来。

进程完整状态流转

事实上,进程还存在更加完整、完善的状态流转(补充了解)

创建状态
结束状态

完整状态变迁图:

其实图中也还不算完全完善,不过基本已经齐全(比如从运行态到就绪态还可能是被抢占) 这取决于操作系统的调度机制

挂起状态

起因:如果有大量的阻塞态的进程在等待,每个进程有自己的信息(占着系统的内存甚至是缓存),但内存终归是有限的,我们只能退而求其次,将进程的信息存到外存当中(外部存储--硬盘)。

这时,进程不占据实际的物理内存空间。 我们称之为挂起状态。

阻塞挂起状态
就绪挂起状态

好耶! 又有新图

进程的层次结构

我们都知道进程有着父子之类的亲密关系
但更进一步的是我们即便知道了,很多题目我们依然做不出来,因为不清楚细节

比如说:

父进程创建了子进程后,子进程是否拥有新的内存页表,会否引发CPU中断(记不太清那些题目了)...
可以专门收集一下。

习题:《现代操作系统》 第二章的全部习题
用A4纸写下答案 若有编程题便用编程实现并记录

可以结合第十章的LInux的进程一起学习

标签:第一轮,操作系统,状态,阻塞,进程,秋招,CPU,运行
From: https://www.cnblogs.com/black-worrior-2000/p/16586847.html

相关文章

  • c++xx 秋招学习STL库(三)
    主要参考:本篇学习无序关联式容器无序关联式容器种类无序容器功能unordered_map存储键值对<key,value>类型的元素,其中各个键值对键的值不允许重复,且该......
  • c++xx 秋招学习STL库(二)
    Map、Set、Unordered_map类与数据结构中所描述的一致,数组作为顺序型ADT,在STL库中vector也被称为序列式容器同时还存在着一些无序型容器我们本节主要就学习这类无序......
  • c++xx 秋招学习STL库 (一)【vector】
    c++xx秋招学习STL库(一)vector类主要针对一些编程时使用发现的一些问题与思考进行记录Vector的初始化一维数组//usingnamespacestd;vector<int>int_vec;vector<......
  • 周回顾并发编程与数据库08.14:UDP协议、操作系统发展史、相关名词、进程、线程、验证py
    目录UDP协议操作系统发展史相关名词进程线程锁信号量event事件池协程数据库MySQLSQL与NoSQL内容UDP协议Internet协议集支持一个无连接的传输协议,该协议......
  • vmware下 安装 最新版 ubuntu server 操作系统(二)
    1.vmware安装Linux配置完成 VMware中操作步骤:https://www.cnblogs.com/sunbenbao/p/16558584.html2.点击启动虚拟机后操作:默认选中“TryorInstallUbuntu......
  • 操作系统
    操作系统什么是操作系统操作系统是计算机系统中最基本的系统软件。操作系统能够管理计算机硬件与软件的资源,合理组织、调度计算机工作与资源的分配,进而为用户和其他软件......