操作系统
文章平均质量分 70
枷飏
华中科技大学研二在读
展开
-
linux源码剖析 | 进程(task)数据结构 上
目录任务 ID信号处理任务状态进程调度标题写进程主要是为了引流吧。在 Linux 里面,无论是进程,还是线程,到了内核里面,我们统一都叫任务(Task)。由一个统一的结构 task_struct 进行管理。 Linux 内核有一个链表,将所有的 task_struct 串起来。struct list_head tasks;task_struct 里面涉及任务 ID:pid 是 process idtgid 是 thread group ID。如果只有主线程: pid 是自己,tgid 是自己,grou原创 2022-07-14 10:28:11 · 359 阅读 · 0 评论 -
linux源码剖析 | 系统调用过程简介
Linux 提供了 glibc 这个中介。它更熟悉系统调用的细节,并且可以封装成更加友好的接口,用户可以直接用。通过 push 和 SAVE_ALL 将当前用户态的寄存器,保存在 pt_regs 结构里面 ds,cs与ip,ss与sp寄存器(1)ds (Data Segment) 数据段寄存器当我们想读取一个指定的内存单元上的数据时,我们可以通过把数据所在的内存段地址放入到ds寄存器中去,然后读取或者写入数据时就可以通过该ds寄存器内的段地址偏移得到我们的数据,或者偏移后写入数据(2)cs(代码段寄存器)与原创 2022-07-14 10:14:34 · 183 阅读 · 0 评论 -
linux源码剖析 | linux内核初始化相关系统调用与功能
内核的启动从入口函数 start_kernel() 开始。在 init/main.c 文件中,start_kernel 相当于内核的 main 函数,内部有很多init函数:首先:创建0号进程init_task定义是 struct task_struct init_task = INIT_TASK(init_task)。它是系统创建的第一个进程,我们称为 0 号进程。这是唯一一个没有通过 fork 或者 kernel_thread 产生的进程,是进程列表的第一个。该进程就是后续其他项目复制的根。里面设置了很原创 2022-07-12 17:19:46 · 183 阅读 · 0 评论 -
操作系统导论相关名词缩写记录
TLB我们要增加所谓的(由于历史原因[CP78])地址转换旁路缓冲存储器(translation-lookasidebuffer,TLB[CG68,C95]),它就是频繁发生的虚拟到物理地址转换的硬件缓存(cache)。因此,更好的名称应该是地址转换缓存(address-translation cache)。VPN虚拟页面号(virtual page number,VPN)和页内的偏移量(offset)PFN物理帧号(PFN)(有时也称为物理页号,physical page number 或原创 2021-12-29 19:38:00 · 198 阅读 · 0 评论