上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 40 下一页

2021年8月14日

摘要: 从两方面来考虑: 分配和释放,堆在分配和释放时都要调用函数(malloc,free),比如分配时会到堆空间去寻找足够大小 的空间(因为多次分配释放后会造成内存碎片),这些都会花费一定的时间,具体可以看看malloc和 free的源代码,函数做了很多额外的工作,而栈却不需要这些。 访问时间,访问堆的一 阅读全文
posted @ 2021-08-14 00:42 超人不会灰啊 阅读(170) 评论(0) 推荐(0) 编辑
 
摘要: 刚刚换出的页面马上又要换入内存,刚刚换入的页面马上又要换出外存,这种频繁的页面调度行为称为 抖动,或颠簸。产生抖动的主要原因是进程频繁访问的页面数目高于可用的物理块数(分配给进程的物 理块不够) 为进程分配的物理块太少,会使进程发生抖动现象。为进程分配的物理块太多,又会降低系统整体的并 发度,降低某 阅读全文
posted @ 2021-08-14 00:38 超人不会灰啊 阅读(388) 评论(0) 推荐(0) 编辑

2021年8月13日

摘要: 交换空间 Linux 中的交换空间(Swap space)在物理内存(RAM)被充满时被使用。如果系统需要更多的内存资源,而物理内存已经充满,内存中不活跃的页就会被移到交换空间去。虽然交换空间可以为带有少量内存的机器提供帮助,但是这种方法不应该被当做是对内存的取代。交换空间位于硬盘驱动器上,它比进入 阅读全文
posted @ 2021-08-13 23:36 超人不会灰啊 阅读(241) 评论(0) 推荐(0) 编辑
 
摘要: 页表:是一个存放在物理内存中的数据结构,它记录了虚拟页与物理页的映射关系 在进行动态内存分配时,例如malloc()函数或者其他高级语言中的new关键字,操作系统会在硬盘中创建 或申请一段虚拟内存空间,并更新到页表(分配一个页表条目(PTE),使该PTE指向硬盘上这个新创 建的虚拟页),通过PTE建 阅读全文
posted @ 2021-08-13 23:07 超人不会灰啊 阅读(137) 评论(0) 推荐(0) 编辑
 
摘要: Linux环境下有操作系统决定,一般是8KB,8192kbytes,通过ulimit命令查看以及修改 Windows环境下由编译器决定,VC++6.0一般是1M Linux linux下非编译器决定栈大小,而是由操作系统环境决定,默认是8192KB(8M);而在Windows平台下 栈的大小是被记录 阅读全文
posted @ 2021-08-13 23:06 超人不会灰啊 阅读(1251) 评论(0) 推荐(0) 编辑
 
摘要: 1、栈区(stack)— 地址向下增长,由编译器自动分配释放,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的队列,先进后出。 2、堆区(heap)— 地址向上增长,一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回 收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链 阅读全文
posted @ 2021-08-13 22:58 超人不会灰啊 阅读(72) 评论(0) 推荐(0) 编辑
 
摘要: 通过这张图你可以看到,用户空间内存,从低到高分别是 7 种不同的内存段: 程序文件段,包括二进制可执行代码; 已初始化数据段,包括静态常量; 未初始化数据段,包括未初始化的静态变量; 堆段,包括动态分配的内存,从低地址开始向上增长; 文件映射段,包括动态库、共享内存等,从低地址开始向上增长(跟硬件和 阅读全文
posted @ 2021-08-13 22:56 超人不会灰啊 阅读(206) 评论(0) 推荐(0) 编辑
 
摘要: 中断 大家都知道,当我们在敲击键盘的同时就会产生中断,当硬盘读写完数据之后也会产生中断,所以,我 们需要知道,中断是由硬件设备产生的,而它们从物理上说就是电信号,之后,它们通过中断控制器发 送给CPU,接着CPU判断收到的中断来自于哪个硬件设备(这定义在内核中),最后,由CPU发送给内 核,有内核处 阅读全文
posted @ 2021-08-13 22:48 超人不会灰啊 阅读(88) 评论(0) 推荐(0) 编辑
 
摘要: 1、main函数的自然返回,return 2、调用exit函数,属于c的函数库 3、调用_exit函数,属于系统调用 4、调用abort函数,异常程序终止,同时发送SIGABRT信号给调用进程。 5、接受能导致进程终止的信号:ctrl+c (^C)、SIGINT(SIGINT中断进程) 阅读全文
posted @ 2021-08-13 22:43 超人不会灰啊 阅读(345) 评论(0) 推荐(0) 编辑
 
摘要: 父进程 已创建一个或多个子进程的进程 子进程 由fork创建的新进程被称为子进程(child process)。该函数被调用一次,但返回两次。两次返回的区别 是子进程的返回值是0,而父进程的返回值则是新进程(子进程)的进程 id。将子进程id返回给父进程的 理由是:因为一个进程的子进程可以多于一个, 阅读全文
posted @ 2021-08-13 22:42 超人不会灰啊 阅读(311) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 40 下一页