
操作系统
文章平均质量分 83
mw_nice
这个作者很懒,什么都没留下…
展开
-
理解Linux的硬链接与软链接__超详细_原理
理解 Linux 的硬链接与软链接Linux 的文件与目录现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程创建信息的逻辑单元可被多个进程并发使用。在 UNIX 系统中,操作系统为磁盘上的文本与图像、鼠标与键盘等输入设备及网络交互等 I/O 操作设计了一组通用 API,使他们被处理时均可统一使用字节流方式。换言之,UNIX 系统中除进程之外的一切皆是文件,而 Linux 保持了这一特性。为了便于文件的管理,Linux 还引入了目录(有时亦被称为文件夹)这一概念。目录使文件.转载 2020-08-01 15:00:42 · 857 阅读 · 2 评论 -
Epoll的本质(内部实现原理)
本文主体转自https://zhuanlan.zhihu.com/p/63179839,罗培羽:如果这篇文章说不清epoll的本质,那就过来掐死我吧! 加上了自己的理解和批注从事服务端开发,少不了要接触网络编程。epoll作为linux下高性能网络服务器的必备技术至关重要,nginx、redis、skynet和大部分游戏服务器都使用到这一多路复用技术。因为epoll的重要性,不少游戏公司(如某某九九)在招聘服务端同学时,可能会问及epoll相关的问题。比如epoll和select的区别是什么?epo转载 2020-07-21 14:24:31 · 477 阅读 · 1 评论 -
Linux的进程线程及调度
https://www.cnblogs.com/leisure_chn/p/10393707.htmlLinux的进程线程及调度本文为宋宝华《Linux的进程、线程以及调度》学习笔记。1 进程概念1.1 进程与线程的定义操作系统中的经典定义:进程:资源分配单位。线程:调度单位。操作系统中用PCB(Process Control Block, 进程控制块)来描述进程。Linux中的PCB是task_struct结构体。1.2 进程生命周期1.2.1 进程状态R, TASK转载 2020-07-10 10:46:39 · 1615 阅读 · 0 评论 -
多核编程之 CPU Cache
Cache 简介Cache,即缓存。缓存能提升读取性能,其原理是用性能更好的存储介质存储一部分高频访问的内容,获得总体概率上的速度提升。在开发中,我们口中的缓存可以是一个变量,或者是 redis。在计算机 CPU 内部,CPU 往往指的是 CPU 的各级缓存。CPU Cache 原理缓存的工作原理是当 CPU 要读取一个数据时,首先从CPU缓存中查找,找到就立即读取并送给 CPU 处理;没有找到,就从速率相对较慢的内存中读取并送给 CPU 处理,同时把这个数据所在的数据块调入缓存..转载 2020-05-30 16:55:40 · 469 阅读 · 0 评论 -
在应用程序中替换Linux中Glibc的malloc内存申请的6种方法
打算优化系统的内存分配,接管glibc提供的内存管理,但是整个工程的代码量很大,使用malloc、realloc、calloc和free的地方到处都是,如果自己写好的接口需要重命名所有的调用,先不说工作量,部分没有权限查看代码的.a文件就搞不定了。所以需要替换掉系统的malloc,保证原有调用的名称不变。经过尝试,共有四种方法可以替换,各有优缺点吧。方案1 使用环境变量LD_PRELOAD...原创 2018-12-10 15:04:03 · 2727 阅读 · 1 评论 -
int指令(软件中断指令__软件调试)__gdb调试中断断点原理
INT(软件中断指令)是CALL指令的一种特殊形式。call指令调用调用的子程序是用户程序的一部分,而INT指令调用的操作系统提供的子程序或者其他特殊的子程序。中断服务子程序和标准过程的最大区别是 汇编程序可以有任意个过程,中断服务子程序最多有256个过程、INT指令共有四中不同的格式:《1》 int n n是中断号,这就允许用户程序调用256个中断服务子程序...转载 2019-11-07 17:11:03 · 2975 阅读 · 0 评论 -
ubuntu学习
一、 Ubuntu简介Ubuntu(乌班图)是一个基于Debian的以桌面应用为主的Linux操作系统,据说其名称来自非洲南部祖鲁语或科萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观。Ubuntu的目标在于为一般用户提供一个最新同时又相当稳定,主要以自由软件建构而成的操作系统。Ubuntu目前具有庞大的社区力量支持,用户可以方便地从社区获得...转载 2019-09-23 14:09:53 · 399 阅读 · 0 评论 -
Linux中的GOT和PLT到底是个啥?
转自https://www.freebuf.com/articles/system/135685.html0×00 Intro本文以Ian Wienand的博客为蓝本,我在必要的地方予以增补、解释以及再实验,希望读者对PLT和GOT有一个初步的、相对完整的认识。0×01The Simplest Example原文的标题是“PLT and GOT – the key to ...转载 2019-08-22 19:24:02 · 1030 阅读 · 0 评论 -
在linux下永久添加静态路由
在linux下永久添加静态路由有两种方法:添加路由的命令:1,route add 1 2 3 4 routeadd-net192.56.76.0netmask255.255.255.0deveth0#添加一条静态路由 routeadddefaultgw192.168.0.1#添加默认路由 r...转载 2019-06-25 09:38:05 · 8352 阅读 · 0 评论 -
linux之atop监控
介绍atop是一个功能非常强大的linux服务器监控工具,它的数据采集主要包括:CPU、内存、磁盘、网络、进程等,并且内容非常的详细,特别是当那一部分存在压力它会以特殊的颜色进行展示,如果颜色是红色那么说明已经非常严重了。注意:所有的信息都是反映过去10S的状态信息使用atop工具安装好后在运行命令atop就能弹出监控界面接下来我们就来详细看看每行参数意义。a...转载 2019-05-30 10:26:07 · 743 阅读 · 0 评论 -
快照是什么?揭秘存储快照的实现
前言存储网络行业协会SNIA(StorageNetworking Industry Association)快照的定义:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。需要注意的是:快照是完全可用的拷贝,但不是一份完整的拷贝,至于为什么,后面会详细讲。存储快照的使用场景场景一...转载 2019-05-27 13:44:34 · 394 阅读 · 0 评论 -
linux查看进程线程的方法
在Linux中查看线程数的三种方法1、top -H手册中说:-H : Threads toggle加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。2、ps xH手册中说:H Show threads as if they were processes这样可以查看所有存在的线程。3、ps -mp <PID>手册中说:m Show threads...转载 2019-05-17 10:54:21 · 30077 阅读 · 0 评论 -
搞定操作系统面试,看这篇就够了
作者:CyC2018链接:https://github.com/CyC2018/CS-Noteshttps://mp.weixin.qq.com/s?__biz=MzI5MzYzMDAwNw==&mid=2247486201&idx=1&sn=1cfa82fd72d379d807fd1aa23ca09e4a&chksm=ec6e73a1db19fab782e...转载 2019-04-18 11:11:15 · 616 阅读 · 0 评论 -
malloc内存分配原理
一、malloc的工作机制 它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。 调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。接下来,将分配给用户的那块内存传给用户,并将剩下的那块(如果有的话)返回到连接表上。 调用free函数时,它将用户释放的内存块连...转载 2018-12-08 17:13:33 · 489 阅读 · 0 评论 -
linux-malloc底层实现原理
本文大致讲解一下linux下malloc的底层实现原理。首先malloc肯定是从堆中分配内存,而堆又在用户空间中占据什么位置?通过下面这张图可以看出来:很明显是32位系统,寻址空间是4G,linux系统下0-3G是用户模式,3-4G是内核模式。而在用户模式下又分为代码段、数据段、.bss段、堆、栈。各个segment所含内容在图中有具体说明。其中bss段:存放未初始化的全局变量和局...转载 2018-12-08 17:17:17 · 437 阅读 · 0 评论 -
sendfile:Linux中的"零拷贝"
sendfile:Linux中的"零拷贝"转载:http://blog.youkuaiyun.com/caianye/article/details/7576198 如今几乎每个人都听说过Linux中所谓的"零拷贝"特性,然而我经常碰到没有充分理解这个问题的人们。因此,我决定写一些文章略微深入的讲述这个问题,希望能将这个有用的特性解释清楚。在本文中,将从用户空间应用程序的角度来阐述这个问题,...转载 2019-02-25 16:20:27 · 130 阅读 · 0 评论 -
通过/proc/PID/status查看进程内存占用情况
网上有很多资料描述status的内容,但是有些是错误的。综合比较了一下,下面2个的内容应该是正确的。1、https://locklessinc.com/articles/memory_usage/VmPeak: Peak virtual memory usage VmSize: Current virtual memory usage VmLck: Cu...转载 2019-03-11 16:21:21 · 3934 阅读 · 0 评论 -
Linux内存泄漏查询方法__proc/pid/status深入解释理解
在测试,特别是性能测试或者系统的稳定性测试中,内存的使用情况是一个很重要的监控点,不管是从资源使用的角度还是从发现内存泄露问题的角度。 如果笼统的来看,大概就是两个指标,系统的内存使用率和进程使用的内存。但是现实世界的事情往往没有那么简单,稍微细一点来看其实有很多的科目。本文不是一个全面的关于内存使用的探讨,甚至也不是一个详细的Linux下面进程内存使用情况的分析,尽管这里的...原创 2019-03-11 16:52:18 · 2513 阅读 · 0 评论 -
孤儿进程与僵死进程总结
1、前言 之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,加深理解。2、基本概念 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的...转载 2019-03-27 10:19:04 · 186 阅读 · 0 评论 -
荐书:Operating Systems: Three Easy Pieces
今天介绍一本书,书名叫做:《Operating Systems: three easy pieces》。如果日常工作中和底层打交道的话会遇到很多操作系统相关的问题,比如:为何系统会出现 load 值高 cpu 利用率却不高的情况?为何会有那么多僵尸进程?某些场景下如何快速创建进程的 snapshot ?如何高效利用 CPU Cache Line(利用 Cache Friendly 的数据结构)...转载 2019-03-28 10:44:32 · 3414 阅读 · 0 评论 -
进程切换(进程上下文和中断上下文)详解
进程上下文VS中断上下文1.内核空间和用户空间内核空间和用户空间是现代操作系统的两种工作模式,内核模块运行在内核空间,而用户态应用程序运行在用户空间。它们代表不同的级别,而对系统资源具有不同的访问权限。内核模块运行在最高级别(内核态),这个级下所有的操作都受系统信任,而应用程序运行在较低级别(用户态)。在这个级别,处理器控制着对硬件的直接访问以及对内存的非授权访问。内核态和用户态有自己的内...转载 2019-04-17 10:02:46 · 7549 阅读 · 1 评论 -
关于linux操作系统_信号_sigprocmask函数
sigaction函数的功能是检查或修改与指定信号相关联的处理动作(可同时两种操作)。他是POSIX的信号接口,而signal()是标准C的信号接口(如果程序必须在非POSIX系统上运行,那么就应该使用这个接口)给信号signum设置新的信号处理函数act, 同时保留该信号原有的信号处理函数oldact intsigaction(intsigno,conststructs...转载 2019-04-17 16:44:18 · 385 阅读 · 0 评论