运存

Linux服务器优化

风格不统一 提交于 2020-02-19 16:33:25
1 cpu性能查看 1、查看物理cpu个数: cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l 2、查看每个物理cpu中的core个数: cat /proc/cpuinfo | grep "cpu cores" | wc -l 3、逻辑cpu的个数: cat /proc/cpuinfo | grep "processor" | wc -l 物理cpu个数*核数=逻辑cpu个数(不支持超线程技术的情况下) 1.2 内存查看 1、查看内存使用情况: #free -m total used free shared buffers cached Mem: 3949 2519 1430 0 189 1619 -/+ buffers/cache: 710 3239 Swap: 3576 0 3576 total:内存总数 used:已经使用的内存数 free:空闲内存数 shared:多个进程共享的内存总额 buffers/cache:(已用)的内存数,即used-buffers-cached buffers/cache:(可用)的内存数,即free+buffers+cached Buffer Cache用于针对磁盘块的读写; Page Cache用于针对文件inode的读写,这些Cache能有效地缩短I/O系统调用的时间

该内存不能为“read”或“written”

落花浮王杯 提交于 2020-02-15 10:38:00
最近电脑老出现这样的提示,于是在网上找了很多解决办法,找了找觉得这篇文章最全面 于是分享一下~~~~ 使用Windows操作系统的人有时会遇到这样的错误信息: 「“0X????????”指令引用的“0x00000000”内存,该内存不能为“read”或“written”」,然后应用程序被关闭。 如果去请教一些「高手」,得到的回答往往是「Windows就是这样不稳定」之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的一般原因。 一、应用程序没有检查内存分配失败 程序需要一块内存用以储存数据时,就需要使用操作系统提供的「功能函数」来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是「动态内存分配」,内存地址也就是编程中的「光标」。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值「0」已不表示新启用的游标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的「健壮性」。若应用程序没有检查这个错误,它就会按照「思维惯性」认为这个值是给它分配的可用游标,继续在之后的执行中使用这块内存

【操作系统】第五章虚存技术

匆匆过客 提交于 2020-02-07 05:02:34
5.1虚拟内存的起因 理想中的存储器: 更大,更快,更便宜的非易性存储器 硬盘的速度远远的慢于内存的执行。 磁带比硬盘的存储容量更加的庞大。 现有的物理内存掉电之后数据还是会丢失的。 以上设计了三种技术: 1)手动覆盖技术:只把指令和数据保存在内存中 2)自动交换技术:将程序导出内存到硬盘上 3)虚拟内存技术(前两种是虚拟内存还没出现的情况下诞生的):以更小的力度把数据导出导入到内存中来,充分的利用了内存空间的手段 5.2覆盖技术 一、覆盖技术的基础 目标: 是在较小的可用内存中运行较大(相对而言的)的程序。常用与多道程序系统,与分区存储管理配合使用。 原理: 把程序按照其自身的逻辑结构,划分为若干个功能上相对独立的程序模块,那些不会同时执行的模块共享同一块内存区域,按时间先后来运行。 必要部分(常用功能)的代码和数据常驻内存; 可选部分(不常用内存)在其他程序模块中实现,平时存放在外存中,在需要用到时才装入内存; 不存在调用关系的模块不必同时装入到内存,从而可以相互覆盖,既这些模块共有一个分区。 二、应用例子 例子一: 1)bc是对等的,相互之间不会调用,所以分在一个区;A调用b的时候,c是不会执行的,所以只需要将b放在内存中即可。 2)def也是对等的,相互之间也不会调用,所以也分在一个区;当C调用e的时候,df通用是不会被调用的,所以也只需要将e放在内存中即可。 例子二:

操作系统:虚拟内存

一个人想着一个人 提交于 2020-02-07 00:12:28
覆盖技术 目标 在较小的可用内存中运行较大的程序。常用于多道程序系统,与分区存储管理配合使用。 原理 把程序按照其自身的逻辑结构,划分为若干个功能上相对独立的程序模块,那些不会同时执行的模块共享同一块内存区域,按时间先后来运行。 必要部分(常用功能)的代码和数据常驻内存。---固定区:调入后就不再调出(除非运行结束)。 可选部分(不常用功能)存放在外存中,在需要用到时才装入内存。 ---覆盖区:需要用到时调入内存,用不到时调出内存。 缺点 由程序员声明覆盖结果,费时费力,增加了编程的难度。 覆盖模块,从外存装入内存,实际上是以时间换空间。 交换技术 目标 多道程序在内存中时,让正在运行的程序或需要运行的程序获得更多的资源。 原理 可将暂时不运行的程序送到外存,从而获得空间内存空间。 操作系统把一个进程的整个地址空间的内存保存到外存中(换出),而将外存中的某个进程的地址空间读入到内存中(换入)。换入换出的内容的大小为整个程序的地址空间。 交换时机的确定:只有当内存空间不够或有不够的危险时换出。 换出的进程存放在什么位置:文件区(离散分配方式) + 对换区(连续分配方式)---被换出的进程存放在对换区。 覆盖与交换的区别 覆盖在同一个进程或程序中,交换是在不同进程之间作业的。 交换发生在内存中程序与管理程序或操作系统之间,覆盖发生在运行程序的内部。 虚拟内存技术 目标 像覆盖技术那样

作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!

大城市里の小女人 提交于 2020-02-03 02:54:44
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊! 我现在告诉你,这些知识很有用,尤其对于作为程序员的你,这些是让你写代码的过程中让你不仅知其然,还知其所以然的知识,了解了这些,对你的编程只有大大的好处。 以上三篇文章可谓都是干货中的干货,看了一定让你功力大增😎 今天再来分享一下关于内存和磁盘的有关重要知识,如此一来, CPU,内存和磁盘 这比较重要的几个货,我们就都有所了解了。 关于磁盘,你了解多少? 可能大伙听到的比较多的是硬盘,毕竟这是我们每天使用电脑接触比较多的一个概念,再加上现在买电脑基本上从之前的机械硬盘都过渡到了现在的固态硬盘。 所以大家对硬盘这个名词不陌生,相对的,对磁盘的概念似乎就有点陌生了 啥是磁盘 首先记住,磁盘是个总的,也就是说 磁盘包括硬盘 ,那么还要知道磁盘是干嘛的, 磁盘最主要的功能就是保存电脑里面的信息 ,但是磁盘又有一些分类,不过我们首先要知道,在计算机中,保存信息的有这么两类: 第一:内部存储器

操作系统--虚拟内存学习

穿精又带淫゛_ 提交于 2020-02-02 05:49:00
内存的发展流程: 一.嵌入式实时操作系统 表现 :在早期的单片机上,程序运行在物理内存中,也就是说,程序在运行时直接访问到物理地址,在程序运行开始,将全部程序加载到内存中,所有的数据地址和程序地址就此固定。 在运行多任务系统时,比较直接的办法也是直接为每个任务分配各自需要的内存空间,比如总内存为100M,task1需要40M,task2需要50M,task3需要20M,那么最简单的办法是给task1分配40M,给task2分配50M,而task3,不好意思,内存不够了,不允许运行 弊端 : 地址空间不隔离 所有程序都可以直接访问物理内存,那么task1就可以直接访问task2的地址,这就给了一些恶意程序机会来进行一些非法操作,即使是非恶意但是有bug的程序,也可能会导致其他任务无法运行,这对于需要安全稳定的的计算机环境的用户是不能容忍的。 内存使用效率极低 由于没有有效的内存管理机制,通常在一个程序执行时,将整个程序装载进内存中运行,如果我们要运行task3,内存已经不够了,其实系统完全可以将暂时没有运行的task2先装入磁盘中,将task3装载到内存,当需要运行task2时,再将task2换回,虽然牺牲了一些执行效率,但总归是可以支持更多程序运行。 程序地址空间不确定 需要了解的是程序在编译阶段生成的可执行文件中符号地址是连续且确定的,即使实现了内存数据与磁盘的交换

linux服务器性能查看

谁说胖子不能爱 提交于 2020-01-29 09:00:45
1.1 cpu性能查看 1、查看物理cpu个数: cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l 2、查看每个物理cpu中的core个数: cat /proc/cpuinfo |grep "cpu cores"|wc -l 3、逻辑cpu的个数: cat /proc/cpuinfo |grep "processor"|wc -l 物理cpu个数*核数=逻辑cpu个数(不支持超线程技术的情况下) 1.2 内存查看 1、查看内存使用情况: #free -m total used free shared buffers cachedMem: 3949 2519 1430 0 189 1619-/+ buffers/cache: 710 3239Swap: 3576 0 3576total:内存总数 used:已经使用的内存数 free:空闲内存数 shared:多个进程共享的内存总额 - buffers/cache:(已用)的内存数,即used-buffers-cached + buffers/cache:(可用)的内存数,即free+buffers+cached Buffer Cache用于针对磁盘块的读写; Page Cache用于针对文件inode的读写,这些Cache能有效地缩短I/O系统调用的时间。

linux - 服务器性能评估

╄→尐↘猪︶ㄣ 提交于 2020-01-26 01:12:21
影响Linux服务器性能的因素 cpu 内存 磁盘IO 网络IO 系统性能评估标准 影响性能因素 好 坏 糟糕 CPU user% + sys%< 70% user% + sys%= 85% user% + sys% >=90% 内存 Swap In(si)=0Swap Out(so)=0 Per CPU with 10 page/s More Swap In & Swap Out 磁盘 iowait % < 20% iowait % =35% iowait % >= 50% 其中: %user:表示CPU处在用户模式下的时间百分比。 %sys:表示CPU处在系统模式下的时间百分比。 %iowait:表示CPU等待输入输出完成时间的百分比。 swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM swap out:即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK。 系统性能分析工具 常用系统命令 Vmstat、sar、iostat、netstat、free、ps、top等 常用组合方式: 用vmstat、sar、iostat检测是否是CPU瓶颈。 用free、vmstat检测是否是内存瓶颈。 用iostat检测是否是磁盘I/O瓶颈。 用netstat检测是否是网络带宽瓶颈。 系统整体负载查询(uptime) uptime 08:21:34

一、安卓系统架构全面分析

社会主义新天地 提交于 2020-01-25 15:32:44
一、引言 Android系统非常庞大,横跨了多个领域,但整体架构设计清晰。 底层内核空间:以Linux Kernel作为基础。 上层用户空间:由Native系统库、虚拟机运行环境、Framework框架层组成。 通过系统调用( Syscall )连通系统的内核空间与用户空间。对于用户空间主要采用C++和Java代码编写,通过 JNI技术 打通用户空间的Java层和Native层(C++/C),从而连通整个系统。 为了能让大家整体上大致了解Android系统涉及的知识层面,先来看一张Google官方提供的经典分层架构图,从下往上依次分为Linux内核、HAL、系统Native库和Android运行时环境、Java框架层以及应用层这5层架构,其中每一层都包含大量的子模块或子系统。 二、Android架构 android的本质是一个基于Linux上运行的java虚拟机。 首先为了理解安卓系统是怎么工作的,就先来看一下android的系统架构。 其架构大至可以分为五层:linux内核层、HAL层、系统运行库层、应用框架层和应用层,那就先说说这几层。 1.linux kernel层 Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动(如显示,音频,照相机,蓝牙,WI-FI,电源管理等等),而linux内核作为一个抽象层存在硬件和软件之间

主存管理

送分小仙女□ 提交于 2020-01-22 08:38:51
1 概念 存储器 storage, memmory 能接收数据和保存数据、而且能根据命令提供这些数据的装置。 存储器分成两类: 内存储器(简称内存、主存、物理存储器) 处理机能直接访问的存储器。用来存放系统和用户的程序和数据,其特点是存取速度快,存储方式是以新换旧,断电信息丢失。 外存储器(简称外存、辅助存储器) 处理机不能直接访问的存储器。用来存放用户的各种信息,存取速度相对内存而言要慢得多,但它可用来长期保存用户信息。在文件系统中介绍。 1.内存的物理组织 物理地址: 把内存分成若干个大小相等的存储单元,每个单元给一个编号,这个编号称为内存地址(物理地址、绝对地址、实地址),存储单元占8位,称作字节(byte)。 物理地址空间: 物理地址的集合称为物理地址空间(主存地址空间),它是一个一维的线性空间。 2.程序的逻辑结构 程序地址:用户编程序时所用的地址(或称逻辑地址 、虚地址 ),基本单位可与内存的基本单位相同,也可以不相同。 程序地址空间(逻辑地址空间、虚地址空间):用户的程序地址的集合称为逻辑地址空间,它的编址总是从0开始的,可以是一维线性空间,也可以是多维空间。 2存储管理的功能 1.存储管理功能 地址映射 将程序地址空间中使用的逻辑地址变换成主存中的地址的过程 (2) 主存分配 按照一定的算法把某一空闲的主存区分配给作业或进程。 (3) 存储保护 保证用户程序