Linux
文章平均质量分 66
可爱的小小小狼
精读各种经典书籍,喜欢总结读书笔记。
展开
-
linux的网络IO驱动模型
当应用程序从套接字接收数据时,数据首先被复制到内核的套接字接收缓冲区中。然后,当应用程序调用类似于 read() 系统调用时,内核会将数据从套接字接收缓冲区复制到相应的应用程序的进程空间中。原创 2024-05-23 16:02:42 · 576 阅读 · 0 评论 -
linux的shell的管道的常用命令
管道是一个缓冲区,将一个程序的标准输出到管道里,另一个程序的标准输入为管道出口。管道的语法非常简单,使用竖线符号 | 将两个命令连接起来。原创 2024-04-22 23:52:13 · 265 阅读 · 0 评论 -
linux
通过fork()在父进程下创建子进程页节点,使用和父进程完全相同的内存区域,pc也是相同,然后使用exec()更换栈,代码段所有区域(更换中需要指明)从而执行一个不同的程序。进程一般有3个文件描述符,0是标准输入,1是标准输出,2是错误输出,我们打开文件,就是返回了文件描述符,存在了进程pcb中。创建一个管道返回两个文件描述符,一个用来读一个用来写,读是从头读,写是尾追加写,但起始位置都是文件开始。fork()和exec()原创 2024-04-10 09:17:25 · 113 阅读 · 0 评论 -
Linux的可移植性
不顾可移植性,尽可能多地使用汇编代码。linux在可移植性上,走的是中间路线,所有接口和核心代码都是用的c语言,但是对于性能要求高的部分都会根据硬件进行调整。原创 2024-02-08 11:58:39 · 703 阅读 · 0 评论 -
LInux页高速缓存和页写回
页缓存是由内存中的物理页面组成的,其内容对应磁盘上的物理块。页缓存大小能动态调整,可以占用空闲内存以扩大大小,也可以自我收缩缓解内存使用压力。如果读一个磁盘内容,我们会读内存,如果存在,则为缓存命中,如果没有命中,则会调用块io操作从磁盘读取数据,然后放到内存中。缓存可以持有文件的全部内容,也可以存储文件的几页。原创 2024-02-06 23:32:27 · 205 阅读 · 0 评论 -
Linux进程地址空间
进程地址空间由可寻址的虚拟内存组成。原创 2024-02-06 23:19:39 · 638 阅读 · 0 评论 -
linux块IO层
块设备可以随机访问,字符设备只能有序字符流访问。最常见的块设备是硬盘,还有软盘驱动器,蓝光光驱,闪存等。他们都是以安装文件系统的方式使用的。另一种块设备类型是字符设备,字符设备以字符流的方式被有序访问,像串口和U盘就属于字符设备。原创 2024-02-06 18:11:08 · 536 阅读 · 1 评论 -
Linux虚拟文件系统(VFS)
虚拟文件系统的目的:通过一个抽象层,存储设备使用不同的文件系统都可以通过相同的接口访问:open(),red(),write();原创 2024-02-06 17:03:39 · 1139 阅读 · 0 评论 -
Linux内核的内存管理
内核中的分配内存和进程中的很不同,内核不能睡眠。原创 2024-02-05 10:48:45 · 778 阅读 · 0 评论 -
Linux定时器和时间管理
时间驱动的函数,周期执行的函数都需要定时器。有两种硬件实现计时:系统计时器和实时时钟。原创 2024-02-05 09:26:06 · 400 阅读 · 0 评论 -
Linux的内核同步
多个线程操作的共享数据的代码区域。原创 2024-02-03 23:11:02 · 244 阅读 · 0 评论 -
Linux中断下半部分:软中断,tasklet和工作队列
此外,内核定时器和tasklet都是建立在软中断上的。每个tasklet都存放在两个链表中的其一: tasklet_vec(普通tasklet),tasklet_hi_vec(高优先级tasklet).软中断有32位,因为do_softirq()是从下到大的遍历位图,所以小的索引会在大的索引之前执行,索引具有优先级。一个注册的软中断只有在标记后才会执行,中断处理程序会在返回前标记它的软中断,使其在稍后执行。软中断使用较少(相对于tasklet),但是tasklet是基于软中断实现的。原创 2024-02-03 21:39:55 · 1101 阅读 · 0 评论 -
Linux的中断和中断处理
硬件在需要时候向内核发出信号。从物理学角度看中断是一种电信号,由硬件产生,并直接送入中断控制器的输入引脚中,中断控制器是一个多路复用的控制器,当从多个引脚之一接收到信号后,会通知处理器,此时处理器会中断当前工作转而处理中断,并且通知操作系统已经产生中断,操作系统运行处理中断的程序。原创 2024-01-30 15:42:44 · 500 阅读 · 0 评论 -
内核和进程的内存管理,内核从buddy到alloc到slab到kmalloc,内核的内核栈和中断处理程序栈,进程的虚拟内存到页表
内核把物理页作为内存管理的基本单位,尽管处理器最小寻址单位为字,但是MMU(管理内存并且把虚拟地址转换为物理地址的硬件)通常以页为单位进行处理。每个物理页面都由一个相应的 struct page 结构来表示,4GB的内存大约有20MB的空间是存储每个物理页的struct page。通过mapping字段可以获取到与页面关联的地址空间对象,拥有者可以是用户空间进程,动态分配的内核数据,静态内核代码和页高速缓存等。内核把物理页划分为不同的区(zone),只是逻辑上的划分。将内存划分为区,形成不同的内存池。原创 2024-01-29 18:23:11 · 1468 阅读 · 0 评论 -
linux内存
TLB快表装的是正在活动的进程的页,在块表中没有就去页表找,然后载入快表。MMU将逻辑地址转换为物理地址然后送入总线。每个进程在自己的页表。原创 2024-01-27 17:15:38 · 119 阅读 · 0 评论 -
linux链接和装入和重定位
pcb中会存储这个进程的基地址和长度。基址寄存器和限长寄存器,将运行进程的PCB中的基地址和限长存入这两个寄存器,保证不发生越界。原创 2024-01-27 12:48:54 · 222 阅读 · 0 评论 -
LINUX系统调用
系统调用抽象了文件系统和磁盘等。系统调用包装安全。linux中,系统调用是访问内核的唯一手段,除了异常和陷入外,它是唯一合法入口。原创 2024-01-26 18:09:55 · 408 阅读 · 0 评论 -
Linux进程调度
调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间。原创 2024-01-26 13:37:17 · 1110 阅读 · 0 评论 -
进程间通信
低级通信:锁和信号量。高级通信:消息多。原创 2024-01-25 18:46:40 · 131 阅读 · 0 评论 -
Linux进程管理
内核调度的对象是线程,Linux不区分线程和进程,线程只不过是特殊的进程。进程是执行期的代码和相关资源的总和。调用fork()的进程为父进程,新产生的进程称为子进程,在该调用结束时,再返回到这个相同位置,父进程恢复执行,子进程开始执行。创建好进程后,使用exec()就可以创建新的地址空间,并把新的代码程序载入执行。原创 2024-01-24 20:27:05 · 929 阅读 · 0 评论 -
Linux简介
Unix已经发展成为一个支持多任务,多线程,虚拟内存,换页,动态链接和TCP/IP网络的现代操作系统。操作系统包括:内核,设备驱动程序,启动引导程序,命令行Shell或者其他种类用户界面,文件管理工具和系统工具。原创 2024-01-24 13:26:34 · 2164 阅读 · 0 评论