Hello World的秘密,你知道吗?

企业动态
系统调用不同于普通的函数调用,是操作系统提供的接口,需要从用户态进入内核态才能完成,虽然没有发生进程的切换,但是在内核态依然要保存用户态的一些上下文,这样才能恢复用户态程序的运行。
[[285334]]

后记:系统调用不同于普通的函数调用,是操作系统提供的接口,需要从用户态进入内核态才能完成,虽然没有发生进程的切换,但是在内核态依然要保存用户态的一些上下文,这样才能恢复用户态程序的运行。C函数库在应用程序和操作系统之间起到了重要的桥梁作用,它不仅仅是像本文中的hello world那样做一个简单的中转,还可能会封装底层的系统调用,提供更高级的功能。比如存储空间的分配和回收,可以有很多算法(最佳适应,首次适应等), 但是Unix提供的系统调用是sbrk,只会按照字节数增加或减少进程地址空间,这对应用程序来说是不够的,这时候C函数库的封装函数malloc就可以发挥作用了。

文章中hello world的参数特别简单,放到寄存器中就可以了,如果参数特别多,就需要在内存中开辟一段区域,把参数放入其中,然后把这个区域的指针放入到寄存器中来传递。

【本文为51CTO专栏作者“刘欣”的原创稿件,转载请通过作者微信公众号coderising获取授权】

戳这里,看该作者更多好文

 

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2023-12-12 08:41:01

2022-03-10 08:25:27

JavaScrip变量作用域

2020-08-07 16:18:38

JavaScriptC++Python

2023-12-20 08:23:53

NIO组件非阻塞

2023-04-26 10:21:04

2019-01-07 13:01:08

Linux惊叹用法命令

2024-02-05 12:08:07

线程方式管理

2024-02-19 00:00:00

Docker轻量级容器

2023-02-28 07:39:18

2023-08-29 09:31:01

Scrapy网页爬虫

2016-11-22 15:43:13

机房制冷发展史

2024-01-01 08:25:53

ViewSurface框架

2017-10-16 13:45:04

2021-02-02 08:21:28

网络面试通信

2020-10-28 11:20:55

vue项目技

2022-06-24 08:20:04

CAP网络通信

2022-05-27 08:55:15

工具自动化软件

2024-01-09 07:29:05

Argo代码库应用程序

2021-12-08 07:31:40

Linux安全病毒

2021-02-20 08:21:18

Hive动态分区
点赞
收藏

51CTO技术栈公众号