System
Pipci
这个作者很懒,什么都没留下…
展开
-
socket的概念和原理
一、 socket概念套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。一个Socket是一对IP地址和端口。Socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socke...原创 2020-04-26 22:25:57 · 4718 阅读 · 0 评论 -
内核态与用户态的区别,这个写的比较好
有一些问题相当基础嘛……应该是初学计算机组成原理和操作系统吧,建议首先先集中力量在计算机组成原理上,不过的确单看计算机组成原理也比较枯燥,可以结合起来稍微讲一下。太长不看的提前总结:内核态,或者说CPU的特权模式,是CPU的一种工作状态,它影响CPU对不同指令的执行结果。操作系统通过跟CPU配合,设置特权模式和用户模式,来防止应用程序进行越权的操作 防止应用程序越权访问内存时使用了...转载 2020-04-25 21:32:16 · 408 阅读 · 0 评论 -
一种新的操作系统设计
我一直在试图利用程序语言的设计原理,设计一种超越“Unix 哲学”的操作系统。这里是我的设想:这种系统里面的程序间通信不使用无结构的字符串,而是使用带有类型和结构的数据。在这样的系统里面,Unix 和其它类似操作系统(比如 Windows)里的所谓“应用程序”的概念基本上完全消失。系统由一个个很小的“函数”组成,每个函数都可以调用另外一个函数,通过参数传递数据。每个函数都可以手动或者自动并发执...转载 2020-04-21 22:54:58 · 285 阅读 · 0 评论 -
MMU内存管理单元
arm-linux学习-(MMU内存管理单元)什么是MMUMMU(Memory Management Unit)主要用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权、多任务多进程操作系统。(来自百度百科,对其几个点不熟悉,因此可以只考虑加粗部分)发展历史注意:学习一个知识点,很重要的一步是了解其为什么而存在?它的存在是为了解...转载 2020-04-25 21:32:07 · 635 阅读 · 0 评论 -
段页式访存——线性地址到物理地址的转换
前言:段页式的访存的内容还没有结束。。。还有一部分知识,线性地址到物理地址的转换。话不多说,让我们开始吧。假设页的大小是 4KB,每个页表项占 4B,则理论上一个页表有多大?(虚拟空间大小是 4GB)页表项数目 = 4 GB / 4 KB = 1 MB所以,页表大小 = 1 MB × 4 B = 4 MB注意!页的大小是 4KB。也就是说,一个页是放不下的。所以我们要采...转载 2020-04-21 22:51:14 · 1252 阅读 · 0 评论 -
段页式访存——逻辑地址到线性地址的转换
继续底层知识,想要看懂 PWN 题和理解汇编代码,必须要搞懂这些底层知识啊。搞懂 movl 8(%ebp), %eax(IA-32 架构)真的不容易。。。movl 8(%ebp), %eax(IA-32)首先我们来看这条指令什么意思:把内存中某个地址的 32 位数据,放入 eax 寄存器中。你可以理解为地址为:%ebp + 8。但是,这只是虚拟地址。而且在 IA-32 架构中,虚拟存储...转载 2020-04-21 22:50:27 · 854 阅读 · 0 评论 -
linux内存管理---虚拟地址、逻辑地址、线性地址、物理地址的区别
分析linux内存管理机制,离不了上述几个概念,在介绍上述几个概念之前,先从《深入理解linux内核》这本书中摘抄几段关于上述名词的解释:一、《深入理解linux内核》的解释逻辑地址(Logical Address) 包含在机器语言指令中用来指定一个操作数或一条指令的地址(有点深奥)。这种寻址方式在80x86著名的分段结构中表现得尤为具体,它促使windows程序员把程序分...转载 2020-04-21 22:48:46 · 423 阅读 · 0 评论 -
Linux内存管理图解(2)线性地址转物理地址
二、线性地址转物理地址前面说了Linux中逻辑地址等于线性地址,那么线性地址怎么对应到物理地址呢?这个大家都知道,那就是通过分页机制,具体的说,就是通过页表查找来对应物理地址。分页是CPU提供的一种机制,Linux只是根据这种机制的规则,利用它实现了内存管理。分页的基本原理是把线性地址分成固定长度的单元,称为页(page)。页内部连续的线性地址映射到连续的物理地址中。X86每页为4KB(为简...转载 2020-04-21 22:47:39 · 272 阅读 · 0 评论 -
Linux内存管理图解(1)逻辑地址转线性地址
研究内核时间不长,前几天画了个内存管理大图,感觉太乱,准备细分写点东西也算是整理一下自己的思路。都是一个人瞎琢磨的,周围没有可以交流的,不正确的地方请指出来。一、逻辑地址转线性地址 机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到。我们写个最简单的hello world程序,用gcc编译,再反编译后会看到...转载 2020-04-21 22:46:52 · 201 阅读 · 0 评论 -
逻辑地址、线性地址、物理地址、虚拟地址、地址空间、特权级
蛋疼的概念,总是让人琢磨不透,每每遇到这些形似的名词,我总感觉是我小学时候近义词练习做少了。因为每次我都要花很多时间才能真正的能够说服自己的搞懂这些概念。逻辑地址:很简单,就是你源程序里使用的地址,或者源代码经过编译以后编译器将一些标号,变量转换成的地址,或者相对于当前段的偏移地址。线性地址:这个地址很重要,也很不容易理解。分段机制下CPU寻址是二维的地址即,段地址:偏移地址,CPU不可能认识二维...转载 2020-04-21 22:45:30 · 206 阅读 · 0 评论 -
通俗理解物理地址、逻辑地址、线性地址、虚拟地址、有效地址的区别
物理地址:物理地址就是内存单元的绝对地址,比如你有一个4G的内存条插在电脑上,物理地址0x0000就表示内存条的第一个存储单元,0x0010就表示内存条的第17个存储单元,不管CPU内部怎么处理地址,最终访问的都是物理地址。在CPU实模式下“段基址+段内偏移地址”就是物理地址,CPU可以使用此地址直接访问内存。线性地址、虚拟地址:CPU在保护模式下,“段基址+段内偏移地址”叫做线性地址,注意,...转载 2020-04-21 22:44:28 · 1966 阅读 · 0 评论 -
函数调用与系统调用区别
系统调用就是通过系统api操作由操作系统统一管理的资源,比如设备、文件、内存、进程、进程间通信。系统调用运行在系统的核心态,需要内核上下文环境从用户态的函数调用切换到核心态的系统调用,需要通过中断实现,当执行系统调用时,先将参数压入栈寄存器,然后通过中断将控制器交给操作系统,操作系统根据系统调用码查找系统调用表得到相应的访问地址,执行系统调用,将结果返回给用户程序。这过程中需要切换两次上下文,...转载 2020-04-21 22:41:15 · 321 阅读 · 0 评论 -
关于程序状态字寄存器PSW(Program Status Word)与多核多线程
内核态(Kernel Mode)与用户态(User Mode) CPU通常有两种工作模式即:内核态和用户态,而在PSW中有一个二进制位控制这两种模式。 内核态:当CPU运行在内核态时,程序可以访问所有指令集,操作所有硬件设备,也可以将自己从一个程序切换到另一个程序。 用户态:当CPU运行在用户态时,程序只能执行cpu整个指令集的一个子集(不包含操作硬件功能的部分),只能受限的访问...转载 2020-04-13 22:27:29 · 2079 阅读 · 1 评论 -
进程与线程的一个简单解释
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一...转载 2020-04-12 22:41:20 · 105 阅读 · 0 评论 -
进程、线程与处理器的调度
(1)进程的概念(Dijkstra)进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和调度的基本单位。(2)进程与程序的联系与区别① 程序是指令的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。② 程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的。注...转载 2020-04-08 22:48:51 · 560 阅读 · 0 评论