首页 > 其他分享 >异常控制流

异常控制流

时间:2024-04-14 19:44:06浏览次数:30  
标签:逻辑 一个 控制流 程序 并发 进程 异常

异常(待补充)

异常的类别

异常分为:

  • 中断(interrupt
  • 陷阱(trap
  • 故障(fault
  • 终止 (abort
img

进程

当在系统中运行一个程序,会得到一个假象,好像我们的程序在独占系统资源地执行。事实上,这是通过进程的虚拟化来实现的。

进程的一个经典定义:一个执行中程序的实例。也就是说,每个运行的程序都是一个进程,而每个进程都有自己的上下文。

当用户向shell中输入一个可执行文件的名字,运行程序时,就会创建一个进程。当然,应用程序也可以创建一个进程。

进程之所以重要,是因为进程提供给应用程序两个关键的抽象:

  1. 一个独立的逻辑控制流,通过称为上下文切换的内核机制,使得程序好像在独占地使用处理器。
  2. 一个私有的地址空间,通过虚拟内存,使得程序好像在独占使用内存空间。

逻辑控制流

程序计数器(PC)值的序列称为逻辑控制流,简称逻辑流。通常所说的逻辑流是对程序执行路径的抽象描述

图8-12是一个运行着三个进程的系统。处理器的一个物理控制流被分成三个逻辑流,每个进程一个。如下图所示,三个逻辑流的执行是交错的。也就是说,进程轮流使用处理器。

img

每个进程执行它的流的一部分,然后被抢占(preempted)(暂时挂起),其他进程使用处理器。对于在每个进程的上下文中运行的程序,看上去好像在独占使用CPU资源。

并发流

一个逻辑流的执行在时间上与另外一个流重叠,称为并发流(concurrent flow),这两个流被称为并发地运行。

并发(concurrency): 多个流并发地地执行的一般现象称为并发

多任务:一个进程和其他进程轮流运行的概念称为多任务

时间片:一个进程执行它控制流的一部分的每一个时间段叫做时间片。因此,所任务也叫时间分片。在图8-12中,进程A的流由两个时间片组成。

应当注意的是:如果两个流在时间上重叠,那么它们就是并发的。

并行流:两个流并发地运行在不同的处理器核或者计算机上,将其称为并行流。

私有地址空间

进程为每个程序提供提供他自己的。

标签:逻辑,一个,控制流,程序,并发,进程,异常
From: https://www.cnblogs.com/notob/p/18134236

相关文章

  • 实现自定义注解校验方法参数(AOP+自定义注解+自定义异常+全局异常捕获)
    一、实现目的在编写接口的时候,通常会先对参数进行一次校验,这样业务逻辑代码就略显冗杂,如果可以把校验参数的代码进行统一管理,在方法或者属性上直接添加注解就可以实现参数的校验,就可以提升代码编写的效率。二、实现原理通过自定义注解,注解在入参VO的属性上,设定需要满足的条件,然......
  • scanf 中给 double 用 %f 时赋值异常, float lf, char s 同理
    结论scanf的变量要匹配对应的格式化字符串。floatf,doublelf,charc编译器提示的错误要消除,不消除不能运行;同时尽量消除警告doublefc语言中,给double类型的变量用scanf%f输入赋值时,会发生逻辑上的错误,请看代码#include<stdio.h>intmain(){doublevalue......
  • 一种新的姿势:程序try/catch抛出异常之绕过canary pwn121
    一种新的姿势:程序try/catch抛出异常之绕过canary我前面发了不少关于绕过canary的姿势,先总结一下,现在绕过canary的姿势有泄露,爆破,格式化字符串绕过,多线程劫持TLS绕过,stack_smashing,今天介绍一种新的姿势,就是程序处理异常时,如果异常被上一个函数的catch捕获,那么上个函数的rbp就会......
  • 实用技巧:排查数据异常/数据波动问题,该如何下手?
    前言在我做开发的这些年,让我很头痛的一类问题,不是线上故障,而是数据异常,不知道有没有程序员跟我感同身受。大多数的服务故障都有较为直观的异常日志,再结合产品表象,相对排查起来还有迹可循,但数据异常的原因就太多了,很多时候连报错日志都没有,排查起来简直无从下手。在一个微服务、......
  • tidb 6.1.4 table cache 导致的集群QPS异常问题
    1.问题现象TIDB日志中频繁的刷以下日志:[2024/03/1309:09:40.542+08:00][WARN][cache.go:205]["lockcachedtableforread"][error="previousstatement:updatemysql.table_cache_metasetlock_type='READ',lease=448342830925742080where......
  • OOM异常类型总结
    OOM是什么?英文全称为OutOfMemoryError(内存溢出错误)。当程序发生OOM时,如何去定位导致异常的代码还是挺麻烦的。要检查OOM发生的原因,首先需要了解各种OOM情况下会报的异常信息。这样能缩小排查范围,再结合异常堆栈、heapDump文件、JVM分析工具和业务代码来判断具体是哪些代码导致的......
  • 异常Exception
    基本概念java语言中,把程序执行中发生的不正常情况称为“异常“。(开发过程中的语法错误和逻辑谱误不是异常)执行过程中所发生的异常事件可分为两大类Error(错误):Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资耗尽等严重情况。比如:StackOverflowError[栈溢出]和OOM(out......
  • 【异常】Outlook一直提示正在启动
    一、异常内容二、异常说明安全模式可以帮助您解决Outlook的一些问题,如崩溃、卡顿、无法登录等。三、异常解决要在安全模式下打开Outlook,可以按照以下步骤操作,请确保在进行这些操作之前备份您的Outlook数据,以防万一出现不可预料的问题导致数据丢失。3.1使用运行命令......
  • 【异常】写了很多单元测试用例,但是Sonar上显示的单元测试覆盖率依旧为 0.0%
    一、异常内容写了很多单元测试用例,但是Sonar上显示的单元测试覆盖率依旧为0.0%二、异常说明在SonarQube中显示单元测试覆盖率为0%,通常意味着SonarQube没有正确地接收到测试覆盖率报告。三、异常解决要解决这个问题,您可以按照以下步骤操作:3.1确保测试覆盖率报告已......
  • 【异常】FATAL ERROR in native method: JDWP loaded classes, jvmtiError=JVMTI_ERRO
    一、异常内容IDEA启动微服务之后,提示FATALERRORinnativemethod:JDWPloadedclasses,jvmtiError=JVMTI_ERROR_OUT_OF_MEMORY(110)FATALERRORinnativemethod:JDWPloadedclasses,jvmtiError=JVMTI_ERROR_OUT_OF_MEMORY(110) atsun.misc.Unsafe.defineAnonym......