后记:系统调用不同于普通的函数调用,是操作系统提供的接口,需要从用户态进入内核态才能完成,虽然没有发生进程的切换,但是在内核态依然要保存用户态的一些上下文,这样才能恢复用户态程序的运行。C函数库在应用程序和操作系统之间起到了重要的桥梁作用,它不仅仅是像本文中的hello world那样做一个简单的中转,还可能会封装底层的系统调用,提供更高级的功能。比如存储空间的分配和回收,可以有很多算法(最佳适应,首次适应等), 但是Unix提供的系统调用是sbrk,只会按照字节数增加或减少进程地址空间,这对应用程序来说是不够的,这时候C函数库的封装函数malloc就可以发挥作用了。
文章中hello world的参数特别简单,放到寄存器中就可以了,如果参数特别多,就需要在内存中开辟一段区域,把参数放入其中,然后把这个区域的指针放入到寄存器中来传递。
在公众号回复关键字“漫画”,即可看到漫画全集
相关漫画
领取专属 10元无门槛券
私享最新 技术干货