Analyzing a decade of Linux system calls

The Linux kernel provides its services to the application layer using so-called system calls. All system calls combined form the Application Programming Interface (API) of the kernel. Hence, system calls provide us with a window into the development process and design decisions that are made for the...

Celý popis

Uloženo v:
Podrobná bibliografie
Vydáno v:2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE) s. 267
Hlavní autoři: Bagherzadeh, Mojtaba, Kahani, Nafiseh, Bezemer, Cor-Paul, Hassan, Ahmed E., Dingel, Juergen, Cordy, James R.
Médium: Konferenční příspěvek
Jazyk:angličtina
Vydáno: New York, NY, USA ACM 27.05.2018
Edice:ACM Conferences
Témata:
ISBN:9781450356381, 1450356389
ISSN:1558-1225
On-line přístup:Získat plný text
Tagy: Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
Abstract The Linux kernel provides its services to the application layer using so-called system calls. All system calls combined form the Application Programming Interface (API) of the kernel. Hence, system calls provide us with a window into the development process and design decisions that are made for the Linux kernel. Our paper [1] presents the result of an empirical study of the changes (8,770) that were made to the system calls during the last decade (i.e., from April 2005 to December 2014). The main contributions and most important findings of our study are: (1) An overview of the Linux system calls. As of December 2014, 396 system calls existed in the Linux kernel. They can be categorized into 10 groups (process management, signal processing, and so on). 76 of the system calls were added over the last decade (new system calls). A new system call is usually not activated for all architectures at the same time. 40 out of 76 (53%) new system calls and 102 of the 393 (26%) existing system calls were sibling calls. A sibling call is a system call that is similar in functionality, and often in name, to another system call. (2) A study of the evolution of the Linux system calls over the last decade in terms of the size and type of changes that were made to the system calls. With an average growth of 25 LOC per day, the Linux system calls are relatively stable. The commits that are made to system calls are slightly more scattered than kernel commits. There exists a small group of very active system call developers. 8,288 of the 8,770 studied commits (95%) were made to maintain, improve and fix bugs in system calls. 36% of the system call-related commits were bug fixes. 4,498 (50%) of the commits were made to only 25 (6%) of the 393 system calls. 35% of the system call-related commits were made to conduct code restructuring, and 36% of the system call-related commits were made to fix bugs. (3) A study of the type of bug fixes that were made to the system calls over the last decade. Developers make mistakes in the seemingly trivial activation process of a system call. The steps that are required to activate a system call, such as assigning the unique number and updating the system call table, are performed manually. 58% of the bug fix commits were made to fix semantic bugs. The proportion of bug fixes that fixed memory-related bugs remained constant throughout the last decade. (4) An analysis of the results and a discussion of their implications. Generalizability of results. We compared Linux system calls with FreeBSD system calls, to validate that our results are generalizable to other UNIX-based operating systems. Our findings for the FreeBSD operating system confirm that other UNIX-based operating systems use a system call mechanism that is similar to that of Linux. Therefore, we can safely assume that our findings are of value to other UNIX-based operating systems. Suggestion for automation. First, we suggest the automation of simple, reoccurring tasks in Linux, such as adding and removing system calls. Our study on FreeBSD shows that such tasks can successfully be automated. Second, we suggest that historical information about the evolution of a kernel API should be used to guide the testing process. Finally, we suggest that existing automated testing tools are extended to support testing system calls. Maintenance Effort. Compared to regular software systems, kernel APIs require an additional type of maintenance that involves adding and removing system calls. Also, approximately 11% of the maintenance effort of a kernel API is assigned to the infrastructure for providing the API. Overall, the results of our study can be beneficial to practitioners, researchers, and more specifically kernel developers, by providing insights related to the challenges and problems that come with long term maintenance of a kernel API, such as the long-lived Linux kernel API. We have published our classification of 8,870 system call-related changes [1] so that it can be used to conduct further studies. The full paper is accepted for publication in the Empirical Software Engineering journal, and can be found at: https://link.springer.com/article/10.1007/s10664-017-9551-z.
AbstractList The Linux kernel provides its services to the application layer using so-called system calls. All system calls combined form the Application Programming Interface (API) of the kernel. Hence, system calls provide us with a window into the development process and design decisions that are made for the Linux kernel. Our paper [1] presents the result of an empirical study of the changes (8,770) that were made to the system calls during the last decade (i.e., from April 2005 to December 2014). The main contributions and most important findings of our study are: (1) An overview of the Linux system calls. As of December 2014, 396 system calls existed in the Linux kernel. They can be categorized into 10 groups (process management, signal processing, and so on). 76 of the system calls were added over the last decade (new system calls). A new system call is usually not activated for all architectures at the same time. 40 out of 76 (53%) new system calls and 102 of the 393 (26%) existing system calls were sibling calls. A sibling call is a system call that is similar in functionality, and often in name, to another system call. (2) A study of the evolution of the Linux system calls over the last decade in terms of the size and type of changes that were made to the system calls. With an average growth of 25 LOC per day, the Linux system calls are relatively stable. The commits that are made to system calls are slightly more scattered than kernel commits. There exists a small group of very active system call developers. 8,288 of the 8,770 studied commits (95%) were made to maintain, improve and fix bugs in system calls. 36% of the system call-related commits were bug fixes. 4,498 (50%) of the commits were made to only 25 (6%) of the 393 system calls. 35% of the system call-related commits were made to conduct code restructuring, and 36% of the system call-related commits were made to fix bugs. (3) A study of the type of bug fixes that were made to the system calls over the last decade. Developers make mistakes in the seemingly trivial activation process of a system call. The steps that are required to activate a system call, such as assigning the unique number and updating the system call table, are performed manually. 58% of the bug fix commits were made to fix semantic bugs. The proportion of bug fixes that fixed memory-related bugs remained constant throughout the last decade. (4) An analysis of the results and a discussion of their implications. Generalizability of results. We compared Linux system calls with FreeBSD system calls, to validate that our results are generalizable to other UNIX-based operating systems. Our findings for the FreeBSD operating system confirm that other UNIX-based operating systems use a system call mechanism that is similar to that of Linux. Therefore, we can safely assume that our findings are of value to other UNIX-based operating systems. Suggestion for automation. First, we suggest the automation of simple, reoccurring tasks in Linux, such as adding and removing system calls. Our study on FreeBSD shows that such tasks can successfully be automated. Second, we suggest that historical information about the evolution of a kernel API should be used to guide the testing process. Finally, we suggest that existing automated testing tools are extended to support testing system calls. Maintenance Effort. Compared to regular software systems, kernel APIs require an additional type of maintenance that involves adding and removing system calls. Also, approximately 11% of the maintenance effort of a kernel API is assigned to the infrastructure for providing the API. Overall, the results of our study can be beneficial to practitioners, researchers, and more specifically kernel developers, by providing insights related to the challenges and problems that come with long term maintenance of a kernel API, such as the long-lived Linux kernel API. We have published our classification of 8,870 system call-related changes [1] so that it can be used to conduct further studies. The full paper is accepted for publication in the Empirical Software Engineering journal, and can be found at: https://link.springer.com/article/10.1007/s10664-017-9551-z.
Over the past 25 years, thousands of developers have contributed more than 18 million lines of code (LOC) to the Linux kernel. As the Linux kernel forms the central part of various operating systems that are used by millions of users, the kernel must be continuously adapted to the changing demands and expectations of these users. The Linux kernel provides its services to an application through system calls. The combined set of all system calls forms the essential Application Programming Interface (API) through which an application interacts with the kernel. In this paper, we conduct an empirical study of 8,770 changes that were made to Linux system calls during the last decade (i.e., from April 2005 to December 2014). In particular, we study the size of the changes, and we manually identify the type of changes and bug fixes that were made. Our analysis provides an overview of the evolution of the Linux system calls over the last decade. We find that there was a considerable amount of technical debt in the kernel, that was addressed by adding a number of sibling calls (i.e., 26% of all system calls). In addition, we find that by far, the ptrace() and signal handling system calls are the most challenging to maintain. Our study can be used by developers who want to improve the design and ensure the successful evolution of their own kernel APIs.
Author Kahani, Nafiseh
Dingel, Juergen
Bagherzadeh, Mojtaba
Hassan, Ahmed E.
Cordy, James R.
Bezemer, Cor-Paul
Author_xml – sequence: 1
  givenname: Mojtaba
  surname: Bagherzadeh
  fullname: Bagherzadeh, Mojtaba
  email: mojtaba@cs.queensu.ca
  organization: Queen's University, Kingston, Canada
– sequence: 2
  givenname: Nafiseh
  surname: Kahani
  fullname: Kahani, Nafiseh
  email: kahani@cs.queensu.ca
  organization: Queen's University, Kingston, Canada
– sequence: 3
  givenname: Cor-Paul
  surname: Bezemer
  fullname: Bezemer, Cor-Paul
  email: bezemer@cs.queensu.ca
  organization: Queen's University, Kingston, Canada
– sequence: 4
  givenname: Ahmed E.
  surname: Hassan
  fullname: Hassan, Ahmed E.
  email: ahmed@cs.queensu.ca
  organization: Queen's University, Kingston, Canada
– sequence: 5
  givenname: Juergen
  surname: Dingel
  fullname: Dingel, Juergen
  email: dingel@cs.queensu.ca
  organization: Queen's University, Kingston, Canada
– sequence: 6
  givenname: James R.
  surname: Cordy
  fullname: Cordy, James R.
  email: cordy@cs.queensu.ca
  organization: Queen's University, Kingston, Canada
BookMark eNqNkDtPwzAURs1LopTODCwZuyT4xo_cjlVVHlIklu7WrX2NAmmCapAov56gZmJiOsPR9w3nSpx3fcdC3IAsALS5U4ASjCkGlgbwRMwWFQ5CKmMVwqmYDBZzKEtz9sddillKr1LK0qJGsBMxX3bUHr6b7iWjLLCnwFkfs7rpPr-ydEgfvMs8tW26FheR2sSzkVOxuV9vVo95_fzwtFrWOS1Kk_sIXLKiquJotMZK2mB9II_sdbRoMTBWCq30JmpLnioIgbS2YQsKvJqK2-Ntw8zufd_saH9wqI2SaAZbHC35ndv2_VtyIN1vFTdWcWMVt903HIfB_J8D9QNqpV2A
CODEN IEEPAD
ContentType Conference Proceeding
Copyright 2018 Owner/Author
Copyright_xml – notice: 2018 Owner/Author
DBID 6IE
6IH
CBEJK
RIE
RIO
DOI 10.1145/3180155.3182518
DatabaseName IEEE Electronic Library (IEL) Conference Proceedings
IEEE Proceedings Order Plan (POP) 1998-present by volume
IEEE Xplore All Conference Proceedings
IEEE/IET Electronic Library (IEL) (UW System Shared)
IEEE Proceedings Order Plans (POP) 1998-present
DatabaseTitleList

Database_xml – sequence: 1
  dbid: RIE
  name: IEEE Electronic Library (IEL)
  url: https://ieeexplore.ieee.org/
  sourceTypes: Publisher
DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EISBN 9781450356381
1450356389
EISSN 1558-1225
EndPage 267
ExternalDocumentID 8453085
Genre orig-research
GroupedDBID 6IE
6IF
6IG
6IL
6IM
6IN
AAJGR
ABLEC
ABQGA
ACM
ADPZR
ALMA_UNASSIGNED_HOLDINGS
APO
BEFXN
BFFAM
BGNUA
BKEBE
BPEOZ
CBEJK
GUFHI
IEGSK
IJVOP
LHSKQ
OCL
RIB
RIC
RIE
RIL
RIO
-~X
.4S
.DC
123
23M
29O
5VS
6IH
6IK
8US
AAWTH
ADZIZ
AFFNX
ARCSS
AVWKF
CHZPO
EDO
FEDTE
I-F
I07
IPLJI
M43
RNS
XOL
ID FETCH-LOGICAL-a925-cf1e2e3a77ef5448706d6cdac8ec4f6868de873860c5f46aca71dda446db131c3
IEDL.DBID RIE
ISBN 9781450356381
1450356389
IngestDate Wed Aug 27 02:08:00 EDT 2025
Fri Sep 13 11:04:35 EDT 2024
IsPeerReviewed false
IsScholarly true
Keywords API evolution
system calls
linux kernel
software evolution
Language English
License Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for third-party components of this work must be honored. For all other uses, contact the Owner/Author.
LinkModel DirectLink
MeetingName ICSE '18: 40th International Conference on Software Engineering
MergedId FETCHMERGED-LOGICAL-a925-cf1e2e3a77ef5448706d6cdac8ec4f6868de873860c5f46aca71dda446db131c3
PageCount 1
ParticipantIDs ieee_primary_8453085
acm_books_10_1145_3180155_3182518
acm_books_10_1145_3180155_3182518_brief
PublicationCentury 2000
PublicationDate 20180527
2018-May
PublicationDateYYYYMMDD 2018-05-27
2018-05-01
PublicationDate_xml – month: 05
  year: 2018
  text: 20180527
  day: 27
PublicationDecade 2010
PublicationPlace New York, NY, USA
PublicationPlace_xml – name: New York, NY, USA
PublicationSeriesTitle ACM Conferences
PublicationTitle 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)
PublicationTitleAbbrev ICSE
PublicationYear 2018
Publisher ACM
Publisher_xml – name: ACM
SSID ssj0002684816
ssj0006499
Score 2.0279386
Snippet The Linux kernel provides its services to the application layer using so-called system calls. All system calls combined form the Application Programming...
Over the past 25 years, thousands of developers have contributed more than 18 million lines of code (LOC) to the Linux kernel. As the Linux kernel forms the...
SourceID ieee
acm
SourceType Publisher
StartPage 267
SubjectTerms API evolution
Computer bugs
Kernel
Linux
Linux kernel
Maintenance engineering
Software engineering
Software evolution
System calls
Testing
Title Analyzing a decade of Linux system calls
URI https://ieeexplore.ieee.org/document/8453085
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
link http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlZ3PS8MwFMcf2_Dgaeomzl9EELxYt7T51fN0eBo77DAQKVnyAoO5yX6I-NebtHEiCOKtlLaUR9J8Xvq-3wdwnaHxVJFjQh2dJgzzaaK1lglzNk2VZR6Sq2YTcjhUk0k-qsHtTguDiGXxGd6Fw_Jfvl2abdgq6yrGM48IdahLKSqt1m4_JbiWqIA68SssPMpHKx_KeNcP3UAHPkUNWs3SV9W8_OioUi4og-b_XuUA2t_KPDLarTmHUMPFETS_WjOQOFNboJ4iaZLBzPPdMynNRz78PUSTewxF8WTpiM9Et--kci0nfT2fr9swHjyM-49JbJKQ6DzliXEUU8y0lOi4T7VkT1hhrDYKDXNCCWVRhcaePcMdE9poSa3VPgm0U5pRkx1DY7Fc4AkQDNZvmpuUacl6zOXcOuaBI9fMZlS4Dlz5mBUB_tdFpWfmRYxrEePagZs_rymmqxn6p7VCVIvXylSjiAE9_f30Gex7UlFVpeE5NDarLV7AnnnbzNary3IkfAIuwq0s
linkProvider IEEE
linkToHtml http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlZ1dS8MwFIYPcwp6NXUT52cEwRvrljZp0-vpmDjHLnYxEClZcgKDuck-RPz1Jm2cCIJ4V0pbykvaPCc55z0AlxEqSxUpBtTQUcAwHQVSyiRgRoeh0MxCctFsIun1xHCY9ktwva6FQcQ8-Qxv3GG-l69nauWWyhqC8cgiwgZscsbCZlGttV5Rcb4lwsGO_w_HFua9mQ9lvGEHr-MDG6S6as3cWVW9_Oipkk8p7cr_XmYXat-1eaS_nnX2oITTfah8NWcg_lutgnjyrEnaY0t4zyS3H_mw9xBJbtGlxZOZITYWXb2TwrectORksqjBoH03aHUC3yYhkGnIA2UohhjJJEFjZXH7ljpWWiqBiplYxEKjcK09m4obFkslE6q1tGGgHtGIqugAytPZFA-BoDN_k1yFTCasyUzKtWEWOVLJdERjU4cLq1nm8H-RFRXNPPO6Zl7XOlz9eU02mo_RPq3qVM1eC1uNzAt69Pvpc9juDB67Wfe-93AMO5ZbRJF3eALl5XyFp7Cl3pbjxfwsHxWfZYOwcw
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=proceeding&rft.title=2018+IEEE%2FACM+40th+International+Conference+on+Software+Engineering+%28ICSE%29&rft.atitle=%5BJournal+First%5D+Analyzing+a+Decade+of+Linux+System+Calls&rft.au=Bagherzadeh%2C+Mojtaba&rft.au=Kahani%2C+Nafiseh&rft.au=Bezemer%2C+Cor-Paul&rft.au=Hassan%2C+Ahmed+E.&rft.date=2018-05-01&rft.pub=ACM&rft.eissn=1558-1225&rft.spage=267&rft.epage=267&rft_id=info:doi/10.1145%2F3180155.3182518&rft.externalDocID=8453085
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=9781450356381/lc.gif&client=summon&freeimage=true
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=9781450356381/mc.gif&client=summon&freeimage=true
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=9781450356381/sc.gif&client=summon&freeimage=true