
linux底层
文章平均质量分 67
linux底层技术
编程小泓哥
主要方向:AIOPS、web渗透、中间件开发。如果我写的文章对你有帮助,帮忙点赞收藏下文章,顺便在我的博客首页加下我的微信群,我们一起学习进步
展开
-
通过汇编实现引导程序
启动流程通电后,主板上BIOS或者UEFI,会加电自检(检查硬件有没错误),加载bootloader(执行程序)到内存bootloader被写死在磁盘上第一个扇区,启动后被加载到内存的一个固定的位置。BIOS去这个位置执行第一条指令。汇编码将程序烧到软盘上,用软盘启动,模拟启动过程; 文件名 boot.asm org 7c00h ; BIOS读入MBR后,从固定的0x7c00h处开始执行。因此引导程序一定要放在这个位置才能执行。 ; 下面部分和10原创 2021-01-04 23:34:38 · 1579 阅读 · 0 评论 -
linux内核同步机制
关于同步理论的一些基本概念临界区(critical area): 访问或操作共享数据的代码段简单理解:synchronized大括号中部分(原子性)竞争条件(race conditions)两个线程同时拥有临界区的执行权数据不一致:(data unconsistency) 由竞争条件引起的数据破坏同步(synchronization)避免race conditions锁:完成同步的手段(门锁,门后是临界区,只允许一个线程存在)上锁解锁必须具备原子性原子性(象原子一样不可分割的操作)有序性原创 2021-01-03 21:03:05 · 635 阅读 · 0 评论 -
操作系统篇-内存管理
以下主要讲述进程到内存的映射1.内存管理发展历程1.1单进程DOS时代DOS时代 - 同一时间只能有一个进程在运行,单进程windows9x开始,多个进程可以装入内存引发问题:内存撑爆互相打扰1.2 内存管理为了解决上面说的问题,引入现在的内存管理系统:使用虚拟地址、分页装入、软硬件结合寻址。1.2.1 解决内存撑爆将内存分页(因为内存不够用),内存中分成固定大小的页框4K,把硬盘上的程序也分成4K大小的块。另外维护一个页框page frame,用到哪一块,就将哪一块加载进内存中。例原创 2021-01-02 23:57:50 · 2007 阅读 · 9 评论 -
操作系统篇-cpu
汇编语言(机器语言)的执行过程计算机通电 -> CPU读取内存中程序(电信号输入)->时钟发生器不断震荡通断电 ->推动CPU内部一步一步执行(执行多少步取决于指令需要的时钟周期)->计算完成->写回(电信号)->写给显卡输出(sout,或者图形)cpu为什么需要时钟发生器:时钟是为了同步CPU中各种门电路。超线程四核八线程 其实就是一个ALU对应2个寄存器(registers),平时在读取数据的时候,就会把一个线程相关的数据存储在寄存器里,指令地址存储在PC原创 2020-10-13 23:51:25 · 1879 阅读 · 2 评论 -
操作系统篇-进程管理和中断
以下针对java来说明1. 进程 线程 纤程进程和线程区别进程就是一个程序运行起来的状态,线程是一个进程中的不同的执行路径。进程是OS分配资源的基本单位,线程是执行调度的基本单位。分配资源最重要的是:独立的内存空间,线程调度执行(线程共享进程的内存空间,没有自己独立的内存空间)线程在Linux中的实现《Linux内核设计与实现》第三版28页线程在Linux就是一个普通的进程,只不过和其他进程共享资源(内存空间,全局数据等)其他系统都有各自所谓的LWP的实现 Light Weight Pro原创 2020-10-11 22:13:56 · 2836 阅读 · 33 评论 -
通俗理解BIO NIO select epoll并图解举例
BIO操作系统内核提供 read(系统调用),读文件描述符一个client连接就是一个文件描述符fdsocket为阻塞的,socket产生的文件描述符,如左边的fd8,当数据包没到的时候,上面左边read不能返回,阻塞着。即有一个client连接,就需要开一个进程(或者线程),读这个连接,有数据就处理,没数据就阻塞着。问题:几个连接几个进程(线程),一个cpu在某一时间片上,只能一个进程(线程)处理,如果自己的数据还没到,就算另外一个数据到了,也没办法处理。造成cpu资源浪费,没办法时刻处理到达原创 2020-09-16 23:44:59 · 2314 阅读 · 30 评论