
操作系统
yan-mario
这个作者很懒,什么都没留下…
展开
-
Linux内存管理 一
1.Linux内核为每个进程提供了一个独立的虚拟地址空间,这个虚拟地址空间是连续的。虚拟地址空间被分为内核空间和用户空间,在32位系统中,虚拟地址空间一共有4GB的大小。内核空间占1G(位于最高处),用户空间占3G。进程在用户态时只可以访问用户空间,在进入内核态之后才可以访问内核空间内存。每个进程的虚拟地址空间都包含了内核空间,他们对应的是同一块物理内存。一个可执行程序在没用...原创 2019-06-03 09:47:30 · 228 阅读 · 0 评论 -
进程、线程
什么是进程?进程是资源分配的基本单位 有自己独立的虚拟地址空间,在系统上运行的东西,都可以称为进程, 占用系统的资源 如cpu、物理内存。什么是程序?程序是进程指令的集合,可以启用一个进程或者多个进程,占用磁盘空间,不占用系统资源。什么是线程?在Linux上线程是特殊的进程,是轻量级的进程 线程是资源调度的基本单位 每个线程都有独立的程序计数器,线程栈和一组线程寄存器,内核调...原创 2019-08-13 17:44:25 · 171 阅读 · 0 评论 -
Linux下的内存分配
1.伙伴算法一种物理内存分配和回收的方法,物理内存所有空闲页都记录在BUDDY链表中。首选,系统建立一个链表,链表中的每个元素代表一类大小的物理内存,分别为2的0次方、1次方、2次方,个页大小,对应4K、8K、16K的内存,没一类大小的内存又有一个链表,表示目前可以分配的物理内存。例如现在仅存需要分配8K的物理内存,系统首先从8K那个链表中查询有无可分配的内存,若有直接分配;否则查找16K大小...原创 2019-06-02 16:34:52 · 293 阅读 · 0 评论 -
同步、异步、阻塞、非阻塞
阻塞I/O:执行的系统调用方法还没有完成就被操作系统挂起(当前的条件不满足时),直到等待的事件发生为止。非阻塞I/O:执行的系统调用总是立即返回,不会被操作系统挂起(不管条件是否满足),时间到了,如果事件没有立即发生,就会返回-1,在时间没到的时候会轮询检查数据是否处理完成。同步:指进程调用接口后,需要等待接口处理完数据后并返回进程才能继续执行。 重点是,数据处理完 并返回异步:指...原创 2019-06-02 16:27:45 · 145 阅读 · 0 评论 -
Linux内存管理 二
内存的分配与回收在程序中申请堆上的内存使用 malloc函数,在系统调用中可以调用 brk() 函数 和 mmap()函数当申请的内存小于128kb(默认值) 的时候会调用brk()函数在heap上开辟内存,当申请内存大于等于128kb(默认值) 的时候会调用mmap()函数在mmap映射区开辟内存内存的回收调用free()函数 或unmap()函数来释放内存函数的声明:...原创 2019-06-06 15:32:10 · 138 阅读 · 0 评论 -
C++下的静态库与动态库
C++静态库与动态库这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库...转载 2018-10-10 10:39:36 · 221 阅读 · 0 评论 -
原子操作
原子操作可以保证指令以原子的方式执行,是不可被分割、不可中断的操作,在单处理器中,操作一但被执行,则不能停止直到运行完毕,在多处理器中,其操作的资源将用锁控制,在执行的过程中该资源不能被其他进程访问直到该操作完成。...原创 2018-09-29 20:16:19 · 337 阅读 · 0 评论 -
Linux内存管理 -- 虚拟地址映射
在32位地址下,进程的虚拟地址空间是4GB,需要将虚拟地址与物理内存连接起来,通过分页机制。物理内存,操作系统将物理内存分成一块一块大小为4KB都相同的页。4G的虚拟地址空间 页的大小是4KB, 即有4M的页,4M 的大小就是 1K 个 4K,4K就是一个页面,一共1K个页面,这个1K就是页目录表,页目录表的每一项大小是4个字节,页目录表是4k。页目录有1K个项,用前十位可以定位到页...原创 2019-08-13 17:44:37 · 240 阅读 · 0 评论