Linux系统编程入门指南
1. 系统编程概述
系统编程是编写系统软件的艺术,系统软件处于底层,直接与内核和核心系统库交互。像shell、文本编辑器、编译器、调试器、核心实用程序和系统守护进程等都属于系统软件,它们基于内核和C库。与之相对的是应用编程,虽然有些应用程序处于较高层级,很少涉及底层,但了解系统编程对所有程序员都有益。
近年来,应用编程有从系统级编程转向高级开发的趋势,如使用JavaScript、PHP、C#或Java等。但这并不意味着系统编程会消亡,因为像JavaScript解释器和C#运行时等仍需系统编程来实现。而且大多数Unix和Linux代码仍在系统级编写,常见的有Apache、bash、cp等应用。
系统编程通常涵盖内核开发和设备驱动编写,但这里主要关注用户空间的系统级编程,网络编程等大型主题则不在讨论范围内。系统编程在Linux中有三个基石:系统调用、C库和C编译器。
2. 系统调用
系统调用是用户空间向内核请求服务或资源的函数调用,从常见的read()和write()到一些特殊的如get_thread_area()和set_tid_address()等。Linux实现的系统调用比大多数其他操作系统内核要少,例如i386架构约有300个系统调用,而微软Windows据称有数千个。不同的机器架构实现的系统调用列表有所不同,但超过90%的系统调用是所有架构共有的。
2.1 系统调用的调用机制
由于安全和可靠性原因,用户空间应用不能直接与内核空间链接。用户空间应用需通过内核提供的机制“通知”内核要调用系统调用,不同架构的机制不同。以i386为例,用户空间应用执行软件中断指令in
超级会员免费看
订阅专栏 解锁全文
1932

被折叠的 条评论
为什么被折叠?



