linux加载文件到内存|linux的内核是由bootloader装载到内存中的

linux加载文件到内存|linux的内核是由bootloader装载到内存中的的第1张示图

1. linux启动时加载内核到内存中,那这样是不是意味着系统正常启动后就可以把内核删掉了啊(当然就没有办法

恩可以删除掉。Linux内核可以加载到RAM中,加载的源头可以是硬盘也可以是网络上的某个节点。如果是硬盘的话,删除掉也没有关系。网络节点的话,拔下网线也没有关系。但是要注意,文件系统是不允许被你删除掉的。文件系统和内核是两码事。你想解决什么具体的问题呢?

2. linux是如何把一个应用程序或者文档加载到内存的

答:RSS列 表示, 程序占用了多少物理内存。 虚拟内存可以不用考虑,它并版不占用实际物理内存。 (2). top 命令也权可以 其中VIRT(或VSS)列 表示,程序占用了多少虚拟内存。 同 ps aux 中的 VSZ列 RES列 表示, 程序占用了多少物理内存。同 ps aux 中的R…

3. linux ELF文件如何得到加载到内存后的末尾

首先对于CPU来说它‘看’到的永远是真实的地址,你想CPU就是一个硬件,它懂什么虚拟内。所以说虚容拟地址是对于应用程序来说的,比如说VI,它被执行的时候的确是要分配内存,但是,是谁分配?是linux!也就是说比如vi是你写的程序,你写mov ds,ax的时候分给你的0x30是linux的个程序给你的,它对应的实际的地址并不一定就是内存的0x30,也有可能是0x40,或者其他的,但是你并不用去想它对应哪个,你只要用就行了。进行的一系列变换也是linux操作系统在做这件事情。linux变换后得到一个真实的地址给CPU然后cpu去执行,也就是说在应用程序和CPU之间有一个操作系统在做怪。

4. linux c 程序启动时,动态连接库是全部加载到内存吗

linux下动态库使用小结1. 静态库和动态库的基本概念静态库,是在可执行程序连接时就已经加入到执行码中,在物理上成为执行程序的一部分;使用静态库编译的程序运行时无需该库文件支持,哪里都可以用,但是生成的可执行文件较大。动态库,是在可执行程序启动时加载到执行程序中,可以被多个可执行程序共享使用。使用动态库编译生成的程序相对较小,但运行时需要库文件支持,如果机器里没有这些库文件就不能运行。2. 如何使用动态库如何程序在连接时使用了共享库,就必须在运行的时候能够找到共享库的位置。linux的可执行程序在执行的时候默认是先搜索/lib和/usr/lib这两个目录,然后按照/etc/ld.so.conf里面的配置搜索绝对路径。同时,linux也提供了环境变量LD_LIBRARY_PATH供用户选择使用,用户可以通过设定它来查找除默认路径之外的其他路径,如查找/work/lib路径,你可以在/etc/rc.d/rc.local或其他系统启动后即可执行到的脚本添加如下语句:LD_LIBRARY_PATH =/work/lib:$(LD_LIBRARY_PATH)。并且LD_LIBRARY_PATH路径优先于系统默认路径之前查找。不过LD_LIBRARY_PATH的设定作用是全局的,过多的使用可能会影响到其他应用程序的运行,所以多用在调试。通常情况下推荐还是使用gcc的-R或-rpath选项来在编译时就指定库的查找路径,并且该库的路径信息保存在可执行文件中,运行时它会直接到该路径查找库,避免了使用LD_LIBRARY_PATH环境变量查找。3.库的链接时路径和运行时路径现代连接器在处理动态库时将链接时路径(Link-time path)和运行时路径(Run-time path)分开,用户可以通过-L指定连接时库的路径,通过-R(或-rpath)指定程序运行时库的路径,大大提高了库应用的灵活性。比如我们做嵌入式移植时#arm-linux-gcc $(CFLAGS) –o target –L/work/lib/zlib/ -llibz-1.2.3 (work/lib/zlib下是交叉编译好的zlib库),将target编译好后我们只要把zlib库拷贝到开发板的系统默认路径下即可。或者通过-rpath(或-R )、LD_LIBRARY_PATH指定查找路径。小问题:1.编译时的-L选项是否影响LD_LIBRARY_PATH的值?举一个实例:当前文件夹结构如下:test.c tools/tool下有tool.c tool.h my_err.h 以及由此生成的libtool.sotool下编译生成库文件gcc -Wall -g -shared -o tool.so tool.c在当前文件夹引用:gcc -Wall -g –o test.c -Ltools -ltool编译不报错,但是运行加载的时候就出现cannot open shared object file。如果将该库文件拷贝到/usr/lib下就没有错误,正常运行。说明编译时的-L选项并不影响环境变量LD_LIBRARY_PATH,-L只是指定了程序编译连接时库的路径,并不影响程序执行时库的路径,系统还是会到默认路径下查找该程序所需要的库。

5. linux的内核是由bootloader装载到内存中的

linux的内核的确是由bootloader装载到内存中的。linux的bootloader有2个部版分组成:bootstrap和uboot。所权以更准确点的说法是:linux的内核是由uboot装载到内存中的。内核文件本身是存放在硬盘的文件系统中,这句话就是错的。内核和文件系统是分开存储的。uboot读取kernel到内存是从kernel开始存储的地址开始读取的,而读取开始位置和读取大小,是由环境变量决定的。所以这个时候不需要文件系统的。

给你张图片,便于理解吧。这张图片是bootstrap、uboot、环境变量、kernel、文件系统在nandflash里面的存储分布。

其中rootfs.jfss2就是文件系统。

6. 如何制作一个Linux镜像(ramos)并可以通过pxe加载至内存中运行

可以的,服务器装好服务,就可以了……引导的时候会传内核和文件系统过去……反正是实现过,说可不好说,打字多费劲了

7. Linux的驱动程序是不是调用的时候才加载到内存平时在硬盘里面待着

1.是的 ,只有在运行它的时候才会占用你的内存(没有运行它的时候,它是不占用你的内存的,而是占用你的硬盘容量的)。

8. linux登陆加载配置文件顺序

linux登陆加载配置文件顺序linux登陆分为本地登陆和远程登陆远程登陆加载文件顺序a.使用telnet.ssh等连接到服务器b.服务器启动loginc.用户输入账号与口令d.服务器打开/etc/shadow,/etc/passwd核对信息。如果正确就在内存加载环境变量e.切换到主目录f.启动shell启动shell分为登陆加载和非登陆加载1.登陆加载–远程登陆或者本地使用命令xxshell-l系统加载的文件只有2个为/etc/profile和~/.bash_profile(或者.bash_login或者.profile)但是系统默认的.pash_profile里面又调用了~/.bashrc所以登陆加载shell表现为加载了3个文件profile.bash_profile.bashrc2.非登陆加载只会加载.bashrc登陆加载和非登陆加载的文件其实正好算互补关系

9. 嵌入式linux 根文件系统需要加载到内存吗

基于linux操作系统的嵌入式差别很大啊,像微波炉,洗衣机这种系统,1KB内存都绰绰有余,但是像手机的系统大概就需要64MB内存了,现在的android系统普遍需要256MB的内存才不至于卡。

未经允许不得转载:山九号 » linux加载文件到内存|linux的内核是由bootloader装载到内存中的

赞 (0)