Task 线程(Thread) 线程,是操作系统能够进行运算调度的最小单位。 它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和 ...
分类:
编程语言 时间:
2019-03-22 10:36:34
阅读次数:
221
一、虚拟化 为了让用户告诉操作系统如何利用虚拟机功能,OS提供给应用程序一些接口——系统调用,也会说提供了一个标准库。 CPU通过分时达到虚拟化。 内存物理模型只是一个字节数组,读写修改需要制定地址。程序的所有数据结构以及使用的指令都在内存。OS虚拟化内存,让每个进程都访问自己的私有虚拟地址空间,O ...
分类:
其他好文 时间:
2019-03-20 15:49:53
阅读次数:
156
1)由于进程的虚拟地址空间比物理内存大很多,linux还提供了一系列的机制,来应对内存不足的情况回收缓存:使用LRU算法,回收最近使用最少的内存页面回收不常访问的内存,把不常的内存通过交换分区直接写到磁盘中oom,杀死进程2)什么时候会触发oom进程在申请内存时,如果申请的虚拟内存加上服务器实际已用的内存之和比总的物理内存还大,就会触发oom3)解决方案方法一:oom机制按照oom_score给进
分类:
其他好文 时间:
2019-03-18 19:56:19
阅读次数:
185
转自:https://www.cnblogs.com/arnoldlu/p/8335475.html 专题:Linux内存管理专题 关键词:数据异常、缺页中断、匿名页面、文件映射页面、写时复制页面、swap页面。 malloc()和mmap()等内存分配函数,在分配时只是建立了进程虚拟地址空间,并没 ...
分类:
系统相关 时间:
2019-02-28 23:04:10
阅读次数:
162
get_user_pages的作用是得到用户的页面,作为参数返回,注意,得到的是一个page结构数组而不是别的,这些page最起码 在当前记录着用户进程的数据,一般情况下,内核在调用此函数得到用户页面以后,会再将它们映射到内核空间的一个虚拟地址,然后操作这些页面的数据。这样的话在调用完get_use ...
分类:
其他好文 时间:
2019-02-17 12:37:30
阅读次数:
264
kmap_atomic用于高端内存映射,用于紧急的,短时间的映射,它没有使用任何锁,完全靠一个数学公式来避免混乱,它空间有限且虚拟地址固定,这意味着它映射的内存不能长期被占用而不被unmap,kmap_atomic在效率上要比kmap提升不少,然而它和kmap却不是用于同一场合的。不管怎么说,它的设 ...
分类:
其他好文 时间:
2019-02-17 10:43:37
阅读次数:
209
1.bootloader启动代码分析 1.1寄存器初始化为0(实模式) 其中“-e start”指出了bootblock的入口地址为start,而“-Ttext 0x7C00”指出了代码段的起始地址为0x7c00。也就导致start位置的虚拟地址为0x7c00 bootloader程序被bios从引 ...
分类:
其他好文 时间:
2019-02-12 09:13:25
阅读次数:
298
本文写于2017 03 11,从老账号迁移到本账号,原文地址:https://www.cnblogs.com/huangweiyang/p/6534877.html 概述 mmap()系统调用在调用进程的虚拟地址空间中创建一个新的内存映射。munmap()系统调用执行逆操作,即从进程的地址空间删除一 ...
分类:
其他好文 时间:
2019-02-06 09:29:35
阅读次数:
301
构造并发程序的三种基本方法 进程 用这种方法,每个逻辑控制流都是一个进程,由内核来调度维护.因为进程有独立的虚拟地址空间,想要和其他流通信,控制流必须使用某种显式的进程间通信机制. I/O多路复用 在这种形式的并发编程中,应用程序在一个进程的上下文中显式地调度它们自己的逻辑流.逻辑流被模型化为状态机 ...
分类:
其他好文 时间:
2019-02-02 17:37:22
阅读次数:
214
TLB:Translation Lookaside Buffer. 根据功能可以译为快表,直译可以翻译为旁路转换缓冲,也可以把它理解成页表缓冲。里面存放的是一些页表文件(虚拟地址到物理地址的转换表)。当处理 器要在主内存寻址时,不是直接在内存的物理地址里查找的,而是通过一组虚拟地址转换到主内存的物理 ...
分类:
其他好文 时间:
2019-02-01 23:49:16
阅读次数:
316