linux
weixin_41521306
这个作者很懒,什么都没留下…
展开
-
ptmalloc的分配机制:mmap ()和sbrk()、brk()
首先,引入4G的虚拟内存空间。其中1G为内核空间,3G为用户空间,用户空间包括堆栈,代码段,数据段,保留区,环境变量,命令行参数存放。栈Stack存的局部变量,而且栈是有界的,由系统自行处理。而Heap堆却不同,所以着重的来讲述一下Heap内存分配策略。 首先我们要知道,我们动态申请内存都是申请虚拟内存,当真正要使用的时候内核再给你划分物理内存。Heap的动态内存分配额主要操作...原创 2019-01-11 00:37:36 · 743 阅读 · 0 评论 -
Linux复习篇(五)--僵死进程和孤儿进程
僵死进程概念:一个父进程利用fork创建子进程,如果子进程先于父进程退出,而父进程收到内核发来的SIGCHLD信号,并没有利用wait 或者 waitpid 来发出进行适当处理获取子进程的状态信息(退出码),回收子进程,那么子进程的状态描述符依然保存在系统中,等待父进程收尸。、、危害:在Linux进程的状态中,僵尸进程是非常特殊的一种,它已经放弃了几乎所有内存空间,没有任何...原创 2019-07-31 23:30:52 · 140 阅读 · 0 评论 -
Linux复习篇(七)--进程控制块pcb详解
进程控制块PCB(tatk_struct结构体)进程控制块(Processing Control Block),是操作系统核心中一种数据结构,主要表示进程状态。其作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位或与其它进程并发执行的进程。 PCB通常是系统内存占用区中的一个连续存区,它存放着操作系统用于描述进程情况及控制进程运行所需的全部信息,它使一个在...原创 2019-08-05 10:23:12 · 967 阅读 · 0 评论 -
linux复习篇(六)--fork()之写时拷贝
首先,这篇博客要解决的几个问题:1.什么是写时拷贝技术?2.fork()在复制进程的时候,共享哪些东西?拷贝了哪些东西?先引入两个概念:逻辑地址(进程地址空间): cpu所生成的地址。cpu产生的逻辑地址分为:p(页号)它包含在每个页在物理内存中的基址,用来做页表的索引;d(页偏移),同基址相结合,用来确定送入内存设备的物理内存地址。物理地址:内存单元所看到的地址。用户程序...原创 2019-08-04 23:14:24 · 289 阅读 · 0 评论 -
Linux复习篇(三)--静态库和共享库(动态库)
什么是库?简单来说,就是预先编译好的方法的集合;常见的库就是运行时库(Runtime Library),如C运行库CRT.linux下,库存放的位置为/lib /user/lib ;头文件 /uesr/include ; 命令 /bin /user/bin库的分类:库一般分为两种:静态库(.a (linux下))动态库(.so (linux下)),所谓静态、动态是指链接过程...原创 2019-07-26 11:21:22 · 251 阅读 · 0 评论 -
linux动态库的制作和路径安装
动态库*.so在linux下用c和c++编程时经常需要使用。1、动态库的编译下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、test_c.c,我们将这几个文件编译成一个动态库:libtest.so。------------so_test.h--------------void test_a();void te...转载 2019-07-26 11:18:53 · 847 阅读 · 0 评论 -
Linux复习篇(二)--makefile文件及make命令
什么是makefile文件?介绍一下make命令,make命令是GNU的工程化编译工具,它用于编译大量互相关联的源代码,使用它可以实现项目的工程化管理,提高开发效率。那么对于一个项目,该如何让它按照我们预想的规则去编译链接执行呢?这就要用到我们要学习的Makefile了。Makefile的作用就是在执行make命令的时候指定编译和链接的规则,包括源代码文件之间的链接关系、依赖关系等。它关系到整...原创 2019-07-26 09:38:48 · 328 阅读 · 0 评论 -
Linux复习篇(一)--目录结构及文件篇
目录结构/(根)是所有目录的顶点。 目录结构像一颗倒挂的树。 目录和磁盘分区,默认是没有关联的。 /(根)下不同的目录可能会对应不同的分区或磁盘。 所有的目录都是按照一定的类别和规律组成的。文件类型:-:普通文件 d: 目录文件 p:管道文件 l:链接文件 c,b:设备文件 s:套接字文件文...原创 2019-07-21 22:48:54 · 120 阅读 · 0 评论 -
Linux 复习篇(四) ---- fork()底层实现剖析(有图,超详细)
什么是一个进程?进程的概念,简单来说,进程就是正在运行的程序,是资源分配的最小单位,系统管理进程是依靠对进程控制块(PCB)的管理完成的,PCB的结构体为task_struct.fork 复制进程底层实现原理fork() ,pthread_creat(), vfork()的系统调用分别是sys_fork(),sys_clone(), sys_vfork(),它们的底层都用的是do_f...原创 2019-07-30 11:09:59 · 236 阅读 · 0 评论 -
Linux 复习篇(二)---命令篇
操作文件相关的:cd 更改路径 touch 创建普通文件 rm 删除普通文件 mv 移动文件(重命名)cp 拷贝文件 mkdir 创建目录文件 ...原创 2019-07-23 21:48:43 · 115 阅读 · 0 评论 -
Linux系统调用的分析和实现机制
系统调用(用户空间与内核空间的交互) 系统调用的含义:系统调用是实现系统功能的子程序。系统调用由操作系统核心提供,运行于内核态,而普通的函数调用由函数库或用户自己提供,运行于用户态。。在Linux中,系统调用是用户空间访问内核空间的惟一手段。 系统调用的实现:图示: 用户空间执行一个系统调用,它们不能直接调用内核中的内核函数,因为内核处于受保护的地址控制,不允许...原创 2019-01-01 15:54:21 · 377 阅读 · 0 评论 -
fork()的底层实现机制
fork()底层实现机制fork(),vfork(),_clone()都是通过调用clone(),然后由clone()去调用do_fork()。1. :代表着进程描述符,即进程控制块PCB。:为子进程分配新的pid参数。最大值默认为32768,short int短整型的最大值,它就是系统中允许同时存在的进程的最大数目。最小值即为pid重置起始点,如图:。 2...原创 2019-01-02 21:21:19 · 638 阅读 · 0 评论 -
epoll的底层实现机制
1 .epoll_create() //创建内核事件表 容纳事件的容器2.epoll_ctl() // 向内核事件表中 添加、修改、移除 事件3.epoll_wait() // 检查获取就绪事件 首先谈一谈epoll_create();sys_epoll_create是创建一个新的内核事件表,分别通过ep_getfd()、ep_file_init()函数分配struct f...原创 2019-01-03 22:23:25 · 4829 阅读 · 4 评论 -
关于进程地址空间的段式内存管理(实地址模式和保护模式)及页式内存管理
进程地址空间 实地址模式(段式管理):在X86系列中的8086,要求寻址能力为1M,但是它的数据总线宽度仅为16(即16位),只能产生64k的寻址能力,此时,设置了段寄存器,段寄存器中有20位,内部地址中的高12位与段寄存器中的16位相加,而内部地址中的低4位保留不变。一个进程能连续的访问64k的空间,同时根据段寄存器设置的基地址,可以任意访问内存,此时线性地址就等同于物理地址,缺乏内存保...原创 2019-01-10 22:41:12 · 610 阅读 · 1 评论 -
Linux 下git的使用总结(详解)
一、Github---代码托管平台GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。简单来说,Github是一个代码托管的平台,公有库是免费的,所以海量的代码都是开源的,别人都在修改它,但是会给你记录操作日志,大多数公司的大型项目都是在上面运行操作的,因为他支持多用户在上面对一份代码进行版本的更新等;二、git--...原创 2019-08-06 01:54:47 · 2382 阅读 · 0 评论