目前在阿里巴巴搬砖
由于centos 64位镜像大于4G,所以U盘装不进去.iso镜像,选择网络安装的方法或者使用一个U盘制作启动盘和一个硬盘来装镜像的方法。 1 网络安装第一步 下载 CentOS 安装 ISO 浏览 CentOS 镜像 页面。
一面: 面试官首先看简历上写了在腾讯的实习,然后就探讨了半天,各种虚拟化的技术。。。。 说完之后,估计都半小时过去了,然后就又说了一下你用什么语言,你做的东西都比较偏底层呢,然后你对工作有什么要求吗?还是非要做这么底层的东西,balabala。
You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check.
Perfect Squares Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, .
由于所有用户进程总的虚拟地址空间比可用的物理内存大很多,因此只有最常用的部分才与物理页帧关联。这不是问题,因为大多数程序只占用实际可用内存的一小部分。 在将磁盘上的数据映射到进程的虚拟地址空间的时,内核必须提供数据结构,以建立虚拟地址空间的区域和相关数据所在位置之间的关联。
1 自我介绍(用英文) 啊啊啊,能不能用中文啊,最好用英文,蒙了。。。。 2 你对硬件了解吗,对X86系统了解吗,知道CPU是怎么处理读一个数据的吗,说说cpu从读一个数据,到内存怎么进行处理? 说的有点乱。
基于多进程服务器的优点: 1.由操作系统进行调度,运行比较稳定强壮 2.能够方便地通过操作系统进行监控和管理 例如对每个进程的内存变化状况,甚至某个进程处理什么web请求进行监控.
在做进程安全监控的时候,拍脑袋决定的,如果发现一个进程在D状态时,即TASK_UNINTERRUPTIBLE(不可中断的睡眠状态),时间超过了8min,就将系统panic掉。恰好DB组做日志时,将整个log缓存到内存中,最后刷磁盘,结果系统就D状态了很长时间,自然panic了,中间涉及到Linux的缓存写回刷磁盘的一些机制和调优方法,写一下总结。
一不小心面试了百度的两个部门,而且还是同时在面试,有点累。。。 首先是基础架构部的,这个部门太有效率的,早上一面的,然后面完马上就约二面。。不过感觉百度面试官真的很不错。。(想去现场面试,但是百度一直没有机会现场面试,全是电话面试搞定) 一面的时候,很多问题都不是太记得了,不过主要还是围绕着项目在谈,可能是在实验室一直都是做的内核相关的,所以这方面比较好问,问了很多关于这方面的问题,不过问的比较多的都是关于一个write系统调用的整个流程,这个需要从direct_io和page cache IO还分别讨论。
首先一个IO操作其实分成了两个步骤:发起IO请求和实际的IO操作,同步IO和异步IO的区别就在于第二个步骤是否阻塞,如果实际的IO读写阻塞请求进程,那么就是同步IO,因此阻塞IO、非阻塞IO、IO服用、信号驱动IO都是同步IO,如果不阻塞,而是操作系统帮你做完IO操作再将结果返回给你,那么就是异步IO。
今年说阿里校招不招人,但是我居然比任何时候都顺利的走到了hr面,虽然还没有结果,但是太出乎意料之外了。 direct io和 aio 的区别? write系统调用的整个过程 free命令中page cache和buffer cache的区别 怎样知道磁盘是否繁忙?(可以使用iostat命令查...
进程是现代操作系统的核心概念之一,用于分配系统(CPU,内存)资源的使用。了解linux进程及进程切换的知识,首先要理解进程与程序的区别,进程是执行流,是动态概念;程序是数据与指令序列的集合,是静态概念。
1 一般类静态成员函数不能调用非静态成员函数 2 static成员函数可以调用构造函数吗? 答案是肯定的,由于static成员函数没有this指针,所以一般static成员函数是不能访问non-static成员的,包括成员函数和成员变量。
__cdecl __fastcall与__stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。
1 后缀数组概念 子串:字符串 S 的子串 r[i..j],i≤j,表示 r 串中从 i 到 j 这 一 段 ,也就是顺次排列 r[i],r[i+1],...,r[j]形成的字符串。 后缀:后缀是指从某个位置 i 开始到整个串末尾结束的一个特殊子串。
1 首先,面试官一般会问你知道什么缓存算法,你可能会说FIFO、LRU、LFU,一般说完,面试官会继续问你那么怎样去实现一个LRU算法 设计并实现一个LRU Cache 一、什么是Cache 1 概念 Cache,即高速缓存,是介于CPU和内存之间的高速小容量存储器。
1. Given a sorted linked list, delete all duplicates such that each element appear only once. For example, Given 1->1->2, return 1->2.
术语定义 术语 英文 解释 哈希算法 hash algorithm 是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表 hash table 根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地址或散列地址。
Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。
转载:http://huchh.com/2015/06/22/qemu-%E5%AF%B9%E8%99%9A%E6%9C%BA%E7%9A%84%E7%BA%BF%E6%80%A7%E5%9C%B0%E5%9D%80%E7%A9%BA%E9%97%B4%E7%AE%A1%E7%90%86/ 前言 cpu有两个地址空间:io 地址空间和内存地址空间。
每个外设都是通过读写其寄存器来控制的。外设寄存器也称为I/O端口,通常包括:控制寄存器、状态寄存器和数据寄存器三大类。根据访问外设寄存器的不同方式,可以把CPU分成两大类。一类CPU(如M68K,Power PC等)把这些寄存器看作内存的一部分,寄存器参与内存统一编址,访问寄存器就通过访问一般的内存指令进行,所以,这种CPU没有专门用于设备I/O的指令。
解释一下Linux上free命令的输出。 下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(Free Output)。例如: FO[2][1] = 24677460 FO[3][2] = 10321516 ...
今天在使用qemu-kvm安装一个虚拟机,因为已经有一个虚拟机的image文件(qcow2格式的),所以创建虚拟机很简单,直接通过以下命令从image启动就行了。 [plain] view plaincopy qemu-kvm -cpu host -smp 2 -...
1. loop设备介绍 在类 UNIX 系统里,loop 设备是一种伪设备(pseudo-device),或者也可以说是仿真设备。它能使我们像块设备一样访问一个文件。在使用之前,一个 loop 设备必须要和一个文件进行连接。
接着KVM虚拟机IO处理过程中Guest Vm IO处理过程(http://blog.csdn.net/dashulu/article/details/16820281),本篇文章主要描述IO从guest vm跳转到kvm和qemu后的处理过程.
虚拟化技术主要包含三部分内容:CPU虚拟化,内存虚拟化,设备虚拟化.本系列文章主要描述磁盘设备的虚拟化过程,包含了一个读操作的I/O请求如何从Guest Vm到其最终被处理的整个过程.本系列文章中引用到的linux内核代码版本为3.
之前打算整理一下在Guest VM, KVM, QEMU中IO处理的整个流程,通过查阅资料和阅读源码,已经大致知道IO在Guest KVM中的处理流程.当想要整理IO在KVM和QEMU中的处理时,发现很难理清楚QEMU和KVM之间的跳转和交互的过程,于是促使自己去了解QEMU和KVM启动的过程.
linux删除文件未释放空间问题处理 或者 /根分区满了 (我的根分区是/dev/sda1,/dev/sda1满了) http://blog.csdn.net/donghustone/article/details/7085240 http://65572.vhost59.cloudvhost.net/?p=66 linux里的文件被删除后,空间没有被释放是因为在Linux系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。
1 使用:创建树并且attach子系统 首先要创建文件系统的挂载点作为树的根 mkdir /cgroup/name mkdir /cgroup/cpu_and_mem Mount这个挂载点到一个或者多个子系统 mount -t cgroup -o subsyst...
class Solution { public: int InversePairs(vector data) { if(data.empty()) return 0; int n=data.
环境:VMware8.0虚拟机 ubuntu:12.04在刚安装完ubuntu后,屏幕不能全屏显示,此时: 1、安装VMware Tools 步骤: 1.1 进入ubuntu系统后,点击虚拟机上的【VM】->【install vmware tools】,回到桌面回看到一个vmware tools的 cdrom图标。
有了virt-install是安装虚拟机的命令,当然也需要一个管理虚拟机的命令了,那就是virsh。 virsh命令使用 virsh [OPTIONS] virsh既有命令行模式,也有交互模式,在命令行直接输入virsh就进入交互模式,virsh 后面跟命令参数,则是命令行模式。
今天在isocpp上看到“GCC 4.8.1 released, C++11 feature complete”这个消息,非常兴奋。终于有一个全面支持C++11语言特性的编译器了! 当然了,gcc仅仅是语言特性上全面支持C++11,libstdc++貌似还没有完全跟上,不过我已经挺满足了,至少可以去尝试各种特性了。
所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。其他进程能把同一段共享内存段“连接到”他们自己的地址空间里去。
动态类型与静态类型 静态类型 是指不需要考虑表达式的执行期语义,仅分析程序文本而决定的表达式类型。静态类型仅依赖于包含表达式的程序文本的形式,而在程序运行时不会改变。通俗的讲,就是上下文无关,在编译时就可以确定其类型。
close和unlink。以前时候总是不太理解两者的区别,最近看到一篇博客比较详细地描述了二者的本质区别,这里我引用了它的原文。 “每一个文件,都可以通过一个struct stat的结构体来获得文件信息,其中一个成员st_nlink代表文件的链接数。
1、正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,需要计算出Q中的前几项,例如,当a=3,b=5,N=6时,序列为3,5,6,9,10,12(1)、设计一个函数void generate(int a,int b,int N ,int * Q)计算Q的前几项(2)、设计测试数据来验证函数程序在各种输入下的正确性。
1. 下载源码,W. Richard Stevens的主页:http://www.kohala.com/start/ wget http://www.kohala.com/start/unpv22e/unpv22e.
安装环境:CentOS 6.4 上篇已经讲述了memcached的安装,现在要测试Memcached功能的时候,需要使用到telnet服务.于是就有了本篇。 一、安装telnet 1、检测telnet-server的rpm包是否安装 [root@localhost ~]# rpm -qa telnet-server 若无输入内容,则表示没有安装。
Python有两个封装了setuptools的包管理工具:easy_install和pip。目前官方推荐使用pip。 现在,让我们来安装一个第三方库——Python Imaging Library,这是Python下非常强大的处理图像的工具库。
1. 操作系统和内核 操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分。包括内核、设备驱动程序、启动引导程序、命令行shell或者其他种类的用户界面、基本的文件管理工具和系统工具。 用户界面是操作系统的外在表现,内核才是操作系统的内置核心。
vim中执行shell命令,有以下几种形式1):!command不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容例如:!ls -l 特别的可以运行:!bash来启动一个bash shell并执行命令,不需要退出vim 2):r !command将shell命令command的结果插入到当前行的下一行例如:r !date,读取系统时间并插入到当前行的下一行。
转载:http://blog.jobbole.com/45733/ 经常使用top命令了解进程信息,其中包括内存方面的信息。命令top帮助文档是这么解释各个字段的。VIRT , Virtual Image (kb)RES, Resident size (kb)SHR, Shared Mem siz...
我是一名程序员,那么我在这里以一个程序员的角度来讲解Linux内存的使用。 一提到内存管理,我们头脑中闪出的两个概念,就是虚拟内存,与物理内存。这两个概念主要来自于linux内核的支持。 Linux在内存管理上份为两级,一级是线性区,类似于00c73000-00c88000,对应于虚拟内存,它实际上不占用实际物理内存;一级是具体的物理页面,它对应我们机器上的物理内存。
1 内存 1.1 程序的内存布局 现代的应用程序都运行在一个内存空间里,在32位的系统里,这个内存空间拥有4GB的寻址能力。在Linux下默认将高地址的1GB空间分配给内核,低地址的3GB默认是用户空间。
转载:http://shitouer.cn/2010/06/method-called/ 代码如下:#include “stdlib.h” int sum(int a,int b,int m,int n){ return a+b; } void main(){ int result = sum(1,2,3,4); system(“pause”); } 有四个参数的sum函数,接着在main方法中调用sum函数。
静态链接 1 编译和链接 1.1 被隐藏了的过程 例如: #include int main() { printf("Hello World\n"); return 0; } 在Linux下,使用GCC编译: gcc hello.c ./a.out Hello World 事实上,上述过程由4个步骤,分别是预处理、编译、汇编和链接,如图所示: 1.1.1 预编译 首先是源代码hello.c和相关的头文件,如stdio.h等被预编译器cpp预编译成一个.i文件。
1 什么是线程 线程,有时被称为轻量级进程,是程序执行的最小单元。一个标准的线程由线程ID、程序计数器(pc)、一组寄存器和堆栈组成。通常,一个进程由多个线程组成,每个线程之间共享进程的内存空间(包括代码段、数据段、堆等)及一些进程级的资源(如打开的文件描述符和信号)。
1 介绍 计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。 计算机系统u燃机系统结构的层次结构设计如下: 每个层次之间都需要相互通信,既然需要通信就必须有一个通信的协议,也就是接口。
简介 strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。