操作系统笔记整理3——进程的描述与控制(2)

2023-11-16

点此链接可跳转到:操作系统笔记整理——目录索引页

参考书籍:《计算机操作系统》第四版 汤小丹等编著

线程的概念

基本属性:资源的拥有者,独立调度单位
引入线程的目的:减少并发执行时的时空开销。因为进程的创建、撤销、切换交费时间。

线程是系统独立调度和分派的基本单位,基本上不拥有系统资源,只需要少量的资源(指令指针IP,寄存器,栈(地址、实参、局部变量,每个线程都有自己的stack)),但可以共享其所属进程所拥有的全部资源。

进程与线程的比较
1.调度单位
  引入线程后,线程是处理机调度的基本单位,进程是资源分配的基本单位,而不再是一个可执行的实体。
  在同一进程中线程的切换不会引起进程的切换,但从一个进程中的线程切换到另一个进程中的线程时,将会引起进程的切换。
2.并发性
  引入线程后,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间也可以并发执行
  多个线程会争夺处理机,在不同的状态之间转换。线程也是一个动态的概念,也有一个从创建到消亡的生命过程,具有动态性。
3.资源分配
  进程是资源分配的单位,一般线程自己不拥有系统资源,但可以访问其隶属进程的资源,
  同一进程中的所有线程都具有相同的地址空间(进程的地址空间)
4.独立性
  同进程的不同线程间的独立性要比不同进程间的独立性低得多
  多个线程共享进程的内存地址空间和资源
5.系统开销
  线程开销小
6.支持多处理机系统
  同进程的不同线程可分配到多个处理机上执行,加快了进程的完成。
在这里插入图片描述

线程的运行状态

执行:线程正获得处理机而运行
就绪:具备了除CPU外的所有资源
阻塞:线程处于暂停执行时的状态

线程有挂起状态吗?
挂起是进程级的概念,一个进程被挂起,它的所有线程也必被挂起,一个进程被激活,它的所有线程也都被激活。

线程控制块TCB:标志线程存在的数据结构,其中包含对线程管理所需要的全部信息

多线程中的进程

拥有系统资源的基本单位
可包括多个线程
不再是一个可执行的实体。所谓进程处于执行状态,实际上是指该进程中的某线程正在执行。

线程的实现

对于通常的进程,都是利用系统调用而进入OS内核
不论是系统进程还是用户进程,不论是进程还是线程,都必须直接或间接得到OS内核的支持

系统调用是内核提供的一组函数,是应用程序和操作系统内核之间的功能接口

内核支持线程KST

内核支持线程由操作系统直接支持,在内核空间中执行线程的创建、调度和管理
优点:当有多个处理机时,一个进程的多个线程可以同时执行。
实现:直接利用系统调用进行线程控制

用户级线程ULT

用户级线程指不需要内核支持而在用户空间中实现的线程
内核并不知道用户级的线程
对于用户级线程其调度仍是以进程为单位
优点:同一进程内的线程切换不需要转换到内核空间,控制简单,调度算法是进程专用的,与操作平台无关。
缺点:当线程执行一个系统调用时,不仅该线程被阻塞,进程内的其他线程也会被阻塞。
实现:不能直接利用系统调用(导致进程中的全部线程阻塞),为了取得内核服务,需借助中间系统

运行时系统:
运行时系统是用于管理和控制线程的函数(过程)的集合,其中包括用于 创建和撤消线程的函数、线程同步和通信的函数以及实现线程调度的函数 等。
运行时系统使用户级线程与内核无关
运行时系统中的所有函数都驻留在用户空间,并作为用户级线程与内核之 间的接口。
当线程需要系统资源时,将该要求传送给运行时系统,由后者通过相应的 系统调用 来获得系统资源

在这里插入图片描述

进程同步与互斥

直接制约关系(进程同步):协调各进程间的工作而相互等待、相互交换信息而产生的制约关系
间接制约关系(进程互斥):进程共享独占型资源而必须互斥执行的间接制约关系

同步与互斥的比较
在这里插入图片描述

临界资源
一次只允许一个进程使用的资源,如打印机、绘图机、变量、数据等,进程之间采取互斥方式实现对临界资源的共享,访问临界资源的那一段代码称为临界区。
临界区
进入区:检查欲访问的临界资源此刻是否被访问
临界区:进程访问临界资源的那段代码
退出区:将临界资源的访问标志恢复为未被访问
剩余区:其余代码
同步机制应遵循的规则
1.空闲让进:临界资源空闲,允许进入
2.忙则等待:临界资源正被访问,其它试图进入临界区的资源必须等待
3.有限等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入死等状态(循环请求)
4.让权等待:当进程不能进入临界区时,应立即释放处理机,以免进程陷入 忙等

没有进入临界区的正在等待的某进程根本无法获得临界资源而进入进程,这种等待是无结果的,是死等状态
没有进入临界区的正在等待的某进程不断的在测试循环代码段中的变量的值,占着处理机而不释放,这是一种忙等状态。
例如:
while S≤0 do no−op
S: = S−1;
只要 S≤0,wait 操作就不断地测试(忙等),因而未做到“让权等待”

信号量机制

信号量是用于表示资源数目或请求使用某一资源的进程个数的整型量。
信号量只能通过初始化和两个标准的原语(P,V 操作)来访问。
信号量机制也称为P、V操作,P 操作也称为 wait 操作,V 操作也称为 signal 操作。

整型信号量:用于表示资源数目的非负整数
记录型信号量:引入阻塞队列,信号量可以取负值
组成:整型变量value:代表资源数量;链表指针L:用于连接所有等待的进程
执行一次P(s)操作:进程请求一个单位的资源,s<0表明资源已分配完,若有请求则阻塞,绝对值表示因申请该资源而被阻塞的进程的数目
执行一次V(s)操作:进程释放一个单位的资源,s<0表明由进程被阻塞,需要唤醒
AND型信号量:一次性分配(释放)所有临界资源
P原语 Swait(S1,S2,…,Sn);V原语 Ssignal(S1,S2,…,Sn)
信号量集:对需要多种资源、每种占用的数目不同、且可分配资源还存在一个临界值时的信号量处理。
进程对信号量Si的测试值为ti(信号量的判断条件,当资源数小于ti时,不予分配),占用值为di(资源的申请量,即Si=Si-di和Si=si+di)
P原语 Swait(S1,t1,d1;…;Sn,tn,dn);
V原语 Ssignal(S1,d1;…;Sn,dn); 释放时不必考虑ti
Swait(S,1,0):可作为一个可控开关(S≥1 时,允许多个进程进入某特定 区;S=0 时禁止任何进程进入)。

例题
设系统有 n(n>2)个进程,且当前不在执行进程调度程序,试考虑下述4种情况,不可能发生的是(A)。
A、没有运行进程,有 2 个就绪进程,n-2 个进程阻塞
B、有 1 个运行进程,没有就绪进程,n-1 个进程阻塞
C、有 1 个运行进程,有 1 个就绪进程,n-2 个进程阻塞
D、有 1 个运行进程,n-1 个就绪进程,没有进程阻塞
解析:没有运行进程且就绪队列非空,处理机不应空闲,而应该调度一个进程来运行,因此A错误


对于两个并发进程,设互斥信号量为 mutex。当 mutex=0 时,则(B)。
A、表示没有进程进入临界区
B、表示有一个进程进入临界区
C、表示有一个进程进入临界区,另一个进程等待进入
D、表示有两个进程进入临界区
解析:A:mutex=1 B:mutex=0 C:mutex=-1 D: 错误

wait、signal操作小结

  • wait、signal 操作必须成对出现,有一个 wait 操作就一定有一个 signal
    操作。
    • 当为互斥操作时,它们同处于同一进程。 当为同步操作时,则不在同一进程中出现。
    • 如果两个 wait 操作相邻,那么它们的顺序至关重要,而两个相邻的
      signal 操作的顺序无关紧要。
  • 一个同步 wait 操作与一个互斥 wait 操作在一起时,同步 wait 操作在互 斥 wait 操作前。
  • 优点:简单,而且表达能力强(用 wait、signal 操作可解决任何同步互 斥问题)。
  • 缺点:不够安全,P、V 操作使用不当会出现死锁。

经典进程同步问题

  • 生产者-消费者问题
  • “哲学家进餐”问题
  • 读者-写者问题

管程机制

基本思想:把访问某种临界资源的所有进程的同步操作都集中起来,构成一个所谓的“秘书”进程(管程),凡是访问临界资源的进程,都需要报告“秘书”,由秘书来实现诸进程的同步
管程的定义:一个数据结构和在该数据结构上能被并发进程所执行的一组操作,这组操作能使进程同步和改变管程中的数据。

进程通信

进程通信:进程间的信息交换
低级通信:信号量机制,效率低,对用户不透明
高级通信:效率高,对用户透明
高级通信机制:共享存储器系统、消息传递系统(直接通信方式:消息缓冲通信;间接通信方式:又称为信箱通信方式)、管道通信系统、客户机-服务器系统

套接字:套接字(Socket)是对网络中进程之间进行双向通信的端点的抽象。一个套接字就是网络中进程通信的一端。套接字是一个通信标识类型的数据结构,包含许多选项,由操作系统内核管理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作系统笔记整理3——进程的描述与控制(2) 的相关文章

  • 6.OS运行机制(补充)

    中断
  • 计算机网路基础 - 一些基本概念与网络结构

    1 基本概念 计算机网络 通信技术 计算机技术 是两项技术紧密结合的产物 通信系统的基础模型 计算机网络 是指将地理位置不同 具有独立功能的多台计算机及其外部设备 通过通信线路连接 在网络操作系统 网络管理软件及网络通信协议的管理和协调下
  • Tomcat7安装及配置教程

    Apache Tomcat7 0安装及配置教程 Apache Tomcat7 0官方网站链接 http tomcat apache org apache tomcat 7 0 73 windows x64 先解压下载的压缩包 然后在bin目
  • Win11微软账号登录不上?Win11登录Microsoft账户出错的解决方法

    Win11微软账号登录不上 近期有部分Win11用户反映在登录微软账号会出现一直转圈 无法登录的情况 这样导致部分功能都不能正常使用了 为此十分令人头疼 那么对于这一情况 有没有什么方法可以有效的解决呢 下面小编教给大家操作方法 大家可以去
  • windows下命令行修改系统时间;修改系统时间的软件

    找了很久 都没有找到 还找了关键词 dos下修改系统时间 因为看到linux下修改系统时间是用hwclock 命令写入主板芯片 而我由于某些原因想自动化修改系统时间 所以找windows下修改系统时间的软件 没有找到 有一个 意天禁止修改系
  • redis主从同步,总是显示master_link_status:down的解决方法

    前几天 在修改一台从节点的redis的监听端口后 重启了下redis 发现master link status 很长时间一直都是down状态 查看了redis日志 发现日志里出现很多的 I O error trying to sync wi
  • 操作系统PV操作及读者写者问题

    操作系统PV操作及读者写者问题 目录 1 信号量 2 P V操作原语可描述为以下式子 3 解释 4 互斥模式原理 5 同步模式原理 6 读者写者问题 1 信号量 PV操作与信号量的处理有关 信号量是表示资源的实体 是一个与队列有关的整型变量
  • Java堆的自动垂直缩放

    多年以来 java一直是贪婪的应用程序的同义词 这种类型的应用程序在晚上打开冰箱并吞噬所有可用资源 直到崩溃 该行为的主要原因是缺乏一种有效的方式来将操作系统在Java堆中分配且不再使用的内存交还给操作系统 However with the
  • 红帽7.9部署telnet服务

    升级ssh 为预防万一提前配置telnet服务 安装软件包 yum install telnet server yum install xinetd xinetd加入开机自启 systemctl enable xinetd service
  • 03LinuxC线程学习之线程共享和非共享

    1 线程共享和非共享 1 1 线程共享资源 1 文件描述符表 由于线程间共享进程间的内容 而文件描述符表在主线程的PCB当中 各个线程可以直接去请求访问 所以线程间通信就不需要像进程那样通过管道这些方式通信 2 每种信号的处理方式 即当某个
  • Linux alien命令

    一 简介 alien是一个用于在各种不同的Linux包格式相互转换的工具 其最常见的用法是将 rpm转换成 deb 或者反过来 二 安装 http toutiao com a6188997768449360129 三 实例 http www
  • Windows运行常用命令(win+R)

    1 calc 启动计算器 2 notepad 打开记事本 3 write 写字板 4 mspaint 画图板 5 snippingtool 截图工具 支持无规则截图 6 mplayer2 简易widnows media player 7 S
  • 内存管理——分页分段

    一 分页存储管理 1 页面与页框 1 页面 将一个进程的逻辑地址空间分成若干个大小相等的片 称为页面或页 并为各页加以编号 2 页框 相应于页面 把内存空间分成和页面相同大小的若干个存储块 称为 物理 块或页框 frame 3 页内碎片 在
  • C#实现FTP文件夹下载功能【转载】

    网上有很多FTP单个文件下载的方法 前段时间需要用到一个FTP文件夹下载的功能 于是找了下网上的相关资料结合MSDN实现了一段FTP文件夹下载的代码 实现的思路主要是通过遍历获得文件夹下的所有文件 当然 文件夹下可能仍然存在文件夹 这样就需
  • 地址映射与共享

    跟踪地址映射过程 1 通过命令 dbg asm启动调试器 在linux 0 11运行test c文件 使其进入死循环 我们的任务就是找到i的地址并将其修改为0使test c程序退出循环 2 在命令行输入crit c使Boch暂停 一般会显示
  • 《OSPF和IS-IS详解》一1.7 独立且平等

    本节书摘来自异步社区 OSPF和IS IS详解 一书中的第1章 第1 7节 作者 美 Jeff Doyle 更多章节内容可以访问云栖社区 异步社区 公众号查看 1 7 独立且平等 OSPF和IS IS详解与TCP IP相比 OSI协议对各国
  • Linux(12):磁盘配额(Quota)与进阶文件系统管理

    磁盘配额 Quota 的应用与实作 Quota 的一般用途 针对 www server 例如 每个人的网页空间的容量限制 针对 mail server 例如 每个人的邮件空间限制 针对 file server 例如 每个人最大的可用网络硬盘
  • I/O设备模型

    I O设备模型 绝大部分的嵌入式系统都包括一些I O Input Outut 输入 输出 设备 例如仪器上的数据显示屏 工业设备上的串口通信 数据采集设备上用于保存数据的Flash或SD卡 以及网络设备的以太网接口等 I O设备模型框架 R
  • 【操作系统xv6】学习记录4-一级页表与二级页表

    占位
  • 【操作系统xv6】学习记录4-一级页表与二级页表

    占位

随机推荐

  • 手机键盘字母组合

    题目 给定一个仅包含数字 2 9 的字符串 返回所有它能表示的字母组合 给出数字到字母的映射如下 与电话按键相同 注意 1 不对应任何字母 示例 输入 23 输出 ad ae af bd be bf cd ce cf 思路 根据输入的数字
  • 安卓逆向-IDA

    Java层代码是对系统层 so层 的封装 所以假如说APP开发者直接调用系统的接口而不是Java层 有些地方我们hook不出来 所以需要深入去了解so层的接口 IDA的使用 按F5可将汇编代码转C JNI OnLoad so层的hook接口
  • maria数据库随机查询_如何安装Maria DB,创建数据库和执行查询

    maria数据库随机查询 你好朋友 在本教程中 我们将看到 1 如何安装Maria DB 2 如何连接到Maria DB 创建数据库和执行查询 1 如何安装Maria DB 1 1 转到以下链接 然后单击 立即下载10 4 12稳定 按钮
  • JNPF低代码开发平台 新版3.4.6 框架源码分享

    每一个传统行业都有机会变成技术驱动的现代行业 这次疫情正在把很多原来的应急技术变成日常技术 数字化进程中最大的受益者不是互联网企业 而是用互联网改造自己的企业 独木不成林 或许JNPF快速开发平台正是意识到了这一点 才忙着织出一张密集的网
  • Python---多线程编程、基于Socket完成服务端程序开发、基于Socket完成客户端程序开发

    1 进程 程序在操作系统内运行 即成为一个运行进程 线程 进程内部可以有多个线程 程序的运行本质上就是由进程内部的线程在实际工作的 并行执行 多个进程同时在运行 即不同的程序同时运行 称之为 多任务并行执行 一个进程内的多个线程同时在运行
  • redis Hyperloglog 过滤重复

    Redis 中对 HyperLogLog 的应用 首先 在 Redis 中 HyperLogLog 是它的一种高级数据结构 提供有包含但不限于下面两条命令 pfadd key value 将 key 对应的一个 value 存入 pfcou
  • 【Linux】详解套接字编程

    文章目录 网络套接字 1 端口号 1 1认识端口号 1 2端口号VS PID 2 TCP与UDP协议 3 网络字节序 4 socket编程 4 1常用接口 4 2sockaddr结构 4 3 socket接口的底层工作 4 4字符串IP V
  • 计算机视觉、模式识别、机器学习常用牛人主页链接

    牛人主页 主页有很多论文代码 Serge Belongie at UC San Diego Antonio Torralba at MIT Alexei Ffros at CMU Ce Liu at Microsoft Research N
  • Python课堂笔记之输出数组中的数字

    将数组中的数字顺序输出
  • PLSQL中如何进行界面的基本使用和编辑。

    打开plsql后点击左上角的钥匙后可以看到最近登录的用户名和实例名称 System ORCL 其中system代表用户名 ORCL代表实例号 服务名 如何调整关键字的颜色 字体呢 选择Tools gt Preference gt 查看左侧栏
  • PAT乙级1023 组个最小数 (20 分)

    1023 组个最小数 20 分 一 问题描述 给定数字 0 9 各若干个 你可以以任意顺序排列这些数字 但必须全部使用 目标是使得最后得到的数尽可能小 注意 0 不能做首位 例如 给定两个 0 两个 1 三个 5 一个 8 我们得到的最小的
  • map 如何使用结构体作为自定义键值

    在使用map时 有时候我们需要自定义键值 才能符合程序的需要 比如我们需要使用自定义的结构体来作为map的键值 struct Test int x int y 这样直接使用的话 在编译时会出问题 1 gt Build started Pro
  • 【MATLAB第32期】【更新中】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理分类问题MATLAB代码实现

    MATLAB第32期 更新中 基于MATLAB的降维 全局敏感性分析 特征排序 数据处理分类问题MATLAB代码实现 持续更新 本文敏感性分析主要分析分类问题 fisher rf arf nca等 版本更新 2023 8 2 增加基于拥挤距
  • JAVA 创建学生类

    1 题目 编写程序实现如下功能 已知学生类有域变量 学号 班号 姓名 性别 年龄 和方法 获得学号 获得班号 获得性别 获得年龄 修改年龄 显示基本信息 定义一组学生对象 并初始化他们的基本信息 然后依次输出 2 源代码 Student j
  • linux自动挂载NTFS格式移动硬盘

    转自 http blog 163 com cmh lj blog static 100812304201252522119264 由于移动硬盘还有不少的资料 刚插入移动硬盘的时候发现只能自动挂载FAT FAT32格式分区 按照以往的经验 安
  • Python学习-----模块5.0(文件管理大师-->os模块)

    目录 前言 1 os getcwd 2 os listdir path 3 os walk path 4 os path exists path 5 os mkdir path 6 os makedirs path exist ok Tru
  • URI和URL、URN的作用和区别

    前言 我们都知道URL是使用Web浏览器等访问Web页面时需要输入的网页地址 而对URI URN的认识可能很少 更有甚者会像我一样 把URI与URL搞混 还以为是一个东西的不同别名 其实URI是URL与URN的超集 URI包括URL和URN
  • htons()是什么

    一个数字0x12345678 左边是高字节 右边是低字节 存储到内存中有两种方式 小端法就是把低字节先存入 内存地址里从低到高就会变成 78 56 34 12 相反大端法就是把高字节先存入 内存地址里从低到高存入的数据旧变成了12 34 5
  • ASP连接Excel的方法

    在ASP中 可以将Excel作为一种轻量级数据库 用于存取数据 下面是一个使用ASP连接Excel的代码实例 首先创建excel数据链接 然后打开连接 在excel中名为 招聘 的表格中查询id 1的一条数据 并打印StuName列的数据
  • 操作系统笔记整理3——进程的描述与控制(2)

    点此链接可跳转到 操作系统笔记整理 目录索引页 参考书籍 计算机操作系统 第四版 汤小丹等编著 文章目录 点此链接可跳转到 操作系统笔记整理 目录索引页 线程的概念 线程的运行状态 多线程中的进程 线程的实现 内核支持线程KST 用户级线程