
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
前面已经弄清楚了.o、ELF、Section、Segment 和静态链接。./main程序显然不会凭空出现在内存里。操作系统需要先读取 ELF 文件,建立进程的地址空间,把程序需要的内容加载进去。这些动态库也得处理。这一篇主要把这部分串起来。

学完 Ext2 之后,我觉得最重要的不是死记几个结构,而是把它们之间的关系真正串起来。Partition↓多个 Block Group├── GDT文件名↓目录↓inode↓文件属性数据块映射↓↓真正的文件内容把磁盘上的各种资源组织起来,让操作系统能够快速找到文件,同时知道哪些资源已经使用、哪些资源还可以继续分配。以前看到inode这些名词的时候,感觉都是零散的知识点。现在把它们放到一起之后,就能

应用程序↓↓FILE↓C标准库缓冲区↓文件描述符 fd↓↓Linux系统调用↓内核中的 struct file↓↓具体文件 / 设备这个关系一旦理解,之前很多看似零散的知识就全部串起来了。打开文件↓读取↓写入↓关闭一个简单的printf(),背后其实隐藏着标准库、缓冲区、文件描述符、系统调用以及 Linux 内核中的文件对象。不断从一个简单的 API 往下挖,直到看到它背后的操作系统机制。

四天学习下来,我觉得最大的收获并不是记住几个函数,而是逐渐建立了一个完整的 Linux 进程模型。计算机↓冯诺依曼体系操作系统↓管理硬件和软件资源进程↓↓PCB↓PID / PPIDfork↓父子进程↓进程状态↓僵尸 / 孤儿↓进程调度进程地址空间↓虚拟地址↓页表↓mm_struct↓VMA↓物理内存int a = 10;就是简单地“定义一个变量”。进程↓虚拟地址空间↓页表↓物理内存↓操作系统这么

程序的一次执行实例。但仅仅这样理解还不够。进程是承担系统资源分配的实体。也就是说,进程不仅仅是磁盘上的一份代码。进程程序代码程序数据操作系统要管理一个进程,就必须先描述这个进程。PCB——Process Control Block,进程控制块。Linux 会用描述进程,而且这个结构体会被加载到内存中。getpid();获取当前进程的 PID。getppid();获得当前进程的父进程 PID。进程不

我们平时使用的电脑、服务器,本质上都属于计算机系统。输入设备CPU内存输出设备比如键盘、鼠标属于输入设备,显示器属于输出设备,CPU 负责计算和控制,而内存负责保存程序运行过程中需要的数据。CPU 主要和内存进行数据交互,外设的数据也需要通过内存与 CPU 或其他部分发生联系。所有设备都只能直接和内存打交道。计算机系统都包含一个基本的程序集合,这个程序集合就是操作系统。操作系统├── 内核│ ├─
作为一名大二学生,现在的我还只是刚刚开始接触 Linux 系统编程。目前掌握的东西还非常基础,但我觉得基础反而是最重要的。文件描述符系统调用进程forkexec进程间通信信号网络编程的时候,前面这些知识都会成为基础。先把基础打牢,再一点一点往操作系统内部走。Linux 学习之路,继续。







