程序计数器

单片机常用名词解释与常用逻辑电路

↘锁芯ラ 提交于 2020-04-06 16:52:45
MCS-51系列单片机 MCS-51系列单片机分为两大系列,即51子系列与52子系列。 51子系列:基本型,根据片内ROM的配置,对应的芯片为8031、8051、8751、8951 52子系列:增强型,根据片内ROM的配置,对应的芯片为8032、8052、8752、8952 这两大系列单片机的主要硬件特性如下表: 从上表中可以看到,8031、8031、8032、80C32片内是没有ROM的,对应着上表看,我们可以发现,51系列的单片机的RAM大小为128B,52系列的RAM大小为256B,51系列的计数器为两个16位的,52系列的计数器为三个16位计数器。51系列的中断源为5个,52系列的中断源为6个。 8051与80C51的区别: 80C51单片机是在8051的基础上发展起来的,也就是说在单片机的发展过程中是先有8051,然后才有80C51的。 8051单片机与80C51单片机从外形看是完全一样的,其指令系统、引脚信号、总线等完全一致(完全兼容),也就是说在8051下开发的软件完全可以在80C51上应用,反过来,在89C51下开发的软件也可以在8051上应用。这两种单片机是完全可移植的。 既然这两种单片机外形及内部结构都一样,那它们之间的主要差别在哪里呢? 8051与80C51单片机的主要差别就在于芯片的制造工艺上。80C51的制造工艺是在8051基础上进行了改进。

java虚拟机内存区域详解

拈花ヽ惹草 提交于 2020-03-09 05:31:56
Java虚拟机在执行java程序的过程中,会将它所管理的内存区域划分为若干个不同的数据区域。主要分为以下几个区域: 方法区:和堆一样,为多个线程共享,它用于存储类信息、常量、静态常量和即时编译后的代码等数据。 虚拟机栈:用于存储局部变量、操作栈、动态链接、方法出口等信息。 本地方法栈:本地方法栈和Java虚拟机栈发挥的作用非常相似,主要区别是Java虚拟机栈执行的是Java方法服务,而本地方法栈执行Native方法服务(通常用C编写)。 堆:是被所有线程共享的最大的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。 程序计数器:当前线程所执行的字节码的行号指示器,程序计数器是线程隔离的,每一个线程在工作的时候都有一个独立的计数器。程序计数器的特性 (1)程序计数器具有线程隔离性 (2)程序计数器占用的内存空间非常小,可以忽略不计 (3)程序计数器是java虚拟机规范中唯一一个没有规定任何OutofMemeryError的区域 (4)程序执行的时候,程序计数器是有值的,其记录的是程序正在执行的字节码的地址 (5)执行native本地方法时,程序计数器的值为空。原因是native方法是java通过jni调用本地C/C++库来实现,非java字节码实现,所以无法统计 来源: https://www.cnblogs.com

Java虚拟机

穿精又带淫゛_ 提交于 2020-02-03 12:25:42
jvm的框架结构:jvm在运行时会产生一个运行时数据区,里面包含了方法区,Java堆,虚拟机栈,本地方法栈,程序计数器等5个模块,其中,Java堆主要用来存放Java对象实例(Java虚拟机规范写:class,instances,arrays),另外,Java堆会划分多个线程私有分配缓冲区来进行内存管理。Java堆被垃圾收集器(GC)所管理,就是说Java堆里面的内存会被GC自动管理。 来源: CSDN 作者: 过圣诞节的小马哥 链接: https://blog.csdn.net/qq_40236645/article/details/90237272

性能监视器- Performance Monitor

时间秒杀一切 提交于 2020-01-29 13:53:27
转载: http://kms.lenovots.com/kb/article.php?id=7045 Windows 性能监视器的基本指标(CPU,内存,硬盘参数) 作为一个系统工程师来说,要看懂监控的数据至关重要,关系着优化和分析出现的问题,因此,今天给出Windows 性能监视器的一些基本指标(CPU,内存,硬盘参数),希望对大家将来优化和分析问题提供帮忙。 Windows -Processor 指标名称 指标描述 指标范围 指标单位 CPU利用率 (% Processor Time) % Processor Time指处理器执行非闲置线程时间的百分比。这个计数器设计成用来作为处理器活动的主要指示器。它通过在每个时间间隔中衡量处理器用于执行闲置处理线程的时间,并且用100%减去该值得出。可将其视为范例间隔用于做有用工作的百分比。 根据应用系统情况,在80%±5%范围内波动为宜。过低,则服务器CPU利用率不高;过高,则CPU可能成为系统的处理瓶颈。 % 中断率 (Interrupts/sec.) 每秒钟设备中断处理器的次数。在完成一个任务或需要注意时,装置会发出中断讯号给处理器。可以产生中断的装置包括系统定时器、鼠标、数据通讯联机、网络卡以及其它的外部装置。在中断过程中,一般的执行绪执行将被暂停,而且一个中断可以使处理器切换到另一个具有较高优先等级的执行绪

JVM 的内存模型

折月煮酒 提交于 2020-01-26 18:56:17
为什么要了解? 很多做Android开发的同学会问,我们为什么要了解这个呢?首先移动端资源有限,我们了解jvm的内存模型,便于我们更好的管理客户端的内存。 什么是JVM? java代码的执行过程如下图: 运行时数据区可分为:方法区、堆、虚拟机栈、本地方法栈、程序计数器五个部分。 概述 方法区:线程共享数据,存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。 堆:线程共享数据,主要是存放对象实例和数组。内部会划分出多个线程私有的分配缓冲区(Thread Local Allocation Buffer, TLAB)。可以位于物理上不连续的空间,但是逻辑上要连续。 虚拟机栈:线程隔离数据,每个方法在执行时都会床创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行结束,就对应着一个栈帧从虚拟机栈中入栈到出栈的过程。 本地方法栈:线程隔离数据,区别于 Java 虚拟机栈的是,Java 虚拟机栈为虚拟机执行 Java 方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的 Native 方法服务。 程序计数器:线程隔离数据,字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成。 1.方法区  

Java技术与Java虚拟机

时光怂恿深爱的人放手 提交于 2020-01-26 00:21:12
Java技术与Java虚拟机   说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成: Java编程语言 、 Java类文件格式 、 Java虚拟机 和 Java应用程序接口 (Java API)。它们的关系如下图所示: 图1 Java四个方面的关系   运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件)。最后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释执行,或者是被 即时代码发生器 有选择的转换成机器码执行。从上图也可以看出Java平台由Java虚拟机和Java应用程序接口搭建,Java语言则是进入这个平台的通道,用Java语言编写并编译的程序可以运行在这个平台上。这个平台的结构如下图所示: 图2 Java平台结构图   在Java平台的结构中, 可以看出,Java虚拟机(JVM) 处在核心的位置,是程序与 底层操作系统 和 硬件 无关的关键。它的下方是 移植接口 ,移植接口由两部分组成: 适配器 和 Java操作系统 , 其中依赖于平台的部分称为适配器;JVM 通过移植接口在具体的平台和操作系统上实现;在JVM 的上方是Java的基本类库和扩展类库以及它们的API, 利用Java API编写的应用程序(application) 和小程序(Java

进程和线程

你。 提交于 2020-01-24 02:50:38
1. 进程: (1)进程模型:一个进程就是一个程序的执行实例,程序是静态的,进程是动态的。一个进程有一个地址空间和一个控制线程,其中地址空间包含有:程序计数器、寄存器、变量的当前值。当一个进程被挂起时,进程的物理程序计数器值被保存在该进程的程序计数器中。下次进程运行时,再从程序计数器中取出计数值装入内存的程序计数器中。 (2)进程的创建:在unix系统中,创建新进程的方式只有一个:fork()函数,即创建一个子进程。子进程是父进程的一个副本,和父进程拥有相同的存储映像、相同的环境字符串和相同的打开文件。但是,子进程和父进程有各自不同的地址空间,不同的PID。通过系统调用execve()函数,可以替换地址空间中的程序段。( ps:子进程和父进程拥有不同的地址空间,但地址空间中的内容相同 ) (3)进程的三种状态:运行态、就绪态、阻塞态。( ps:系统调用pause()可以使进程进入阻塞态 ) (4)多进程的实现:操作系统维护着一张进程表,每个进程占用一个表项。该表项包含着进程状态的重要信息,包括:寄存器、程序计数器、堆栈指针、内存分配状况、打开文件的状态、调度信息、从运行态转为就绪态或阻塞态时所保存的信息(程序计数器值和寄存器中的相关信息)。当内核切换进程时,会将旧进程的信息装入进程表,保证下次该进程能正确启动,然后载入新进程的程序计数器和寄存器等相应信息到内存中,从而切换到新进程。

Java内存区域-堆,程序计数器

倖福魔咒の 提交于 2020-01-16 19:58:36
Jvm运行时数据区域-堆,程序计数器 Java堆 堆:Java堆是内存中最大的的一块。Java堆是所有线程共享的的一块内存区域,此内存唯一的目的存放对象实例。几乎所有对象的实例都在这里分配内存。这一点在Java虚拟机规范中描述:所有的对象实例以及数据都要在堆上分配,但是随着JIT编译器的发展与逃逸分析技术逐渐成熟,栈上分配,标量替换优化技术将会导致一下微妙的变化发生,所有的对象都分配在堆上也渐渐的变得不是那么绝对了。 Java堆是垃圾收集器管理的主要区域(GC堆),现在采用分代收集算法,Java堆分为新生代,和老年代;再细致一点有Eden空间,From Survivor空间,To Survivor空间等。从内存分配的角度来看,线程共享的Java堆中可能划分出多个线程私有的分配缓冲区(Thread Local Allocation Buffer,TLAB)。无论如何划分,都与存放的内容无关,无论哪个区域,存放任然都是对象实例,进一步划分的目的是为了更好的回收内存,或者更快的分配内存。 根据Java虚拟机规定,Java堆可以物理不连续的内存空间中,只要逻辑上是连续的即可,就像我们的磁盘空间一样。在实现是,既可以实现固定大小的,也可以是可扩展的,不过当前主流的虚拟机都是按照可扩展实现的(t通过-Xmx和-Xms控制(有遇到过))。如果在堆中没有内存完成实例分配,并且无法在扩展时

c#判断程序是否运行

余生长醉 提交于 2020-01-08 03:55:20
string name = "aaa";//程序进程名称 int ProgressCount = 0123456;//判断进程是否运行的标识 Process[] prc = Process.GetProcesses(); foreach(Process pr in prc) //遍历整个进程 { if (name == pr.ProcessName) //如果进程存在 { ProgressCount = 0; //计数器清空 return; } } if(ProgressCount!=0)//如果计数器不为0,说名所指定程序没有运行 { try { //调用外部程序 Process MyProcess = new Process(); MyProcess.StartInfo.FileName = "d:/aaa.exe"; MyProcess.StartInfo.Verb = "Open"; MyProcess.StartInfo.CreateNoWindow = true; MyProcess.Start(); } catch(Exception d) { MessageBox.Show(d.Message+"","提示!!!!"); } } else { MessageBox.Show("对不起,本地已经有系统正在运行!\n.","提示",MessageBoxButtons

Java 内存区域详解

纵饮孤独 提交于 2020-01-02 00:30:02
一.概述 因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。 二.运行时数据区域 Java 虚拟机在执行 Java 程序的过程中会把它管理的 内存划分成若干个不同的数据区域 。JDK. 1.8 和之前的版本略有不同。 JDK1.8之前: JDK1.8: 线程私有的:程序计数器、虚拟机栈、本地方法栈 线程共享的:堆、方法区、直接内存(非运行时数据区的一部分) JDK8 将方法区从运行时数据区移到直接内存,并改名为元空间 1.程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。 字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完成。 另外, 为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各线程之间计数器互不影响,独立存储,我们称这类内存区域为“线程私有”的内存。 从上面的介绍中我们知道程序计数器主要有两个作用: 字节码解释器通过改变程序计数器来 依次读取指令 ,从而实现代码的流程控制,如:顺序执行、选择、循环、异常处理。 在多线程的情况下,程序计数器 用于记录当前线程执行的位置