
操作系统
文章平均质量分 57
luoganttcc
微信:luogantt2
展开
-
potplayer
https://potplayer.info/download/原创 2025-01-04 17:37:54 · 113 阅读 · 0 评论 -
ubuntu杀死占用某个端口的所有进程
【代码】ubuntu杀死占用某个端口的所有进程。原创 2023-10-24 17:44:59 · 320 阅读 · 0 评论 -
编译 串口驱动所依赖的 操作系统库
【代码】编译 串口驱动所依赖的 操作系统库。原创 2023-06-26 18:09:14 · 185 阅读 · 0 评论 -
ubuntu打包成iso镜像
https://zhuanlan.zhihu.com/p/349586567https://github.com/wenet-e2e/wenethttps://github.com/alphacep/vosk-apihttps://alphacephei.com/vosk/原创 2023-05-17 19:12:18 · 674 阅读 · 0 评论 -
再谈应用程序分段: 数据段、代码段、BSS段以及堆和栈
分段本身就是一个比较复杂的内容,值得再专门写一遍文章介绍,本文再前文基础上再谈应用程序的分段。转载 2022-09-19 18:29:16 · 1764 阅读 · 0 评论 -
操作系统的程序内存结构 —— data和bss为什么需要分开,各自的作用
3、,其实也是最重要的原因,就是当系统中运行着多个该程序的副本时,它们的指令都是一样的,所以内存中只须要保存一份改程序的指令部分。当然每个副本进程的数据区域是不一样的,它们是进程私有的。不要小看这个共享指令的概念,它在现代的操作系统里面占据了极为重要的地位,特别是在有动态链接的系统中,可以节省大量的内存。比如我们常用的Windows Internet Explorer 7.0运行起来以后,它的总虚存空间为112 844 KB,它的私有部分数据为15 944 KB,即有96 900 KB的空间是共享部分。转载 2022-09-19 17:32:23 · 2156 阅读 · 0 评论 -
【linux操作系统知识】虚拟地址中:.data段和.bss段
的数据段时,内核会将其转到一个全零页面,不会发生缺页中断,也不会为其分配相应的物理内存。的全局变量和静态局部变量,数据段属于静态。,从而分配相应的物理内存;占用物理文件,也占用内存空间。的全局变量和静态局部变量。:为数据段,用来存放程序中。:称为未初始化段,用来存放。的数据时,系统会发生。转载 2022-09-19 17:10:58 · 428 阅读 · 0 评论 -
C 程序的内存布局
例如,由 C 中的 char s[] = “hello world” 定义的全局字符串和 main 之外的诸如 int debug=1 的 C 语句(即全局)将存储在初始化的读写区域中。该段中的数据在程序开始执行之前由内核初始化为算术 0,未初始化的数据从数据段的末尾开始,包含所有初始化为零或源代码中没有显式初始化的全局变量和静态变量。通常,文本段是可共享的,因此对于频繁执行的程序(例如文本编辑器、C 编译器、shell 等),只需要在内存中保存一个副本。转载 2022-09-19 16:37:06 · 680 阅读 · 0 评论 -
Memory Layout of C Programs
【代码】Memory Layout of C Programs。转载 2022-09-19 16:16:26 · 152 阅读 · 0 评论 -
数据段、代码段、堆栈段、BSS段的区别
本文结合实际的例子讲述一下数据段、代码段、堆栈段以及BSS段。more。转载 2022-09-19 16:05:55 · 3243 阅读 · 0 评论 -
关于BSS解释
是哪位总统接见Dennis Ritchie,并给他骑士勋章,因为他发明了C。转载 2022-09-19 15:25:46 · 155 阅读 · 1 评论 -
关于bss段的一些思考
不占的话在程序运行前期将变量数据部署到SRAM中时一些东西就不太好处理,例如bss段不是最后一个段时就不知道要在SRAM中分配多大空间给bss段这部分数据,而且有时我们可能会将程序直接下载到SRAM中运行,总之这里需要考的东西还挺多,具体怎么实现的就没去深入研究了。在bin文件中,bss段需要占用空间吗,答案本来应该是肯定的,但这里有一点需要注意,当连接脚本中将bss段作为最后一个段时,我们会发现它不会占用bin文件的大小;中是不占用空间的,只会记录它的大小等一些标记性数据,具体细节不讨论。转载 2022-09-17 21:16:43 · 537 阅读 · 1 评论 -
bss段不占据磁盘空间的理解
里面存放的是elf文件中各个段的名字以及变量名等字符串,字符串表中记录了这些字符串以及对应的下标,需要用到这些字符串时,直接用偏移下标去取就行了。段表中存放的段的名字这一项,就是存的。段占据的大小存放在ELF文件格式中的段表(Section Table)中,段表存放了各个段的各种信息,比如段的名字、段的类型、段在elf文件中的偏移、段的大小等信息。存放未初始化的全局变量,将.data和.bss分开的理由是为了节约磁盘空间,.bss不占实际的磁盘空间。段中的数据并没有占据磁盘空间,从而节约了磁盘的空间。转载 2022-09-17 21:11:02 · 459 阅读 · 0 评论 -
C语言之父Dennis Ritchie告诉你:如何成为世界上最好的程序员?
文/译/网易云信想要阅读更多技术干货文章,欢迎关注。了解,来自网易核心架构的通信与视频云服务。我不知道如何成为世界上最好的程序员。但是,我们可以向历史上最伟大的程序员学习。该系列文章将会向大家分享C语言的创造者、Unix操作系统的关键开发者Dennis Ritchie、。Linux内核的发明人Linus Torvalds的经历与建议。获得计算机编程学位的前几天,Dennis Ritchie获得了在麻省理工学院(麻省理工学院)工作的机会。转载 2022-09-17 19:42:05 · 573 阅读 · 0 评论 -
linux反汇编简单示例
在复杂比较难的程序中比如内核调试,会用到反汇编调试,当程序遇到一些未知的变量错误等,可以直接反汇编来查看汇编代码,一切一目了然。-S 目标文件 显示反汇编代码,将反汇编代码与源代码交替显示,编译时需要使用-g参数,即需要调试信息;显示全部Header信息,并显示对应的十六进制文件代码。反汇编test中的需要执行指令的那些section。-s 文件名 显示头文件信息及所对十六进制信息。-h 文件名 显示各section的头信息。-j文件名 仅反汇编指定的section。-a 文件名 显示当前文件的格式。转载 2022-09-16 18:08:34 · 2597 阅读 · 0 评论 -
GDB调试之段信息
为了更好的调试程序,需要对程序编译后产生的库或可执行程序有一定的了解,本文主要介绍一下其中的段信息。转载 2022-09-16 12:08:12 · 1149 阅读 · 0 评论 -
GDB观察栈的内存布局
由源文件可知,main函数里面嵌套doCalc函数,doCalc函数又嵌套square函数,因此,这三个函数在栈中的分配如上图所示。每一行前面的序号,就是栈帧在栈中的序号,#0表示栈顶,#1表示下一个栈帧,以此类推。,用于存储函数的实参、局部变量、返回值,以及函数内调用函数时,当前函数的一些寄存器的相关信息(比如用于指向下一条指令的程序计数器)。栈的英文是stack,堆的英文是heap,很多人把stact翻译成堆栈,是不对的。由于函数的嵌套,栈中可能有多个栈帧,此时,可以认为,一个栈帧存储一个函数。转载 2022-09-15 21:07:59 · 1007 阅读 · 0 评论 -
再谈函数的栈帧
函数的栈帧 stack frame 这个名字非常好,主函数 main 在栈低,main 调用了sum 在栈顶,一个函数一个栈帧 (frame), 所有的frame 都在栈中,这就是函数栈帧的本意。我们发现一个问题,就是全局变量 NUM 和局部变量 cc 和c 的内存地址差距比较大,不是同一段代码吗,真么差距这么大呢。原创 2022-09-15 19:14:39 · 269 阅读 · 0 评论 -
哈工大操作系统——引导启动程序
亲爱的小伙伴你们好,不知道你有没有在学习操作系统的过程中遇到过这样那样的困难,很多次想要放弃,很多次怀疑自己的能力,但是请你相信“未来的路就在脚下,不要悲伤,不要害怕”,一定要“充满信心,期盼着明天!”。转载 2022-09-13 18:49:01 · 609 阅读 · 0 评论 -
int 0x13 读取磁盘到内存 Loading Sectors
【代码】int 0x13 读取磁盘到内存 Loading Sectors。原创 2022-09-13 18:38:02 · 409 阅读 · 0 评论 -
linux源码阅读笔记 jmpi指令(转)
他们把1024K地址空间分成16字节的段,共64K个段,用一个8085的16位寻址寄存器作地址偏移寄存器(故段的长度是64K),而另一个8085的16位寻址寄存器作16字节段的段地址寄存器,注意,他保存的不是16字节段的地址,而是16字节段的序号(0,1,...65535)。要了解发生了什么,我们要看看处理器的内部,会看到巨大的差异。但还不是一般的相加,由于相加前段基址已经左移4位,变成20位了(最低4位是0),而偏移还是16位,所以,其实是段基址和偏移的高12位相加,偏移的低4位不变。转载 2022-09-13 16:39:47 · 802 阅读 · 0 评论 -
硬盘基本术语(磁道、扇区、柱面、磁头数、簇)
由于硬盘的转速较高,磁头在完成某个扇区数据的读写后,必须将数据传输到微机,这需要一个时间,但是这时硬盘在继续高速旋转,当数据传输完成后,磁头读写第二个扇区时,磁盘已经旋转到了另外一个扇区。定位时,首先确定柱面,再确定盘面,然后确定扇区。当主电动机带动盘片旋转时,副电动机带动一组(磁头)到相对应的盘片上并确定读取正面还是反面的碟面,磁头悬浮在碟面上画出一个与盘片同心的圆形轨道(磁轨或称柱面),这时由磁头的磁感线圈感应碟面上的磁性与使用硬盘厂商指定的读取时间或数据间隔定位扇区,从而得到该扇区的数据内容。转载 2022-09-13 15:29:34 · 7119 阅读 · 0 评论 -
一、CPU的工作模式(寻址方式)
IA-32允许将一个段的Base Address设为32-bit所能表示的任何值(Limit则可以被设为32-bit所能表示的,以2^12为倍数的任何值),而不象实模式下,一个段的Base Address只能是16的倍数(因为其低4-bit是通过左移运算得来的,只能为0,从而达到使用16-bit段寄存器表示20-bit Base Address的目的),而一个段的Limit只能为固定值64 KB。事实上,在GDT中存放的不仅仅是段描述符,还有其它描述符,它们都是64-bit长,我们随后再讨论。转载 2022-09-13 13:48:21 · 578 阅读 · 0 评论 -
把 用寄存器做内存就一定能提高计算机的效率吗
link 3 * 10** 8* 0.25*10**-9=0.075 m原创 2022-09-08 16:38:15 · 174 阅读 · 0 评论 -
磁盘文件系统网站
https://www.ntfs.com/index.html原创 2022-09-05 15:36:03 · 118 阅读 · 0 评论 -
FAT32、exFAT 和 NTFS 之间有什么区别?
NTFS 最初出现在 Windows XP 的消费者版本的 Windows 中,尽管它最初是在 Windows NT 中首次亮相的。exFAT 是 FAT32 的现代替代品——与 NTFS 相比,支持它的设备和操作系统更多——但它的普及程度不如 FAT32。FAT32 是一种较旧的文件系统,它不如 NTFS 高效,也不支持那么大的功能集,但确实提供了与其他操作系统的更大兼容性。了优化 — 设计为像 FAT32 一样的轻量级文件系统,但没有 NTFS 的额外功能和开销,也没有 FAT32 的限制。原创 2022-09-05 15:30:29 · 7505 阅读 · 0 评论 -
磁盘的零扇区物理位置
对于计算机的操作系统来说,磁道是逻辑结构而非物理结构,是在磁盘低级格式化时建立的。磁道被编号,从 0(磁盘的最外边缘)开始,一直到编号最高的磁道,通常为 1023,(靠近中心)。轨道定位数据在工厂组装期间被写入磁盘。扇区是磁盘上最小的物理存储单元,其大小几乎总是 512 字节,因为 512 是 2 的幂(2 的 9 次幂)。磁道被编号,从 0(磁盘的最外边缘)开始,一直到编号最高的磁道,通常为 1023,(靠近中心)。为了补偿这种物理差异,靠近磁盘外部的磁道填充数据的密度低于靠近磁盘中心的磁道。原创 2022-09-05 13:40:31 · 1410 阅读 · 0 评论 -
线程是如何实现的?
本文是《深入理解操作系统》第五章,从本章开始将开启第二个重要的主题:线程,这一章也是进程这一重要概念的延续。彻底理解线程对程序员来说极为关键,本章就从程序员的角度来讲解到底什么是线程、操作系统是如何实现线程。本文承接上文《程序员应如何理解线程》,以下为本篇目录:进程的实现:PCB在用户态实现线程在内核态实现线程Linux中的线程实现总结进程的实现:PCB在用户态实现线程在内核态实现线程Linux中的线程实现总结原创 2022-09-02 17:30:23 · 1157 阅读 · 1 评论 -
进程是如何终止的?
其实,这种方式本质上是这样的,杀手进程(Windows中的资源管理器进程,是的,资源管理器也是一个进程,Linux中的kill进程)通过系统调用向操作系统发起请求,请求操作系统终止掉某个进程,操作系统响应该杀手进程的请求,将该进程终止掉。同进程可以创建进程一样,一个进程同样可以终止掉另一个进程。本节是进程三部曲的最后一篇,在经历了进程创建和进程运行之后,进程迎来终结,是的,任何进程都不会一直运行,当进程终止后,程序不再运行,进程所占用的资源(内存,打开的文件等等)将被操作系统回收。转载 2022-09-02 09:08:52 · 2060 阅读 · 0 评论 -
操作系统终止进程
著名的Segmentation Fault段错误,这个错误就是由于我们的进程试图越狱访问不属于自己的内存空间时而被操作系统kill掉了。一般这种错误同样是程序的bug引起的。原创 2022-09-02 09:07:39 · 452 阅读 · 0 评论 -
彻底理解操作系统:CPU与实模式
点击下载《计算机底层的秘密》 PDFmp.weixin.qq.com/s?而这个问题在内存地址没有任何保护情况下更加严重,因为这时不是一个进程而是多有进程包括操作系统都共享同一个物理内存地址,任何一个进程都可以修改内存中任何位置,你的进程可以破坏其他进程使用的内存,可以破坏操作系统使用的内存,破坏其它进程大不了重新启动这个进程,但是如果破坏了操作系统那么没有办法,此时你只能重新启动计算机,如果CPU没有提供内存保护机制,那么操作系统连自己都保护不了更何况去保护其它进程。B占用4~6这个区域的内存,转载 2022-09-01 17:51:16 · 908 阅读 · 0 评论 -
操作系统经典文章
操作系统也是这样,操作系统为程序员编写的程序提供了一个良好的运行环境,使得多种多样的程序在系统资源有限的情况下(CPU数量有限,内存容量有限)也可以畅通无阻的运行下去,同时操作系统对于“不法分子”也会予以惩戒,当我们的程序存在严重bug时,操作系统会毫不留情的将程序运行终止掉,防止其影响其它程序的正常运行。而对于程序员来说,在程序的运行环境中也会有一只看不见的手,这只看不见的手无时无刻不在影响着程序的运行,但你可能对此却浑然不知,对于程序员来说这只看不见的手就是操作系统,这只看不见的手就是本书的主题。...转载 2022-09-01 16:01:14 · 179 阅读 · 0 评论 -
程序员应如何理解内存(二)
link在编程语言中,堆区和栈区本质上都是内存,因此二者在本质上没有任何区别,只不过这两块内存的使用方式是不一样的。在数据结构与算法中,我们也有堆和栈的概念,但那里指的不是内存,而是两种数据结构。你可能会想,我们为什么要费尽心力的提出堆和栈这两个概念呢?之所以需要区分两种内存用法,根源在于:内存是有限的。如果计算机内存是无限的,那么我们根本就不用这么麻烦的给内存划分两个区域,在其中的一个区域中这样使用内存,另一区域那样使用内存,这些都是不需要的。即使在今天PC内存普遍都在8G、16G,这依然是不够的,因此我转载 2022-09-01 15:37:55 · 219 阅读 · 0 评论 -
彻底理解操作系统 3.2:程序员应如何理解内存
内存0和1这两个简单的数字能做什么?在其它学科中也许什么都做不了,但是在计算机科学中这就是全部。精彩纷呈的计算机世界正是构筑在这样两个简单数字之上。内存本身其实非常简单,内存的作用就是用来装数字0和数字1的,如图所示,图中的一个盒子就是内存的一个基本单元,装的不是0就是装的1。内存由一大堆的“盒子”组成,每个盒子中要么是0要么是1,其中8个盒子被称之为一个“字节”,每8个盒子也就是一个字节都有一个编号,这些编号就是简单的从0开始依次累加的,这个编号就被称之为“内存地址”。......转载 2022-09-01 14:01:25 · 222 阅读 · 0 评论 -
函数运行时在内存中是什么样子?
和游戏中的每个任务一样,当函数在运行时每个函数也要有自己的一个“小盒子”,这个小盒子中保存了函数运行时的各种信息,这些小盒子通过栈这种结构组织起来,这个小盒子就被称为栈帧,stack frames,也有的称之为call stack,不管用什么命名方式,总之,就是这里所说的小盒子,这个小盒子就是函数运行起来后占用的内存,这些小盒子构成了我们通常所说的栈区。进程和线程的运行体现在函数执行上,函数的执行除了函数内部执行的顺序执行还有子函数调用的控制转移以及子函数执行完毕的返回。...原创 2022-09-01 13:05:55 · 160 阅读 · 0 评论 -
WSL嵌入式开发系列教程 2 —— Windows 与 Linux 的文件互传
link原创 2022-08-28 11:11:37 · 622 阅读 · 0 评论 -
操作系统备份
小马虎的救星——Timeshift原创 2022-08-27 21:16:58 · 516 阅读 · 0 评论 -
Linux内核 MMU的工作原理
群内提供免费的C/C++Linux服务器开发/高级架构师学习资料资料包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等)!许多年以前,当人们还在使用DOS 或者更古老的操作系统的时候,计算机的内存还非常小,一般都是以K 为单位进行计算的,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。......原创 2022-08-26 10:29:13 · 470 阅读 · 0 评论 -
如何制作Windows11安装U盘
https://docs.docker.com/engine/install/ubuntu/原创 2022-08-25 15:06:35 · 1002 阅读 · 0 评论 -
docker 权限问题 Got permission denied while trying to connect to the Docker daemon socket at 。。。
在用户权限下docker 命令需要 sudo 否则出现以下问题通过将用户添加到docker用户组可以将sudo去掉,命令如下sudo groupadd docker #添加docker用户组 sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中 newgrp docker #更新用户组 ubuntu18.04在重启后会生效,如果不是特别着急,可以先重启然后再做docker操作。如果比较着急,可以使用置顶评论的方法...原创 2022-07-14 07:20:11 · 277 阅读 · 0 评论