linux内核笔记

1.ram和rom的区别

内存条就是RAM类型,断电时将丢失存储内容,用于存储短时间内存储的程序。

硬盘是ROM类型,不会因为断电丢失内存内容,用于存储长时间内存储的程序。


2.操作系统必须完成哪两个目标

与硬件部分交互,为包含在硬件平台上的所有低层可编程部件提供服务。

为运行在计算机系统上的应用程序(即所谓用户程序)提供执行环境。


3.物理地址与逻辑地址

物理地址:在存储器里以字节为单位存储信息,为了正确的存放或取得信息,每一个字节单元给一个唯一的存储地址,称为物理地址,

又叫实际地址或绝对地址。

逻辑地址:在有地址变换功能的计算机中,访内指令给出的地址(操作数)叫逻辑地址,也叫相对地址。

要经过寻址方式的计算或变换才能得到内存储器中的物理地址。


线性地址,逻辑地址,物理地址的区别

线性地址是逻辑地址到物理地址转换的中间层,是处理器可寻址的内存空间(称为线性地址空间)中的地址。程序代码会产生逻辑地址,或者说是

段中的偏移地址,加上相应段的基地址就生成了一个线性地址。

如果经过了分页机制,那么线性地址就可以再经变化产生一个物理地址。若没有启用分页机制,那么线性地址直接就是物理地址。不过在开启分页机制

之后,一个线性地址可能没有相对应的物理地址,因为它所对应的内存可能被交换到硬盘中。32位线性地址可用于地位4GB存储单元。


所谓物理地址就是指系统内存的真正地址。对于32位的操作系统,它的范围为0X00000000~0XFFFFFFFF,共有4GB。只有当CPU工作于分页模式,

此地址才变得非常”有趣“。本质上,一个物理地址是CPU插脚上可测量的电压。操作系统通过设立页表将线性地址映射为物理地址。

分页机制把线性地址空间和物理地址空间分为划分为大小相同的块。这样的块称为页。通过在线性地址空间的页与物理地址空间的页之间建立映射,

分页机制可以实现线性地址到物理地址之间的。线性地址空间的页与物理地址空间的页之间的映射可根据需要来决定。

线性地址空间的任何一页可以映射为物理地址空间的任何一页。



逻辑地址是指由程式产生的和段相关的偏移地址部分。例如你在进行C语言指针编程中,能读取指针变量本身指(&操作),实际上这个值就是逻辑地址,

它是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Inter实模式下,逻辑地址才和物理地址相等(因为实模式没有分段和分页机制,c

pu不能进行自动地址转换);逻辑也就是在Inter保护模式下程式执行代码段限长内的偏移地址(假定代码段数据段完全相同)。应用程序员仅需要和逻辑

地址打交道,而分页和分段机制对你来说是完全透明的,仅有系统编程人员涉及。应用程序虽然能自己直接操作内存,那也只能在操作系统给你分配的内存

段工作。


线性地址是逻辑地址到物理地址转换的中间层。程式代码会产生逻辑地址,或说是段中的偏移地址,加上相应段的基地址就生成了一个线性地址。如果启用了

分页机制,那么线性地址就能再经变换产生一个物理地址。若没有启用分页机制,那么线性地址就直接是物理地址。Inter80X86的线性地址空间容量为4G

(2的32次方即32根地址总线寻址)。


物理地址是目前CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址。如果启用了分页机制,那么线性地址会使用页目录和页表中的

项变换成物理地址。如果没有启用分页机制,那么线性地址就直接成为物理地址了。


虚拟内存是指计算机呈现出要比实际拥有的内存要大的多的内存量。因此它允许程式员编制并运行比实际系统拥有的内存要大的多的程式。这使得许多大型项目

能够在具有有限内存资源的系统上实现。一个非常恰当的比喻是,你不必用非常长的轨道就能让一列火车从上海开到北京。

“你只需要足够长的铁轨(比如说3公里)就能完成这个任务。采取的方式是放后面的铁轨即时铺到火车前面,只要你的操作足够快并能满足需求,列车就像在一条

完整的轨道上运行。”

这也就是虚拟内存管理所要完成的任务。在Linux1.01内核中,给每个程式(进程)都划分了总容量为64KB的虚拟内存空间。因为程式的逻辑地址范围是0x0000000

到0x4000000。有时我们也把逻辑地址称为虚拟地址。因为和虚拟内存空间的概念类似,逻辑地址也是和实际物理内存地址无关的。逻辑地址和物理地址的“差距”是

0xC0000000,是由于虚拟地址-》线性地址-》物理地址映射正好差这个值,这个值是由操作系统指定的。

机理:

逻辑地址(或称为虚拟地址)到线性地址是由CPU的段机制自动转换的。如果没有开启分页管理,则线性地址就是物理地址。如果开启了分页管理,那么系统程式

需要参合线性地址到物理地址的转换过程,具体是通过设置页目录表和页表项进行的。是地址变换的最终结果地址。


4.为什么要使用逻辑地址

存储单元的地址很多情况下都放在cpu的寄存器中,通过寄存器来间接访问存储器。但是8088/8086的寄存器都是16位的,放不下20位的物理地址。

显然,通过寄存器中存放的地址来访问1MB的存储空间是不可能的。解决的方法就是将地址空间分段,即将1MB的地址空间分为若干个64KB的段,

然后用段基地址和段内偏移地址来访问物理存储器。



绝对路径和相对路径

为了标识一个特定的文件,进程使用路径名,路径名由斜杠及一系列指向文件的目录名交替组成。如果路径名的第一个字符是斜杠,那么这个路径就是所谓

的绝对路径,因为它的起点是根目录。否则,如果第一项是目录名或文件名,那么这个路径就是所谓的相对路径,因为它的起点是进程的当前目录。


为什么要分页和分段

硬链接和软连接


内核线程

除用户进程外,Unix系统还包括几个所谓内核线程的特权进程,它们具有以下几个特点:

1.它们以内核态运行在内核地址空间

2.它们不与用户直接交互,因此不需要终端设备

3.它们通常在系统启动时创建,然后一直处于活跃状态直到系统关闭。


linux进程7种状态

可重入函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值