linux-for-was是什么-Linux的招牌-was (linux-firmware)

教程大全 2025-07-16 03:43:58 浏览

Linux作为一种开源的操作系统,已经走过了20多年的时间,其发展已经长足了进步,成为了开放的软件平台,它不仅被广泛应用于 服务器 、个人电脑等领域,还在领先的科学研究和教育领域得到了广泛的应用。但是,在Linux的发展过程中,内核死锁等问题为人所诟病,为了解决这些问题,Linux社区致力于开发一种完全新的解决方案——was(Write-Ahead Storage)。

was的背景和思路

was是Linux4.4内核中引入的一项最新技术,它设计的目的是为了解决内核死锁的问题。在早期的Linux内核中,文件系统采用了基于日志的写模式,这意味着每次写入数据时,都必须同时写入内存和硬盘中。但是,这种写入方式很容易出现死锁现象,而为了解决死锁问题,就必须采用一种新的解决方案。

在分析了很多操作系统之后,开发者们发现现有的文件系统都是采用了in-place写模式,即每次写入数据时,数据会覆盖原来数据的位置,而不是写到另一个位置,这样会占用大量的磁盘空间,并且文件系统的速度也会降低。于是开发者们考虑使用write-ahead写模式,这种写模式可以先将数据写入内存中,等到一定的时机和条件满足后,再将内存中的数据写入硬盘中。

与in-place写模式相比,write-ahead写模式使用更少的磁盘空间,并且文件系统的速度也会更快,而且,使用write-ahead写模式可以解决内核死锁的问题。was就是Linux社区采用write-ahead写模式的一种新的文件系统。

was的设计架构和优势

was采用基于写日志的技术,将数据写入日志中,日志是有序的,因此可以很方便的实现数据的读取,修改和删除操作。与传统文件系统相比,was真正实现了数据和元数据的分离,元数据按照特定规则存放在日志区域,而数据直接存放在数据区,这种方法使得元数据的恢复更加简单、可靠。

was还采用了快照和COW技术,快照是用于在不改变原始内容的情况下创建备份的技术,COW技术是一种精确的内存管理技术,可以将内存中的数据复制到另外一个地方,不会影响原有数据的完整性,同时也能够提高系统的吞吐量和稳定性。

was的优点在于它具有高可靠性、高可用性、高吞吐量、高并发性和高扩展性。

was作为Linux的一个新技术,成功解决了Linux内核死锁的问题,同时在文件系统的设计和架构上也有了很大的进步,为用户提供了诸多优点。作为开源的软件平台,Linux不断地吸引着众多的开发者加入到开源社区中,推动Linux的发展,无疑是Linux的一道招牌,was的出现和应用将为Linux的未来发展开启崭新的篇章。

相关问题拓展阅读:

升级Linux操作系统内核奋斗记

升级linux内核奋斗记

我的piii dell机运行着内核2.4.的redhat,自从linux内核2.6发布以来一直想把该系统升级到内核2.6。经过一番艰辛万苦,终于成功了。为了体验一下在linux下编写多线程程序的步骤,又更新gcc和c语言库。在此愿和各位朋友共享这段经历,共享这段成果。(可能有记录错误,仅供参考)。

具体步骤包括以下内容:

1,升级内核的具体步骤

2,更新gcc

3,使用glibc2.3.5

4,使用nptl线程进行编程

在此之前,先简要地介绍一下linux内核2.6所做的改进及新增功能。linux2.6主要在以下的10个方面作了很大的改进,简单概括如下,有关详细情况,请参阅相关资料。

1)通过改善并行处理能力和采用posix线程等,提高了系统的处理能罩亏信力,从而linux真正具备大型信息系统所要求性能。

2)通过改善文件系统的输出/输入能力和提高对大容量内存的利用效率,使得linux能够更胜任大型信息系统中的数据处理。

3)加强了对数物轮据库应用程序的支持。

4)提高了抗系统高负荷时能力。

5)提高了系统的可用性,包括对不停机空此时备份和不停机时更换硬件功能的支持。

6)强化了对网络的支持,增加了对ipv6, sctp, ipsec,等的支持。

7)通过增加访问控制和内核暗号化技术,提高了系统的安全性。

8)强化了对电源的管理。

9)强化了对嵌入式cpu和系统的支持。

10)添加了更多的硬件驱动程序。

一.升级内核

1, 下载linux-2.6.3.tar.bz2(可以是更新的版本)到/usr/src

bzcat linux-2.6.3.tar.bz2 | tar xvf – cd linux-2.6.阅读readme及changes 文件,确认必须的工具软件。因为不是笔记本电脑和笔记本电脑有关的软件可以忽略。发现module-init-tools需要更新。

2,下载module-init-tools-0.9.13.tar.bz2

bzcat module-init-tools-0.9.13.tar.bz2 | tar xvf – cd module-init-tools-0.9.13 ./configure –prefix=/usr/local/module-init make make moveold make install /usr/local/module-init/in/generate-modpobe.conf > /etc/modProbe.conf成功。

3, 编译linux内核

cd /usr/src/linux-2.6.3 make menuconfig一看太麻烦了,而且许多选项不知所云。退出该程序。 执行make oldconfig,对kernel2.6新增的不熟悉的选项作不选或为缺省。

make bzimage make modules modules_install pwd /usr/src/linux-2.6.3 mv arch/i386/boot/bzimage /boot/bzimage2.6.3 mv system.map /boot/system.map-2.6.3 cd /boot mv system.map oldsystem.map ln –s system.map-2.6.3 system.map,建立sys目录

5, 修改相关文件,增加对sys的支持

在/etc/rc.d/rc.sysinit文件增加对sys的支持。

firmware

1) 找到mount –f /proc的行,在其下面,增加 mount –f /sys

2) 找到 action $ “mounting proc filesystem:” mount –n –t proc /proc /proc 在其下面,增加action $ “mounting sysfs filesystem:” mount –n –t sysfs /sys /sys.

3) 把文件中的 ksyms 改成 kallsyms

在/etc/fstab文件中,增加一行:

none /sys sysfs defaults 0 0

在/etc/rc.d/init.d/halt中,增加对sys的支持,把 awk ‘$2 ~/^/$ | ^/proc | ^/dev / {next} 变为:

awk ‘$2 ~/^/$ | ^/proc | ^/sys | ^/dev / {next}

6,启动

修改/etc/lilo.conf, 增加下面的设置

… image=/boot/bzimange2.6.3 label=linux2.6.3 read-only root=/dev/hda3(由自己的pc设置决定)成功。

二,更新gcc (因为gcc2.95.3无法编译glibc-2.3.5)

下载gcc-3.4.4.tar.bz2

bzcat gcc-3.4.4.tar.bz2 | tar xvf – cd gcc-3.4.4 ./configure –prefix=/usr/local/gcc344 –enable-shared –enable-threads –enable-threads=posix –enable-languages=c,c++,f77 make bootstrap (因为使用cflags选项时,出错了,所以省略) make install ln –s /usr/local/gcc344/bin/gcc /usr/bin/gcc

三,使用glibc-2.3.5

1)、通过调查发现要编译glibc-2.3.5,要求binutils在2.13以上。所以必须安inutils-2.14

下载binutils-2.14.tar.gz

tar zxpvf binutils-2.14.tar.gz mkdir binutils-build cd binutils-build ../binutils-2.14/configure –prefix=/usr –enable-shared make tooldir=/usr make check make tooldir=/usr install cp ../binutils-2.14/include/libiberty.h /usr/include) 安装glibc-2.3.5

下载 glibc-2.3.5.tar.gz 和 glibc-2.3.5-fix_test-1.patch

tar zxpvf glibc-2.3.5.tar.gz patch –np1 –i ../glibc-2.3.5-fix_test-1.path mkdir glibc-build cd glibc-build ../glibc-2.3.5/configure –prefix=/usr/local/glibc235 –enable-add-ons=linuxthreads –enable-kernel=2.6.0 (若安装在/usr目录下,很危险,可能会损坏你的系统) make make check (必须执行的一步) make localedata /install-locales (对应各国文字) mkdir /usr/man/man3(man的安装路径) make –c ../glibc-2.3.5/linuxthreads/man install上面的安装完成以后,更好把/usr/local/glibc235/lib和/usr/local/glibc235/include加入到系统的路径中,这样在编译程序时,就不必指定库和header文件的路径了。

四、使用nptl进行线程编程

#include #include #include #include void thread_fun(void * arg); char message = “i am created thread”; int main() { int rnt; pthread_t new_thread; void *thread_result; rnt=pthread_create(&new_thread,null, thread_fun, (void*) message); if (rnt != 0) { perrer (“thread creation failed”); exit(exit_failure); } printf(“waiting for other thread to finish…”); rnt = pthread_join(new_thread, &thread_result); if (rnt != 0) { perrer (“thread join failed”); exit(exit_failure); } printf(“thread join, it returned %s ”, (char*) thread_result); printf(“message now %s”, message); exit(exit_success); } void *thread_fun (void * arg) { printf(“the new thread is running. argument was %s”,(char*)arg); sleep(3); strcpy(message, “bye”); pthread_exit(“thank you for the test”); }编译

gcc -d_reentrant test_thread.c -o test_thread -lpthread ./test_thread成功了。

was for linux的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于was for linux,Linux的招牌:was是什么?,升级Linux操作系统内核奋斗记的信息别忘了在本站进行查找喔。

香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。


linux的版本有哪些?

主流的Linux发行版Ubuntu, Debian GNU/Linux ,Fedora ,Gentoo ,MandrivaLinux ,PCLinuxOS,Slackware Linux ,openSUSE,ArchLinux,Puppylinux,Mint, CentOS,Red Hat等。 中国大陆的Linux发行版 中标麒麟Linux(原中标普华Linux), 红旗Linux(Red-flag Linux) ,Qomo Linux(原Everest),冲浪Linux(Xteam Linux) ,蓝点Linux ,新华Linux ,共创Linux ,百资Linux ,veket, Desktop ,Hiweed GNU/Linux ,Magic Linux ,Engineering Computing GNU/Linux ,kylin,中软Linux ,新华华镭Linux(RaysLX) ,CD Linux ,MC Linux ,即时Linux(Thizlinux) ,b2d linux ,IBOX ,MCLos ,FANX,酷博linux,新氧Linux,Hiweed,Deepin Linux,雨林木风YLMF OS。

unix和Linux有什么特殊之处?

很简单 linux是以unix为蓝图的基础上开发的 可以说是父子关系 同属开源软件

我想监视linux系统的内存使用情况,在linux下有哪些视图或者命令行工具可用

这方面的指令太多了,大体上整理一下12个吧。 1. /proc/meminfo查看RAM使用情况最简单的方法是通过 /proc/meminfo。 这个动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / top)等的组合显示。 /proc/meminfo列出了所有你想了解的内存的使用情况。 进程的内存使用信息也可以通过 /proc//statm 和 /proc//status 来查看。 2. atopatop命令是一个终端环境的监控命令。 它显示的是各种系统资源(CPU, memory, network, I/O, kernel)的综合,并且在高负载的情况下进行了彩色标注。 3、 freefree命令是一个快速查看内存使用情况的方法,它是对 /proc/meminfo 收集到的信息的一个概述。 4. GNOME System MonitorGNOME System Monitor 是一个显示最近一段时间内的CPU、内存、交换区及网络的使用情况的视图工具。 它还提供了一种查看CPU及内存使用情况的方法。 $ gnome-system-monitor5. htophtop命令显示了每个进程的内存实时使用率。 它提供了所有进程的常驻内存大小、程序总内存大小、共享库大小等的报告。 列表可以水平及垂直滚动。 6. KDE System Monitor功能同 4 中介绍的GENOME版本。 $ ksysguard7. memstatmemstat是一个有效识别 executable(s), process(es) and shared libraries使用虚拟内存情况的命令。 给定一个进程ID,memstat可以列出这个进程相关的可执行文件、数据和共享库。 8. nmonnmon是一个基于ncurses的系统基准测试工具,它可以监控CPU、内存、I/O、文件系统及网络资源等的互动模式。 对于内存的使用,它可以实时的显示 总/剩余内存、交换空间等信息。 9. psps命令可以实时的显示各个进程的内存使用情况。 Reported memory usage information includes %MEM (percent of physical memory used), VSZ (total amount of virtual memory used), and RSS (total amount of physical memory used)。 你可以使用 “–sort”选项对进程进行排序,例如按RSS进行排序:$ ps aux --sort -rss10. smemsmem命令允许你统计基于/proc信息的不同进程和用户的内存使用情况。 内存使用情况的分析可以导出图表(如条形图和饼图)。 $ sudo smem --pie name -c pss11. toptop命令提供了实时的运行中的程序的资源使用统计。 你可以根据内存的使用和大小来进行排序。 $ top12. vmstatvmstat命令显示实时的和平均的统计,覆盖CPU、内存、I/O等内容。 例如内存情况,不仅显示物理内存,也统计虚拟内存。 $ vmstat -s

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐