进程和线程: 一个进程至少有一个线程,同一个进程中的多个线程可以并发执行。所谓的并发只是不停的切换,只是电脑切换的太快了,人我们的大脑感觉到是在并发执行。 线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针,程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。 多线程是指程...
分类:
编程语言 时间:
2015-04-15 14:51:26
阅读次数:
131
在现代的操作系统中,当我们说到内存,往往需要分两部分来讲:物理内存和虚拟内存。从硬件上讲,虚拟空间是CPU内部的寻址空间,位于MMU之前,物理空间是总线上的寻址空间,是经过MMU转换之后的空间。
一般我们所说的程序在内存中的分布指的就是程序在虚拟内存中的存储方式。
从低地址到高地址,可分为下面几段:
预留内存地址(操作系统维护的内存地址,不可访问)
程序代码区(只读,存代码和一...
分类:
其他好文 时间:
2015-04-14 14:43:36
阅读次数:
187
一 概述1.1 函数声明(1)function命令 函数就是使用function命令命名的代码区块,便于反复调用。这种声明方式叫做函数的声明(Function Declaration)。function print(){ // ...}(2)函数表达式 除了用function命令声明函数,还可...
分类:
其他好文 时间:
2015-04-12 14:38:46
阅读次数:
199
一、block块的存储位置(block块入口地址):可能存放在2个地方:代码区、堆区(程序分5个区,还有常量区、全局区和栈区)。详细介绍:情况1:代码区 不访问处于栈区的变量(例如局部变量),且不访问处于堆区的变量(例如alloc创建的对象)。也就是说访问全局变量也可以。/** 没有访问任何变量.....
分类:
其他好文 时间:
2015-04-10 01:08:09
阅读次数:
133
一、内存四大区域1.栈先进后出栈的大小固定,默认1M,可以编译的时候设置,超出则溢出变量离开作用范围后,栈上的数据会自动释放栈是连续的,向上增长#include#include void go();void main(){ void *p1 = malloc(10); //p1,p2栈...
分类:
其他好文 时间:
2015-04-07 15:26:59
阅读次数:
184
启动过程图1、BIOSA.post加电自检,检测电脑硬件B.初始化,分配中断号;外部设备初始化和检测C.读取CMOS信息,根据启动顺序加载引导驱动器的bootloader程序。交接工作给bootloader2、MBR解释:狭义理解为引导程序;广义理解为引导驱动器的第一扇区第一扇区结构:446642代码区(..
分类:
系统相关 时间:
2015-04-06 18:56:38
阅读次数:
211
一个C、C++程序编译时内存分为5大存储区:全局区、栈区、堆区、文字常量区、程序代码区。
(1) 在静态存储区域分配
控制者:编译器
分配时间:在程序编译的时候分配内存
释放时间:在程序的整个运行期间都存在,程序结束后由OS释放
内容:全局变量,static变量
特点:
0、速度快,不易出错。
1、初始化的全局变量和静态变量在一块区域, 未初始化的全...
分类:
其他好文 时间:
2015-03-28 08:54:44
阅读次数:
133
【进程】进程是一个静态的概念(代码加载到内存的代码区,这就表示一个进程).线程是一个进程里不同的执行路径,机器上运行的都是线程。对于单个CPU而言,在同一个时间点上,CPU只支持一个线程运行。真正的多线程是双CPU或双核。【进程与线程】每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有...
分类:
编程语言 时间:
2015-03-20 21:38:16
阅读次数:
167
ICMP协议、Ping程序、Traceroute程序
ping程序和Traceroute程序都是基于ICMP协议的,放在一起看。
ICMP是网络层的协议,尽管它是封装在IP数据报内部。
ICMP报文格式:
8位类型字段区分类型,代码区分类型(如下图),16位检验和覆盖ICMP的头部和数据部分。
根据上图可以看到 ICMP分为查询和差错两种,注意...
分类:
其他好文 时间:
2015-03-20 13:01:02
阅读次数:
150
在C\C++中,通常可以把内存理解为4个分区:栈、堆、全局/静态存储区和常量存储区。下面我们分别简单地介绍一下各自的特点。...
分类:
其他好文 时间:
2015-03-19 16:28:16
阅读次数:
99