Menü

Kernel-Log: Mehr als 10 Millionen Zeilen in den Linux-Quellen

Von
vorlesen Drucken Kommentare lesen 321 Beiträge

Kernel-Log-Logo

Nach der Freigabe von Linux 2.6.27 integrieren die Kernel-Entwickler derzeit fleißig Patches für die nächste Kernel-Version in den Hauptentwicklungszweig von Linux. Wie üblich fliegt dabei ein wenig alter Code raus und neuer kommt hinzu – unterm Strich sind es aber meist mehr neue als alte Zeilen, wodurch der Kernel stetig wächst.

Bei diesem Prozess haben die Kernel-Entwickler nun die Marke von 10 Millionen Zeilen Text durchbrochen, sofern man denn alle Leerzeilen, Kommentare und Textdateien im Quellcode eines aktuelle Git-Checkouts von Linux mitzählt (find . -type f -not -regex '\./\.git.*' | xargs cat | wc -l). Feiern kann man aber auch, wenn man nur die Zeilen Text in Dateien mit Quellcode zählt, denn die belaufen sich seit kurzem auf mehr als 9 Millionen Zeilen Text (find . -name *.[hcS] -not -regex '\./\.git.*' | xargs cat | wc -l).

Mit Programmen wie SLOCCount lässt sich der Quellcode des Linux-Kernels genauer unter die Lupe nehmen. So sind es laut dem Tool nicht mehr als 9 Millionen Zeilen Quellcode, sondern exakt 6.399.191 (Source Lines of Code/SLOC), da das Programm Leerzeilen, Kommentare und einigen andere Dinge in Quellcodedateien nicht in die Berechnung mit einbezieht. Bei mehr als der Hälfte der Codezeilen handelt es sich um Hardware-Treiber; der zweitgrößte Brocken ist das Verzeichnis arch/, indem sich der Quellcode für die verschiedenen von Linux unterstützten Architekturen findet.

SLOC	Directory	SLOC-by-Language (Sorted)
3301081 drivers 	ansic=3296641,yacc=1680,asm=1136,perl=829,lex=778,
			sh=17
1258638 arch		ansic=1047549,asm=209655,sh=617,yacc=307,lex=300,
			awk=96,python=45,pascal=41,perl=28
544871	fs		ansic=544871
376716	net		ansic=376716
356180	sound		ansic=355997,asm=183
320078	include 	ansic=318367,cpp=1511,asm=125,pascal=75
74503	kernel		ansic=74198,perl=305
36312	mm		ansic=36312
32729	crypto		ansic=32729
25303	security	ansic=25303
24111	scripts 	ansic=14424,perl=4653,cpp=1791,sh=1155,yacc=967,
			lex=742,python=379
17065	lib		ansic=17065
10723	block		ansic=10723
7616	Documentation	ansic=5615,sh=926,perl=857,lisp=218
5227	ipc		ansic=5227
2622	virt		ansic=2622
2287	init		ansic=2287
1803	firmware	asm=1598,ansic=205
833	samples 	ansic=833
493	usr		ansic=491,asm=2
0	top_dir 	(none)

96,4 Prozent des Codes sind laut SLOCCount in C geschrieben, 3,3 Prozent in Assembler. Alle anderen Programmiersprachen führen ein Nischendasein: Das für einige Hilfsscripte beim Bauen eines Kernels genutzte Perl etwa schafft es auf magere 0,1 Prozent. Im Assembler-lastigen Architektur-Verzeichnis will SLOCCount zudem 41 Zeilen Pascal-Code gefunden haben – dabei dürfte es sich wohl um eine Fehlerkennung handeln.

Totals grouped by language (dominant language first):
ansic:	    6168175 (96.39%)
asm:	     212699 (3.32%)
perl:	       6672 (0.10%)
cpp:	       3302 (0.05%)
yacc:	       2954 (0.05%)
sh:	       2715 (0.04%)
lex:	       1820 (0.03%)
python: 	424 (0.01%)
lisp:		218 (0.00%)
pascal: 	116 (0.00%)
awk:		 96 (0.00%)

SLOCCount versucht sich auch an einer groben Berechnung des Quellcodewertes; demnach würde es mit etwas mehr als 200 Entwicklern ungefähr neuneinhalb Jahre dauern und 267 Millionen US-Dollar kosten, den Code komplett neu zu schreiben. Man kann aber sicherlich darüber streiten, wie exakt diese Kalkulation des seit vier Jahren nicht mehr aktualisierten Programms ist; speziell die angegebenen Kosten pro Entwickler müsste man mittlerweile sicherlich höher ansetzen.

Total Physical Source Lines of Code (SLOC)		  = 6,399,191
Development Effort Estimate, Person-Years (Person-Months) = 1,983.63
(23,803.60)
 (Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months)			  = 9.59 (115.10)
 (Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule)  = 206.81
Total Estimated Cost to Develop 			  = $ 267,961,839
 (average salary = $56,286/year, overhead = 2.40).

SLOCCount, Copyright (C) 2001-2004 David A. Wheeler SLOCCount is Open Source Software/Free Software, licensed under the GNU GPL. SLOCCount comes with ABSOLUTELY NO WARRANTY, and you are welcome to redistribute it under certain conditions as specified by the GNU GPL license; see the documentation for details. Please credit this data as "generated using David A. Wheeler's 'SLOCCount'."

Ein Ende des Wachstums in der mittlerweile nun schon seit einigen Jahren stetig innerhalb der Linux-2.6-Serie weiterentwickelten Kernels ist indes nicht abzusehen – mit jeder neuen Version erweitern die Kernel-Hacker den Linux-Kernel wieder um neue Funktionen und Treiber, was die Hardware-Unterstützung verbessert oder Linux flexibler, besser oder schneller macht. Ein Blick auf einige Zahlen zu den jüngsten Kernel-Versionen zeigt zudem, dass nicht nur die Zahl der Zeilen Quellcode nach und nach steigt, sondern auch die Zahl der pro Kernel-Version vorgenommenen Änderungen weiter wächst.


Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich auch in den vorangegangen Ausgaben des Kernel-Logs auf heise open:

Ältere Kernel-Logs finden sich über das Archiv oder die Suchfunktion von heise open.

Anzeige
Anzeige