随笔分类 - System
摘要:一、 socket概念套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。一个Socket是一对IP地址和
阅读全文
摘要:有一些问题相当基础嘛……应该是初学计算机组成原理和操作系统吧,建议首先先集中力量在计算机组成原理上,不过的确单看计算机组成原理也比较枯燥,可以结合起来稍微讲一下。 太长不看的提前总结: 内核态,或者说CPU的特权模式,是CPU的一种工作状态,它影响CPU对不同指令的执行结果。操作系统通过跟CPU配合
阅读全文
摘要:我一直在试图利用程序语言的设计原理,设计一种超越“Unix 哲学”的操作系统。这里是我的设想: 这种系统里面的程序间通信不使用无结构的字符串,而是使用带有类型和结构的数据。在这样的系统里面,Unix 和其它类似操作系统(比如 Windows)里的所谓“应用程序”的概念基本上完全消失。系统由一个个很小
阅读全文
摘要:arm-linux学习-(MMU内存管理单元) 什么是MMU MMU(Memory Management Unit)主要用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权、多任务多进程操作系统。(来自百度百科,对其几个点不熟悉,因此可以只考虑加
阅读全文
摘要:前言:段页式的访存的内容还没有结束。。。还有一部分知识,线性地址到物理地址的转换。话不多说,让我们开始吧。 假设页的大小是 4KB,每个页表项占 4B,则理论上一个页表有多大?(虚拟空间大小是 4GB) 页表项数目 = 4 GB / 4 KB = 1 MB 所以, 页表大小 = 1 MB × 4 B
阅读全文
摘要:继续底层知识,想要看懂 PWN 题和理解汇编代码,必须要搞懂这些底层知识啊。搞懂 movl 8(%ebp), %eax(IA-32 架构)真的不容易。。。 movl 8(%ebp), %eax(IA-32) 首先我们来看这条指令什么意思:把内存中某个地址的 32 位数据,放入 eax 寄存器中。你可
阅读全文
摘要:分析linux内存管理机制,离不了上述几个概念,在介绍上述几个概念之前,先从《深入理解linux内核》这本书中摘抄几段关于上述名词的解释: 一、《深入理解linux内核》的解释 逻辑地址(Logical Address) 包含在机器语言指令中用来指定一个操作数或一条指令的地址(有点深奥)。这种寻址方
阅读全文
摘要:二、线性地址转物理地址前面说了Linux中逻辑地址等于线性地址,那么线性地址怎么对应到物理地址呢?这个大家都知道,那就是通过分页机制,具体的说,就是通过页表查找来对应物理地址。分页是CPU提供的一种机制,Linux只是根据这种机制的规则,利用它实现了内存管理。分页的基本原理是把线性地址分成固定长度的
阅读全文
摘要:研究内核时间不长,前几天画了个内存管理大图,感觉太乱,准备细分写点东西也算是整理一下自己的思路。都是一个人瞎琢磨的,周围没有可以交流的,不正确的地方请指出来。一、逻辑地址转线性地址 机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才
阅读全文
摘要:蛋疼的概念,总是让人琢磨不透,每每遇到这些形似的名词,我总感觉是我小学时候近义词练习做少了。因为每次我都要花很多时间才能真正的能够说服自己的搞懂这些概念。逻辑地址:很简单,就是你源程序里使用的地址,或者源代码经过编译以后编译器将一些标号,变量转换成的地址,或者相对于当前段的偏移地址。线性地址:这个地
阅读全文
摘要:物理地址:物理地址就是内存单元的绝对地址,比如你有一个4G的内存条插在电脑上,物理地址0x0000就表示内存条的第一个存储单元,0x0010就表示内存条的第17个存储单元,不管CPU内部怎么处理地址,最终访问的都是物理地址。在CPU实模式下“段基址+段内偏移地址”就是物理地址,CPU可以使用此地址直
阅读全文
摘要:系统调用就是通过系统api操作由操作系统统一管理的资源,比如设备、文件、内存、进程、进程间通信。系统调用运行在系统的核心态,需要内核上下文环境 从用户态的函数调用切换到核心态的系统调用,需要通过中断实现,当执行系统调用时,先将参数压入栈寄存器,然后通过中断将控制器交给操作系统,操作系统根据系统调用码
阅读全文
摘要:内核态(Kernel Mode)与用户态(User Mode) CPU通常有两种工作模式即:内核态和用户态,而在PSW中有一个二进制位控制这两种模式。 内核态:当CPU运行在内核态时,程序可以访问所有指令集,操作所有硬件设备,也可以将自己从一个程序切换到另一个程序。 用户态:当CPU运行在用户态时,
阅读全文
摘要:进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。 1. 计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。 2. 假定工厂的电力有限,一次只能供给一个车间使
阅读全文
摘要:(1)进程的概念(Dijkstra) 进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和调度的基本单位。 (2)进程与程序的联系与区别 ① 程序是指令的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。 ②
阅读全文